当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式网络终端的语音传输系统设计


摘要:根据嵌入式网络终端的特点及VOIP技术原理,设计了一款基于WinCE的嵌入式语音传输系统。此系统实现了嵌入式网络终端之间的语音通信,以及网络终端和PC机之间的语音通信功能,具有较强的可扩展性。
关键词:嵌入式网络终端;语音;VOIP;WinCE

引言
    嵌入式系统因其满足系统对功能、可靠性、成本、体积、功耗的要求,已经被广泛地应用在交通、商业/金融、工业控制、医疗等各个领域。目前,嵌入式网络应用技术已经成为了国际研究的热点技术,许多IT行业的公司也都在研发相应的嵌入式网络终端。
    电话是人们最常使用的交流工具,随着互联网的迅速发展,基于IP网络的语音通信成为了人们研究的热点。传统电话的语音传输质量和可靠性都很好,但资费较高,特别是打国际长途时;而基于IP网络的语音通信由于是在Internet上传输信号,大大节省了通信线路的成本,从而降低了VOIP资费,使其拥有了巨大的市场潜力。
    目前,VOIP系统现有的终端软件,如Skype网络电话、UUCall网络电话、KC网络电话、Mierosoft公司的Netmeeting等,都是基于PC机的,难以运行在嵌入式网络终端这种资源有限的设备上。同时,许多类库中的函数在PC机上可以正常运行,而WinCE嵌入式操作系统却不支持,因此不能直接对VOIP系统现有的终端软件进行简单的裁剪。

1 嵌入式网络终端的硬件设计
1.1 系统硬件结构
    如图1所示,系统由嵌入式网络终端、电源模块、以太网口模块、串口和USB接口模块、显示模块(触摸屏)、语音采集和播放模块、外部数据存储模块以及系统工作状态指示和接口模块构成。其中,嵌入式网络终端采用三星公司专门针对手持设备而设计的S3C2440A-40微处理器。


1.2 语音采集和播放模块
    语音采集和播放模块的作用是将音频模拟信号转换为数字信号,并对信号进行PCM编码。其电路如图2所示。采用Philips公司的UDA1341 TS型立体声音频CODEC进行音频编解码。该芯片提供2个麦克风输入,可实现单端输入、差分输入等灵活配置,并设置了可编程增益放大器和自动增益控制器,可保证高质量的音频获取;同时,还集成了听筒和喇叭输出的驱动器,喇叭音量可以通过编程调整。S3C2440A-40微处理器与UDA1341TS编解码器通过I2S总线直接相连,并采用DMA发送/接收方式,完成系统的录音和放音。


1.3 嵌入式操作系统
    嵌入式操作系统采用了微软公司研发的WinCE。它是一款功能强大的32位嵌入式实时操作系统,具有多线程、多任务、完全抢占式的特点,是专为各种受到严格资源限制的硬件系统所设计的。WinCE支持多种硬件外围设备,同时内置的标准通信能力使WinCE能够访问Internet并收发E-mail或浏览Web。除此之外,WinCE特有的与Windows类似的用户界面使最终用户易于使用。

2 VOIP技术
2.1 VOIP的基本原理
    VOIP(Voice Over Internet Protocol)是以IP分组交换网络为传输平台,通过语音压缩算法对语音数据进行压缩编码处理,然后把这些语音数据按IP等相关协议进行打包,经过IP网络把数据包传输到接收地,再把这些语音数据包串起来,经过解码解压处理后恢复成原来的语音信号,从而达到由IP网络传送语音的目的。其特点是可以将一路语音数据压缩为8 kb/s甚至更低,同时可使用户不需要独占医疗线路资源,从而提高了线路利用率,并大大降低了资费成本。
2.2 VOIP协议
    VOIP技术中最主要的两种呼叫控制协议为H.323协议和SIP协议。H.323是ITU的一个标准协议簇,制定了无服务质量保证的分组网络(PBN)上的多媒体通信系统标准,已在VOIP领域的到了广泛的应用,呼叫建立比较复杂。SIP协议是由IETF(国际互联网标准制定组织)制定的面向Internet会议和电话的信令协议,参照了HTTP和SMTP协议,呼叫控制在终端完成,呼叫建立相对简单。
2.3 语音压缩编码技术
    语音压缩编码技术是VOIP技术的核心,其目的就是在保证语音音质和可懂的条件下,采用尽可能少的比特数来表示语音。常用的语音编码方式有G.723.1、G.729、G.729A等,其中G.729可将采样为64 kb/s的话音以几乎不失真的质量压缩至8kb/s。本设计采用了G.729方式的语音压缩算法,结合实时传输协议RTP和UDP网络传输技术来实现语音传输。

[!--empirenews.page--]

3 系统设计
3.1 终端软件的功能模块
    终端软件功能模块如图3所示。此终端软件可为用户提供良好的交互界面。


3.2 VOIP终端软件主流程
    用户打开终端软件,可以根据自己的需要选择语音聊天、文本聊天或者收发邮件。进行语音聊天前,用户可以直接在好友栏中选择聊天对象,也可直接输入对方的IP进行连接。语音聊天的过程是:说话方,麦克风采集模拟语音信号→语音芯片采集量化编码→嵌入式系统对信号进行压缩编码→RTP格式打包→UDP格式打包→IP格式打包→Internet网络传输;收听方,接收语音数据→去IP/UDP/RTP包头→嵌入式系统对信号解码→语音芯片将数字语音信号转为模拟信号→扬声器播放。

4 系统实现
4.1 语音采集和播放
    语音信号的采集分为从网络上采集数据和从音频编解码器中获取数据。主要函数包括:语音采集函数VoiceCapture(),用线程控制语音采集函数Thread Voice Capture(),创建用于播放的音频设备对象函数Play Device(),创建音频捕捉设备对象函数Caputer Device(),创建音频捕捉缓冲区对象函数Capture Buffer(),创建辅助缓冲区函数Secondary Buffer(),音频格式设置函数Set Wave Format(),通知事件触发函数Notification(),停止语音采集函数Voice Stop(),从字节数组中获取音频数据并进行播放函数Get VoiceData()以及语音采集初始化函数Initialize Voiee()。
4.1.1 Get Voice Data()函数
    具体流程如图4所示。从网络上获取的数据实际是由Local Socket.Begin Receive From()函数提取网络数据,再经接收数据函数转移给Get Voice Data()函数,Get Voice Data()函数提取后放入语音缓冲区供音频编解码器提取并播放。Get Voice Data()函数首先用支持存储区为内存的流Memory Stream从缓冲区读取数据byte Receive,将字节块写入当前流:
    Memory Stream.Write(byte Receive,0,intReceive)


    当流中存储的数据达到一定数据量时就播放语音:SecondaryBuffer.Write(0,Memory Stream,int Postion Write-in-tPostioPlay,LockFlag.From Write Cursor)Secondary Buffer.Play(0,Buffer Play Flags.Default)
4.1.2 采集音频编码器语音数据
    从音频编解码器中获取数据时,首先通过UDA1341TS采集语音信号放入语音捕捉缓存区,应用程序再从语音捕捉缓冲获取语音信号并发送。具体程序流程如图5所示。

[!--empirenews.page--]


4.2 语音传输
    语音传输是主要包含监听函数Listen(),数据发送函数SendVoice(),数据接收函数Receive Data(),绑定自己IP和端口函数BindSelf(),远程终端IP端口设置函数SetRemoteIPEnd()、线程关闭函数ThreadStop()函数和初始化函数InitVoice()。
4.2.1 监听函数
    监听函数负责监听远程计算机发送到本机的信息。每隔一定时间查询一下网络,如果有可读的数据就接收:LocalSocket.BeginRecei-veFrom(byteData,0,byteData.Length,SocketFlags.None,ref endPoint,new AsyncCallback(ReceiveData),null)并且将此线程设置为后台线程,以便当主线程关闭时,此线程能自动结束。
4.2.2 数据发送函数
    数据发送函数的作用是将语音捕捉缓冲区的数据通过Client.SendTo(CaptureData,EndPoint)函数发送到网络上。当线程发现有数据要读取(即线程被触发)时,就会循环调用数据发送函数,直到没有可读的数据为止。CaptureBuffer为语音捕捉缓冲区对象。数据发送流程如图6所示。


4.2.3 数据接收函数
    数据接收函数的功能主要是调用GetVoiceData()函数从网络中接收语音数据并放入缓冲区。代码如下:



结语
    以Internet为标志的嵌入式系统是嵌入式系统发展的第四阶段。本文在基于ARM+网卡芯片+UDA1341TS音频编解码芯片模式的硬件平台实现与网络资源的对接及语音采集和播放的基础上,开发了基于WinCE嵌入式操作系统的VOIP系统终端软件,实现了网络终端间的语音通信。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚...

关键字: 系统设计 技术选型 需求分析

(全球TMT2022年8月30日讯)近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部件的最...

关键字: 系统设计 英特尔 数据中心 生态系统

北京2022年8月30日 /美通社/ -- 近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部...

关键字: 系统设计 英特尔 数据中心 电量

摘要:近年来,受人类活动的影响,各大水域的水质污染问题越来越严重,大部分水资源受到严重污染,水质处理问题亟需解决。分析水体污染情况对改进水质有着重要意义,目前水质监测主要采用人工或无人船的方式。人工监测方式工作量大,影响...

关键字: 水质监测 无人机 系统设计

摘要:根据饶平县高堂水闸重建工程建设实际需求,对高堂水闸运行管理进行实时在线式监控与监测,通过闸门控制、视频监控、水情测报、安全监测和网络通信等系统的设计,为高堂水闸的水工建筑物安全、防洪调度和自动化管理提供技术支持,以...

关键字: 管理信息系统 水利工程 系统设计

湖州2022年7月26日 /美通社/ -- 近日,浙江省科技创新大会在浙江省人民大会堂隆重举行。大会正式颁布2021年度浙江省科学技术进步奖,隆重表彰为浙江科技创新事业和经济社会发展做出突出贡献的科技工作者及团队。...

关键字: 电梯 检测技术 系统设计 零部件

摘要:简要介绍了柴油发电机组和重油发电机组的构成和主要特点,以某发电厂重柴油发电机组系统设计为例,重点分析了重油发电机组燃油系统、润滑油系统、循环冷却水系统、压缩空气系统的设计要点,以提高柴油、重油发电机组的运行效率和运...

关键字: 重油发电机组 特性 系统设计

摘要:针对一种小型消费级水下机器人,分析了其系统总体设计及各关键子系统(推进系统、通信系统、控制系统及其他系统等)设计的要点和方法,举例介绍了一种五推进器小型消费级水下机器人。经验证,该设计方法可以用于同类型水下机器人的...

关键字: 推进器 系统设计 五推进器

提供全面高效的电源管理建模,适用于汽车和工业应用领域 加州山景城2022年5月24日 /美通社/ -- 新思科技(纳斯达克股票代码:SNPS)和Analog Devices, Inc. 近日宣布达成合作,通过...

关键字: ADI 电源系统 系统设计 新思科技

摘要:PLC以其体积小、占用空间小、辅助设施投入少、工作可靠和维修简单等优点,被广泛应用于各个领域。现介绍了一款可对铁、铝及颜色进行材料分拣的装置,分析了该分拣装置的总体结构设计、硬件设计和软件系统设计要点。该分拣装置成...

关键字: 自动分拣 PLC 系统设计

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭