基于Internet的语音聊天软件设计与实现.doc

上传人:土8路 文档编号:10502161 上传时间:2021-05-20 格式:DOC 页数:5 大小:22.50KB
返回 下载 相关 举报
基于Internet的语音聊天软件设计与实现.doc_第1页
第1页 / 共5页
基于Internet的语音聊天软件设计与实现.doc_第2页
第2页 / 共5页
基于Internet的语音聊天软件设计与实现.doc_第3页
第3页 / 共5页
基于Internet的语音聊天软件设计与实现.doc_第4页
第4页 / 共5页
基于Internet的语音聊天软件设计与实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Internet的语音聊天软件设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Internet的语音聊天软件设计与实现.doc(5页珍藏版)》请在三一文库上搜索。

1、基于Internet的语音聊天软件设计与实现朱国华,夏敏捷 (中原工学院 计算机科学系 ,河南 郑州 450007)摘要:文章对网络环境下语音通信的原理进行了系统地分析,详细阐述了语音的采集、语音数据的压缩和解压缩、语音数据的传输等关键性技术和Delphi6实现语音软件的开发过程,并给出了相应的简单实例。关键词:语音通信; Delphi6;ACM;Codecs随着网络技术的迅速发展,基于网络的各种多媒体音频和视频传输技术开始得到广泛的应用,以IP电话业务为代表的网络音频传输技术在现阶段已经得到成功的运营。网络语音传输的基本原理是对模拟语音信号经过模数转换,进行编码压缩后,按一定的打包规则将压缩

2、帧转换成IP数据包通过数据网进行传输,在目的地经过数据解压、数模转换复原成话音,从而达到语音通信的目的。1 网络语音通信关键技术网络语音传输总的目的是既要保证通话服务质量QoS,又要尽可能的减少带宽资源。整个语音传输的过程1为:发话方首先采集声卡语音,将模拟信号转换为数字数据,存入计算机内存中,再通过语音压缩算法的运算将数据进行压缩,最后打包成IP数据包发送出去。接收方接收到IP数据包,首先解析IP数据,接着采用解压缩算法将数据进行解压缩,然后通过将解压缩后的数字数据转换为模拟信号。在这一流程中,语音的采集、数据的压缩和解压缩、数据的传输都是关键的技术。1.1语音的采集采样率的大小直接决定语音

3、的清晰度和采集的原始数字数据量的大小。语音的采集和播放的原理一致,前者是进行A/D转换,后者是D/A转换。语音采集的原理是通过在离散的时间间隔采样原始声音并记录每次采样的数字来表示和重建声音波形的技术来实现的。采集的声音数据的格式有很多标准,软件的设计中一般采用波形数据的格式2,WAVE_FORMAT_PCM和WAVE_FORMAT_DRM是Windows API函数中支持波形数据采样的两种格式。很多程序中采用WAVE_FORMAT_PCM,即PCM(脉冲编码调制)格式,其采样率可以为8KHZ、11.025KHZ、22.05KHZ或441.KHZ。如果设置单声道,采样率为8KHZ,每个采样值为

4、16位,那么采集后的数字语音数据为16kB/s。1.2 语音数据的压缩语音通信的重要问题之一就是尽可能提高压缩编码的比特率。音频数据一般具有较高的采样速率,如果不经过压缩的话,保存它们需要消耗大量的存贮空间,在网络上进行传输的效率也很低。采用什么样的压缩算法决定了压缩率的大小,这也是整个网络语音通信技术的核心和最关键的技术之一。因此音频数字压缩编码在语音通信中占有很重要的地位。目前常用的压缩方法有很多种,不同的方法具有不同的压缩比和还原音质,编码的格式和算法也各不相同,其中某些压缩算法相当复杂,普通程序不可能去实现其编解码算法。所幸的是,Windows9x/NT4.0/Windows2000为

5、多媒体应用程序提供了强大的支持,引入了多媒体功能的接口函数库ACM3(Audio Compression Manager,音频压缩管理器),它负责管理系统中所有音频编解码器(Coder-Decoder简称Codecs,是实现音频数据编解码的驱动程序),应用程序可以通过ACM提供的编程接口调用这些系统中现成的编解码器来实现音频数据的压缩和解压缩,这一类函数和结构的名字一般都以“ACM”作为前缀。在Delphi6开发音频压缩的程序中,其相应的API声明单元为MSASM.pas。语音压缩的程序中,音频压缩管理器控件组包括TACMWaveIn、TACMDialog、TACMWaveOut这三个控件。程

6、序员可在相应的网站(如:http:/ AD-PCM、(IMA)ADPCM、DSPGroupTrueSpeech(TM)等。从压缩率来看,MSADPCM和IMAADPCM都是4:1,MSGSM6.10是2:1,而DSPGroupTrueSpeech(TM)则达到了10:1。从还原后的效果来看,应该MSGSM6.10比较好,而且它支持比较高的采样频率,但它的压缩率太小。1.3 语音传输实现本系统采用基于Socket的UDP协议通信,它作为一个无连接的协议,只是简单地将数据放在端口中,不在发送和接受方之间建立一个连接。这种数据传输方式的安全性较差些,但程序运行过程的鲁棒性要强许多。这里使用Delph

7、i6的NMUDP控件来传输音频数据,发送报文的任务由Sendbuffer方法或者Sendstream完成,它负责完成由TACMWaveIn控件获取的并经控件转换的压缩音频数据的发送。而在它接受到一个报文时,将触发DataReceived事件,在此事件函数中,调用Readbuffer或者ReadStream来读取报文的数据,并将这些数据经解压后由TACMWaveOut控件加以播放。TACMWaveIn控件的ondata事件,是当数据满了就会发生这个事件。在这个事件里调用NMUDP控件的Sendstream方法把数据发送出去。NMUDP控件DataReceived事件,是当数据到达时就会发生。在这

8、个事件里调用TACMWaveOut.play(buf,size)播放语音流。2 程序设计实现基于以上方法,笔者成功地开发了语音聊天测试软件。该软件平台为;硬件平台为含全双工声卡、麦克风和音响的多媒体PC;开发工具为Delphi6。下面介绍具体的开发过程:新建一个工程,对于TACMWaveIn、TACMDialog、TACMWaveOut这三个控件,单击“Componet”“install component.”分别选择相应的下载的PAS控件文件“OK”;安装上这三个控件。在窗体(如图1)上添加相应控件,注意上述的三个控件在Milos面板上。图1 语音聊天测试软件界面uses winsock;/

9、addprocedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);/接受麦克风语音var pchData:pChar; myStream:TMemoryStream;begin pchData:=pchar(data); if pchData1= then exit; myStream:=TMemoryStream.Create; try myStream.Write(pchData,size); nmudp1.sendstream(mystream); finally myStream.Free; end;end;procedu

10、re TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);/语音数据传输到对方时产生var mystream:TMemoryStream; recData:string; pcharplaystr:pchar;begin myStream:=TMemoryStream.create; try nmUdp1.ReadStream(myStream); Setlength(recdata,NumberBytes);待添加的隐藏文字内容1 myStream

11、.Read(recdata1,NumberBytes); /将流转换成字符串 pcharplaystr:=pchar(recData); ACMWaveOut1.PlayBack(pcharplaystr,NumberBytes); /播放接收到的数据 StatusBar1.SimpleText:=inttostr(n)+收到来自+FromIP+端口+inttostr(port); finally myStream.free; end; end;end.以上程序系统在两台PC上运行,通过输入对方的IP和选择不同的端口,就可以通过麦克风实现语音对话了。3结束语该系统利用了ACM技术,使得音频信号经过模数转换后也可以作为分组数据在互联网上传递,实现语音对话功能,扩展了互联网的应用。在语音通信中延时的情况仍需要进一步改进。作者简介:朱国华(1951-),男(汉族),江苏无锡人,副教授。参考文献:1李宁溪,张峡. 基于LAN的语音通讯软件设计J. 计算机工程与应用2003(4):137-139. 2施寒潇,朱巧明,吕强.基于Internet的语音交互系统的设计和实现J. 通信技术与设备.2002(3):33-37.3蒋先刚,涂晓斌,陈海雷.网上语音数据传输的Delphi实现技术J.华东交通大学学报.2002(9) :44-48.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1