《武汉工程大学学报》  2012年05期 60-63   出版日期:2012-05-31   ISSN:1674-2869   CN:42-1779/TQ
分布式环境实时语音通讯系统的设计与实现


0引 言  随着多媒体技术和网络技术的飞速发展,基于软件化的手段可实现分布式环境下多点间的语音通信[1-2].但在大型模拟器系统中,不同位置的训练员和指挥员间的语音通信通常采用专用硬件设备的方法,不仅增加了系统的设计费用、复杂度和维护的难度,更增加了系统的硬件组成和布局难度,尤其对于空间有限的模拟训练系统,其缺点更为突出.针对该问题,笔者综合运用声音处理和网络通信技术,基于客户机/服务器(Client/Server,以下简称:C/S)的架构构建了一套语音通信系统,利用微软推出的DirectX提供的与网络音频应用相关的系统开发工具包(System Develop Kit,简称:SDK)实现仿真模拟系统操作人员之间的语音捕捉与回放,利用网络通信技术实现了语音的打包、传输与解包,同时, 针对冗余的语音数据将造成网络负担的问题,采用离散傅里叶变换(Discrete Fourier Transform,以下简称:DFT)算法在频域上对语音数据进行了过滤.该方法以软件化的手段替代了传统模拟器中复杂的硬件设计,在实际工程项目中取得了较好的效果.1系统设计1.1系统结构  网络语音通讯系统结构如图1所示,系统采用C/S架构,使用了一个高效的服务器程序,运行在一台具有独立IP地址的计算机上,用来发送并接收语音数据和与客户端进行交互的控制信息,维护客户端信息及客户端连接信息等功能.客户端程序主要实现语音数据的录取、 过滤和压缩,发送和接收与服务器交互的控制信令和音频编码数图 1 系统结构
Fig.1Structure of system据,解压语音数据并进行播放.服务器和客户端之间所有的控制信息均采用TCP/IP协议传输[3-4].  每一个客户端独立完成语音数据的采集,并对语音数据进行过滤和压缩,然后将数据发往服务器端并经服务器转发给其他客户端.同时客户服务端接收来自服务器的语音数据,经过解压后播放.1.2声音的捕捉和回放  Microsoft DirectX软件中的DirectSound提供了一个系统捕捉来自输入设备的声音和播放那些贯穿各种各样的使用先进的3\|D位置特效的回放设备的声音,并且过滤回声、扭曲、反射和其它特效.其优点是速度快、延时短、可控制性强.
第5期司聿宣,等:分布式环境实时语音通讯系统的设计与实现
武汉工程大学学报第34卷
1.2.1声音的捕捉DirectSound允许从输入到声卡的设备捕获声音,数据可被捕获为脉冲编码调制或压缩格式,为了立即回放或在文件里存储,DirectSound提供创建声音捕捉对象IDirectSoundCapture的COM接口,通过捕捉对象设置录音的格式、建立用来捕捉声音样本的缓冲区对象IDirectSoundCaptureBuffer、设定声音捕捉长度响应事件IDirectSoundNotify.在录音缓冲区中充满设定长度的数据后,IDirectSoundNotify事件响应,这时可以锁定缓冲区并对缓冲区内捕获的声音进行拷贝.声音捕捉流程如图2中(a)所示.
1.2.2声音的回放DirectSound提供建立IDirectSoundBuffer对象的COM接口并设置Buffer的大小及播放声音的格式.为了实现音频的连续播放,IDirectSoundBuffer使用多个次缓冲区,通过设定播放声音长度的响应事件,在每一个次缓冲区均设置一个通知点,每当一个缓冲区的内容播放完后,DirectSound一方面激活Notify机制通知填充缓冲区数据,另一方面同时无间隙播放下一个缓冲区数据,实现音频的连续播放.声音回放流程如图2中(b)所示.图2声音捕捉和回放
Fig.2Catch and replay2 基于DFT的声音过滤  语音通讯的目的是为了传递说话人的信息,但在实际的语音交谈中,有很多时间内可能没有人在说话,此时传输的语音数据只是没有意义的环境音.为了减少系统的网络负担,需要对录取的语音数据进行过滤,避免将只有环境噪音的数据传到网络.2.1语音信号DFT变换 由于计算机只能处理有限长度的信号,因此对原始语音信号x(t)要以一定的采样周期T进行截断,即有限化,然后对采样信号x(n)(n=0,1,2,…,N-1)做进一步处理.信号的有限化也称加窗处理,当窗函数在边缘处将信号突然截断,窗外时域信息全部消失.将长序列截短变成有限长度的短序列会出现频率分辨率问题和频谱泄漏问题.频率分辨率问题是由于频谱主瓣过宽、边瓣过大造成的,频谱泄漏是由于边瓣的影响造成的.为了解决这些问题,一般要对信号进行加窗处理,使信号截断的锐角钝化,从而使频谱的扩散减到最小. 经过处理,语音信号就已经被分割成一帧一帧的加过窗函数的短时信号,然后再把每一个短时语音帧看成平稳的随机信号,利用数字信号处理技术来提取语音特征参数.在进行处理时,按帧从数据区中取出数据,处理完后再取下一帧.最后得到由每一帧参数组成的语音特征参数的时间序列. 对一帧时间内的语音信号进行DFT变换为[5-7]:X(k)=∑N-1n=0x(n)W(n)e-j2πnk/N(k=0,1,2,…,N-1) (1)
式中W(n)为矩形窗,N为采样点数.|X(k)|便是x(n)的短时幅度谱估计.把k当作频率变量,20 log10|X(k)|就是以分贝表示的频谱.为了提高计算|X(k)|的速度,可以采用快速傅里叶变换.这要求N是2的整数次幂,如果N不满足要求,可以在数据x(n)后补零.2.2信号过滤  加窗的信号段经过DFT变换后,|X(k)|2表示信号在频率点k/TN处的功率值,令:Pave=2N∑N/2-1k=0|X(k)|2(2)
为N/2频率采样点的平均功率,则各个频点功率偏离均值的绝对值之和为:Pσ=∑N/2-1k=0||X(k)|2-Pave|(3) 通常电话语音的频率在60~3 400Hz,这个频率之外的声音会被滤除.因此,可以认为频率不在60~3 400 Hz之间的信号为语音通讯系统的噪音.在计算Pave、Pσ时不用计算这些频点. 在一个特定的环境中,环境噪声的Pσ上限值设定为PNMax,当Pσ>PNMax时可以判定有语音信号.2.3仿真结果  在实验室录制一段长度为1.6 s的单通道语音段,信号采样频率为8 000 Hz,每个采样点的信号幅度用8比特表示.将这段数据分为50帧,每帧数据长度为256个采样点,其时域波形如图3中(a)所示,方框内1和2中的波形为两个频率分别为30 Hz和3 700 Hz的信号和环境噪声的叠加;计算每帧采样数据的Pσ,结果仿真如图3中(b)所示;设置语音信号频率范围60~4 000 Hz,过滤后的Pσ结果仿真如图3中(c)所示.根据对环境噪声的采样计算,估计PNMax=30,利用式Pσ>PNMax,过滤后的信号波形如图3中(d)所示.图3声音过滤仿真
Fig.3Simulation of audio filter3结语  笔者采用网络语音通信技术,利用DirectSound对声音进行采集和回放,设计了网络语音通讯软件,用以取代在以往仿真系统中使用硬件实现语音通讯的方法.同时,采用离散傅里叶变换对语音信号的频谱进行分析,利用语音信号的频谱特征对通信过程中的无用信号帧进行过滤,只将满足判定条件的信号帧送往服务器进行转发,从而有效减小了仿真系统中网络的数据传输负担.该软件已在某训练模拟器中得到很好的应用,满足训练员通话的需求.