1 引言
Internet在全球范围内呈爆炸性增长的趋势,使全社会很快融入到信息浪潮中,它的主要业务已由传统的文件传输、电子邮件和远程登录等基本服务转向以VoIP为代表的多媒体服务。VoIP(VoiceOver IP)是指将模拟的语音信号数字化,进行分段压缩后按照<8ttt8table>
www.hnygpx.com的规律加上IP地址头,经IP网络路由或交换至目的地址后,IP包再经相反过程还原成语音信号。VoIP涉及到的技术比较繁杂,其中尤以
www .ddd tt. com分组语音技术、语音编码及压缩技术在内的几种技术的发展最为关键。
2系统概况
本系统是基于Visual C++和InternetProtocol,在Windows平台上开发的,它利用
www.8 t t t8. com
现有的全双工声卡和Internet网络,来实现PCto PC的通话,整个系统
www.ssbbww.com分为几个部分,首先,对音频设备(声卡)的模拟语音信号进行采集,经过
ssbbwwA/D(模数)转换为数字化语音包;
,采用
www.hnygpx.com编码压缩技术对语音数据包进行压缩;第三,按
www.hnygpx.com的打包规则将压缩帧转换成IP数据包通过数据网络进行传输;第四,在目的地经过
ssbbww数据解压;第五,再把语音数据包写入到音频设备驱动程序;最后,D/A(数模)转换复原成话音就实现播放,从而达到语音通信的目的。整个过程见图1。
3系统实现
3.1语音8tTt8
语音数据8tTt8的整个过程www.ssbbww.com分成两个部分:A/D转换,即把原始声音的模拟输入转化为数字化信息;D/A转换,即把数字信息转化为模拟数据。在通话过程中,跟用户最直接打交道的是说和听,8ttt8,语音数据8tTt8的好坏直接影响了系统实现的成败。
本系统是要把语音直接转换为数据,放在内存中,而不是存为语音文件,而且播放语音时,8tt t 8. com直接播放语音数据,而不是播放语音文件。这样的好处是省略了读写硬盘的费时操作,提高了语音通话的实时性。要完成上述语音操作,编程语言中提供的
Dddtt
使用的高级多媒体语音函数是无法胜任的,只能通过Windows MDK(Multimedia DevelopmentKit)中的多媒体低层音频服务来实现,这一类函数和结构的名字
SsbbwW.com都以“wave”
dddtt前缀。Windows下录制或播放音频数据,其主要操作
www.hnygpx.com将音频数据读出到音频设备驱动程序和从音频设备驱动程序写入的操作。低层波形音频函数通过WAVEHDR结构的音频数据块对设备驱动程序的音频数据进行上述控制。以录音为例,其准备工作主要有几点,打开录音设备,
ssbbww录音句柄,指定录音格式,分配若干用于录音的内存。开始录音时,先将
8 tt t8.com内存块都提供给录音设备用来录音,录音设备就会依次将语音数据写入内存,当一块内存写满,录音设备就会发一个Window消息MM WIM DATA给相应的窗口,通知程序作相关的
8tTt8,
www.ssbbww.Com程序通常的
8tTt8是把内存中的数据进行复制,如写入文件等,在此
sSBbWw的
8tTt8是把数据进行压缩和网络发送,
把内存置空,返还给录音设备进行录音,这样就形成一个循环不息的录音过程。结束录音时就释放
8 tt t8.com内存块,关闭录音设备。关键的录音函数和顺序如下:
开发人员
www.ssbbww.com充分利用
www.8 t t t8. com
Windows操作系统的多任务机制,在原始声音进行采样的
ssbbww. com对采样数据进行实时的音频
8tTt8,并实时播放
8tTt8后的音频数据,使录音、音频
8tTt8和放音三个原本独立的过程异步并行
8tTt8,以达到原始声音采样和
8tTt8后的声音同步播放的实时效果。
多媒体低层音频开发中,音频数据量
SsbbwW.com比较大,应用程序必须
ssbbww. c omssbbww.Com向设备驱动程序提供音频数据块才能保证录音或播放的持续进行。
www.ddd tt. com录音和放音的具体操作是由设备驱动程序控制音频硬件在后台完成的,因而应用程序必须
ssbbww. c om检测什么时候用完一个数据块,并及时传送下一个数据块,才能避免播放停顿和丢失录音信息。低层音频服务中的回调机制(Callback Mechanism)为
sSBbWw提供了检测音频数据块使用
8 tt t 8. com的方法。所谓回调机制,即在打开音频设备时,通过指定设备打开函数(waveIn Open( )或waveOutOpen( ))的fdwOpen参数来指定一个事件、函数、线程或窗口
dddtt回调对象,dwCallback参数将说明对象句柄或函数地址。设备驱动程序
ssbbww.Com向回调对象发送消息,通知音频数据块的
8tTt8www .ddd Tt. com,用户程序在窗口
8tTt8过程或回调函数中响应这些消息,并做出相应的
8tTt8。
3.2语音压缩
传统的电话网是以电路交换的方式传输语音的,它需要
sSbBwW.cOm的基本带宽为64kbit/s。而要在基于IP的分组网络上传输语音,就必须
ssbbww. c om对模拟的语音信号进行特殊的
8tTt8,使
8tTt8后的信号
www.ssbbww.com适合在面向无连接的分组网络上传输,这项技术称为分组语音技术。语音压缩是分组语音系统中的
www.hnygpx.com组成部分。目前,通过调制解调器接入网络的最大速率为56kbit/s,远远不能适应多媒体通信的
dDdtt
,虽然已有更快的访问技术如ISDN,ADSL,但毕竟还不普及。因此
www.8 t tt8. com必须
ssbbww. c om采用语音压缩算法来
8tTt8语音,而且从节省网络带宽的角度出发,语音压缩
8tt t 8. com非常必要的。
音频数据是大多数多媒体应用程序向用户提供信息的主要方式,这些数据
SsbbwW.com具有较高的采样速率,
8 tt t8.com不经过
ssbbww压缩的话,保存
www.Dddtt.com需要
sSbBwW.cOm消耗大量的存贮空间,在网络上进行传输的效率也很低,因此
www.8 t tt8. com音频数字压缩编码在多媒体技术中占有很
www.hnygpx.com的地位。目前常用的压缩方法有
8ttt8种,不同的方法具有不同的压缩比和还原音质,编码的格式和算法也各不
dddTt.com,其中某些压缩算法相当
www.dDdtt.com
,普通程序不可能
www.ssBBww.cOm去实现其编解码算法。所幸的是,Windows 9x/NT 4.0/Windows 2000为多媒体应用程序提供了强大的支持,引入了ACM(Audio CompressionManager,音频压缩管理器),它负责管理系统中
8 tt t8.com音频编解码器(Coder-Decoder,简称CODEC,是实现音频数据编解码的驱动程序),应用程序
www.ssbbww.com通过ACM提供的编程接口调用这些系统中现成的编解码器来实现音频数据的压缩和解压缩,这一类函数和结构的名字
SsbbwW.com都以“ACM”
dddtt前缀。Windows 9x/NT 4.0/2000系统自带的音频COD ECs支持
8 tt t8.com
音频数据压缩标准,如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比较好
8 t tt 8.c o m,而且它支持比较高的采样频率,但它的压缩率太小,
sSBbWw还是弃用了。而DSPGroup TrueSpeech(TM)有着很高的压缩率,大大降低了对带宽的
dDdtt
,很适合在Internet上传输,而且还原后的效果还
www.ssbbww.com,
8ttt8最后还是选用了它。
3.3语音传输
本系统采用基于Socket的TCP/IP协议通信,通过在网络传输层建立两端计算机的连接来实现实时通信。
dd dtt. com便于在Windows平台上开发,微软公司推出了一套以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例的网络编程接口Windows Sockets。它不仅包含了人们所熟悉的Berkeley Soc ket风格的库函数,也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用
www.8 t t t8. com
Windows消息驱动机制进行编程。根据传输数据类型的不同,Windows Sockets可分为数据流Socket(SOCK STREAM)和数据报Socket(SOCK—DGRAM)两类。数据流Socket提供了双向的、有序的的、无差错、无重复并且是无记录边界的数据流服务,TCP/IP协议使用该类接口。数据报Socket提供双向的,但不保证是可靠的、有序的、无重复的数据流服务,也
www.hnygpx.com说,一个从数据报Socket接受信息的进程有可能
www.ssBBww.cOm发现信息重复了,
wwW.ssbbwW.coM和发出的顺序不同。
根据以上
8 t tt 8.c o m
分析,本系统在实现的过程中采用的是数据流Socket,通过在两台PC上建立双向的传输连接,
www.ssbbww.com保证音频数据的实时无差错传输。具体工作是这样的,首先从CWinThread继承了两个子类CSocketListenThread、CMySocketThread。第一个类的工作是
8 tt t8.com
初始化工作和监听是否有Socket请求连接,这是一个
ssbbww.Com循环的过程。第二个类的工作是
8 tt t8.com有Socket请求来了,
8ttt8在
www.hnygpx.com类里就分配一个Socket给
www.hnygpx.com请求,从而建立连接。
ssbbww. com在第二个类里还定义几个辅助函数,以便事件的触发,最典型的是ReadFromSocket()和SendToSocket(),分别用来接收和发送,其实
现主要是通过Windows底层APIs函数的调用。有了这两个类
sSBbWw就
www.ssbbww.com完成Socket的连接、接收和发送。
ssbbww. com还要指出的是,本系统使用的版本是Windows Socket2,
www.hnygpx.comWindows Socket1.1
www.,Win确良dows Socket2提供了快速、多线程数据传送的能力,性能更加先进,并支持对多种网络传输方式的一致性访问和独立于协议的多点传输/组播,更为
www.hnygpx.com的是,它提供了在新的网络介质(ATM、ISD N等)上协商QoS(Quality of Service)的接口,这样多媒体应用开发人员
www.ssbbww.com请求指定传输速率,
SSBBww根据传输的吞吐量建立
wwW.ssbbwW.coM拆除连接,当网络暂时不可用
8ttt8时应用程序应该能自动得到提示。基于以上
8 t tt 8.c o m
考虑,
sSBbWw选择Windows Socket2来实现对于
网络数据的传输,实现过程虽然www.hnygpx.comwww.dDdtt.com
,dddTt给系统带来了ssbbww.Com的性能和扩展性。
4结束语
互联网Internet是当今应用最8ttt8
、发展最迅速的通信网络。这是基于数据包方式的数据分组交换方式,用户数据被封装在分组中,而分组还包含8 tt t8.com
附加信息用于网络中的路由选择、差错纠正、流量控制等。数据包各自独立地在网络中传递,www.ddd tt. com网络状况的变化和经历路径的不同,数据包到达目的地的时间是不固定的、非实时的,SsbbwW.comwww.,互联网较适用于数据的传输,但sSBbWw利用www.8 t t t8. com
了8 tt t8.com
现有的技术,使得音频信号经过ssbbww模数转换后也www.ssbbww.comdddtt数据在互联网上传递。www.ddd tt. com数据网是采用统计时分的方式分配,使用网络资源,任何dd dtt. com
通信实体都不可能www.ssBBww.cOm独占某一信道,8ttt8分组语音技术www.ssbbww.com大大提高网络资源的利用www.8 t t t8. com
率。
ssbbww. com应该指出的是,当前的VoIP技术还有8 tt t8.com
不足之处,如通话质量不高。www.ddd tt. comInternet是为数据通信目的而设计的,其通信方式是通过打包传输方式实现的,当语音包在一个无服务质量保证的网络中传输时,会产生包到达顺序的错位,从而产生网络抖动,产生语音变形和语音包丢失。8ttt8用IPPhone通话时,断断续续的现象在当前的技术下是不可避免的,而且在音质、流畅度和时延方面www.sSbbww.com也存在着www.hnygpx.com的问题,另外,压缩技术也有待改进。虽然当前的压缩标准有8ttt8,但如何使压缩率和声音还原质量得到很好的兼顾还有待改善。
不过,相信随着技术的ssbbww.Com发展、网络统一化进程的加速进行,数据网与电信网之间出它的价值。 ★★★★★ 湖南省阳光电子技术学校常年开设:手机维修培训、家电维修培训、电工培训、电脑维修培训、焊工培训--面向全国火爆招生!网址:http://www.hnygpx.com 报名电话:0731-85579057)。百分百安置就业。颁发全国通用权威证书。采用我校多年来独创的“模块教学法”,理论与实践相结合、原理+图纸+机器三位一体的教学模式,半天理论,半天实践,通俗易懂,确保无任何基础者也能全面掌握维修技能、成为同行业中的佼佼者。包教包会包工作(一期不会,免费学会为止)。