电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章音响功放基于Internet的语音交互系统的设计和实现

基于Internet的语音交互系统的设计和实现

08-17 11:53:49 | http://www.5idzw.com | 音响功放 | 人气:289
标签:汽车音响功放,音响功放电路,http://www.5idzw.com 基于Internet的语音交互系统的设计和实现,http://www.5idzw.com
描述了实现Internet语音交互系统的关键技术,即利用Windows的多任务机制,结合Windows MDK低层音频服务、Windows Sockets和语音压缩等技术,实现了PCto PC的实时通话。<--摘要CH(结束)←-->
<--→关键CH(开始)-->     关键词:VoIP,IP电话,语音压缩
<--关键CH(结束)←--><--→摘要EN(开始)-->  
<--关键EN(结束)←-->1引言
  Internet在全球范围内呈爆炸性增长的趋势,使全社会很快融入到信息浪潮中,它的主要业务已由传统的文件传输、电子邮件和远程登录等基本服务转向以VoIP为代表的多媒体服务。VoIP(VoiceOver IP)是指将模拟的语音信号数字化,进行分段压缩后按照一定的规律加上IP地址头,经IP网络路由或交换至目的地址后,IP包再经相反过程还原成语音信号。VoIP涉及到的技术比较繁杂,其中尤以包括分组语音技术、语音编码及压缩技术在内的几种技术的发展最为关键。
2系统概况
  本系统是基于Visual C++和InternetProtocol,在Windows平台上开发的,它利用现有的全双工声卡和Internet网络,来实现PCto PC的通话,整个系统可以分为几个部分,首先,对音频设备(声卡)的模拟语音信号进行采集,经过A/D(模数)转换为数字化语音包;然后,采用一定编码压缩技术对语音数据包进行压缩;第三,按一定的打包规则将压缩帧转换成IP数据包通过数据网络进行传输;第四,在目的地经过数据解压;第五,再把语音数据包写入到音频设备驱动程序;最后,D/A(数模)转换复原成话音就实现播放,从而达到语音通信的目的。整个过程见图1。

3系统实现
3.1语音处理
  语音数据处理的整个过程可以分成两个部分:A/D转换,即把原始声音的模拟输入转化为数字化信息;D/A转换,即把数字信息转化为模拟数据。在通话过程中,跟用户最直接打交道的是说和听,所以,语音数据处理的好坏直接影响了系统实现的成败。
  本系统是要把语音直接转换为数据,放在内存中,而不是存为语音文件,而且播放语音时,也是直接播放语音数据,而不是播放语音文件。这样的好处是省略了读写硬盘的费时操作,提高了语音通话的实时性。要完成上述语音操作,编程语言中提供的容易使用的高级多媒体语音函数是无法胜任的,只能通过Windows MDK(Multimedia DevelopmentKit)中的多媒体低层音频服务来实现,这一类函数和结构的名字一般都以“wave”作为前缀。Windows下录制或播放音频数据,其主要操作就是将音频数据读出到音频设备驱动程序和从音频设备驱动程序写入的操作。低层波形音频函数通过WAVEHDR结构的音频数据块对设备驱动程序的音频数据进行上述控制。以录音为例,其准备工作主要有几点,打开录音设备,获得录音句柄,指定录音格式,分配若干用于录音的内存。开始录音时,先将所有内存块都提供给录音设备用来录音,录音设备就会依次将语音数据写入内存,当一块内存写满,录音设备就会发一个Window消息MM WIM DATA给相应的窗口,通知程序作相关的处理,这时程序通常的处理是把内存中的数据进行复制,如写入文件等,在此我们的处理是把数据进行压缩和网络发送,然后把内存置空,返还给录音设备进行录音,这样就形成一个循环不息的录音过程。结束录音时就释放所有内存块,关闭录音设备。关键的录音函数和顺序如下:



  开发人员可以充分利用Windows操作系统的多任务机制,在原始声音进行采样的同时对采样数据进行实时的音频处理,并实时播放处理后的音频数据,使录音、音频处理和放音三个原本独立的过程异步并行处理,以达到原始声音采样和处理后的声音同步播放的实时效果。
  多媒体低层音频开发中,音频数据量一般比较大,应用程序必须不断向设备驱动程序提供音频数据块才能保证录音或播放的持续进行。由于录音和放音的具体操作是由设备驱动程序控制音频硬件在后台完成的,因而应用程序必须检测什么时候用完一个数据块,并及时传送下一个数据块,才能避免播放停顿和丢失录音信息。低层音频服务中的回调机制(Callback Mechanism)为我们提供了检测音频数据块使用情况的方法。所谓回调机制,即在打开音频设备时,通过指定设备打开函数(waveIn Open(  )或waveOutOpen( ))的fdwOpen参数来指定一个事件、函数、线程或窗口作为回调对象,dwCallback参数将说明对象句柄或函数地址。设备驱动程序不断向回调对象发送消息,通知音频数据块的处理状态,用户程序在窗口处理过程或回调函数中响应这些消息,并做出相应的处理。
3.2语音压缩
  传统的电话网是以电路交换的方式传输语音的,它需要的基本带宽为64kbit/s。而要在基于IP的分组网络上传输语音,就必须对模拟的语音信号进行特殊的处理,使处理后的信号可以适合在面向无连接的分组网络上传输,这项技术称为分组语音技术。语音压缩是分组语音系统中的重要组成部分。目前,通过调制解调器接入网络的最大速率为56kbit/s,远远不能适应多媒体通信的要求,虽然已有更快的访问技术如ISDN,ADSL,但毕竟还不普及。因此必须采用语音压缩算法来处理语音,而且从节省网络带宽的角度出发,语音压缩也是非常必要的。
  音频数据是大多数多媒体应用程序向用户提供信息的主要方式,这些数据一般具有较高的采样速率,如果不经过压缩的话,保存它们需要消耗大量的存贮空间,在网络上进行传输的效率也很低,因此音频数字压缩编码在多媒体技术中占有很重要的地位。目前常用的压缩方法有很多种,不同的方法具有不同的压缩比和还原音质,编码的格式和算法也各不相同,其中某些压缩算法相当复杂,普通程序不可能去实现其编解码算法。所幸的是,Windows 9x/NT 4.0/Windows 2000为多媒体应用程序提供了强大的支持,引入了ACM(Audio CompressionManager,音频压缩管理器),它负责管理系统中所有音频编解码器(Coder-Decoder,简称CODEC,是实现音频数据编解码的驱动程序),应用程序可以通过ACM提供的编程接口调用这些系统中现成的编解码器来实现音频数据的压缩和解压缩,这一类函数和结构的名字一般都以“ACM”作为前缀。Windows 9x/NT 4.0/2000系统自带的音频COD ECs支持一些音频数据压缩标准,如MicrosoftADPCM、Microsoft Interactive Multime dia Asso ci ation(I MA)ADPCM、DSP GroupTrueSpeech(TM)等。本系统分别对MSADPCM、IMA ADP CM、MS GSM 6.10 、DSP GroupTrueSpeech(TM)这四种具有代表性的压缩标准进行了测试和比较。从压缩率来看,MSA DPCM和IMA ADPCM都是4:1,MSGSM 6.10是2:1,而DSPGroup TrueSpeech(TM)则达到了10:1。从还原后的效果来看,应该MSGSM 6.10比较好,而且它支持比较高的采样频率,但它的压缩率太小,我们还是弃用了。而DSPGroup TrueSpeech(TM)有着很高的压缩率,大大降低了对带宽的要求,很适合在Internet上传输,而且还原后的效果还可以,所以最后还是选用了它。
3.3语音传输
  本系统采用基于Socket的TCP/IP协议通信,通过在网络传输层建立两端计算机的连接来实现实时通信。为了便于在Windows平台上开发,微软公司推出了一套以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例的网络编程接口Windows Sockets。它不仅包含了人们所熟悉的Berkeley Soc ket风格的库函数,也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。根据传输数据类型的不同,Windows Sockets可分为数据流Socket(SOCK  STREAM)和数据报Socket(SOCK—DGRAM)两类。数据流Socket提供了双向的、有序的的、无差错、无重复并且是无记录边界的数据流服务,TCP/IP协议使用该类接口。数据报Socket提供双向的,但不保证是可靠的、有序的、无重复的数据流服务,也就是说,一个从数据报Socket接受信息的进程有可能发现信息重复了,或者和发出的顺序不同。

[1] [2]  下一页

,基于Internet的语音交互系统的设计和实现
关于《基于Internet的语音交互系统的设计和实现》的更多文章