微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式网络终端的语音传输系统设计

嵌入式网络终端的语音传输系统设计

时间:02-13 来源:互联网 点击:

用户打开终端软件,可以根据自己的需要选择语音聊天、文本聊天或者收发邮件。进行语音聊天前,用户可以直接在好友栏中选择聊天对象,也可直接输入对方的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所示。

图5 从音频编解码器中获取数据流程

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系统终端软件,实现了网络终端间的语音通信。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top