当前位置:首页Vc(Visual C++) → 分组语音传输系统

分组语音传输系统

更新日期:2008-11-2
  • 论文设计编号: Vc-685
  • 论文设计语言: Vc(Visual C++)
  • 论文设计评级: 5星级
  • 论文设计页数: 39 页
  • 论文设计字数: 22740 字左右

摘要

本文主要论述了“分组语音传输系统的简单实现”的开发过程。它是基于C/S模型下的点对点的实时语音通信系统的软件。该系统主要分为波形音频的采集回放、音频数据分组及还原、语音传输三个模块。音频模块主要由windows提供的wave系列函数完成。分组后即使在传输时丢包也不会丢失一整段声音数据而只是造成声音的部分失真,从而保证了声音可以得到尽可能完整的还原,进一步保证了正常实时的语音通信。传输采用了实时性强的无连接的UDP协议。在开发时使用Microsoft Visual C++ 6.0 开发工具结合套接字来实现。本软件的界面非常简单,易于操作,用户可以轻松的和对方进行语音通信。

 

【关键字】分组语音;UDP ;套接字

         

Abstract

This article mainly describes the developing process of Easy realization of the packet voice transmission system. This system realizes the peer-peer voice communication function which is based on the Client/Server model,and it contains three templates,including collects and plays the wave datums、packet division and recovery of the wave datums、transmission of the voice.Wave template is mainly realized with the wave class functions provided by windows.After dividing the datums to packets,it can not lose the whole section voice datums even if certain data packet is lost in the process of transmission ,it can only result in part distortion of the voice,therefore this packet division way can assure the recovery of packets as entire as possible ,and assure the nomal real-time voice communication furthermore.The transmission adopt UDP because of its strong real-time capability . This application programme uses Microsoft Visual C++ 6.0 developing tool and the knowledge of socket . The software’s interface is very easy so that people can operate it to talk  with others conveniently.

 

【Key Words】Packet Voice ;User Datagram Protocol ;Socket

。。。。。。。。。

6.1.3 程序中遇到的问题

1.问题:  在发送端如何从内存中直接获取采集到的声音数据,在接收端又是如何将声音回放出来。

解决方法:在发送端声音由麦克风输入,声音信号转化为电信号,然后利用声卡的模数转换芯片(ADC)将模拟信号(电信号)转化为计算机所能处理的数字信号,当采集到的数据装满事先设置好大小的缓冲区后即利用CopyMemory()函数将数据从缓冲区内取出。在接收端也是利用声卡的数模转换芯片(DAC)将要输出的数字信号转化为模拟信号经输出设备播放出来。

2.问题:  在实现传输过程测试语音通信效果时,产生了2~3秒的时延,语音的实时性产生了很大的影响。

解决方法:产生时延的原因主要有:网络传输时延和算法时延。由于测试时使用的是局域网,所以网络时延不可能很大。从而判断问题应该出在算法上。由于声音的输入要装满事先设定好大小的缓冲区后才会被处理及发送,缓冲区的大小就是问题的关键,而且经过计算,要想使得单向时延低于150ms,缓冲区的大小应该在1024个字节以下,将该值设为1024后问题得到了解决。

          计算公式:时延=内存大小(字节)×8/64000(ms)

3.问题: 在完成通信模块代码的编写后,运行程序总是出现“服务器端套接

字绑定失败”的错误提示消息。

解决方法:看到此提示信息即知道错误发生在套接字的绑定函数bind()上。考虑到编译和链接都没有产生错误,就判断问题可能出现在bind()函数其中一个类型为sockaddr_in 的 名为server的参数设置上。sockaddr_in是一个结构体类型,内含有四个成员,对于IP地址,sin_family将一直是AF_INET,而sin_zero只是一个填充数,这两个参数不会有问题。Sin_addr给出的是套接字的主机地址,查看了本地连接属性中的IP地址后确定这个参数也没有设置错误,经过上述的分析得知错误发生在sin_port参数上,这个参数指定的是将要分配给套接字的端口号。之后将它的值设定为另一个值后,运行程序不再出现错误了。

错误原因:原先设置的端口号很可能与其他应用程序的端口号发生了冲突。

6.2 测试

6.2.1 测试方案

  本系统完成的主要功能是实现分组语音的传输,对实时性有较高的要求。测试方案设计如下:

1.正确输入通信另一方的IP地址、端口号以及本地端口号,按下“开始讲话“按钮后测试是否有声音传输。

2.错误输入通信另一方的IP地址、端口号以及本地端口号,按下“开始讲话“按钮后测试是否有声音传输。

。。。。。。。。。

 参考文献

 

【1】    黄永峰.因特网语音通信技术及其应用.北京:人民邮电出版社,2002

【2】    王罡、林立志.基于Windows的TCP/IP编程.北京:清华大学出版社,2000

【3】    (美)Behrouz A.Forouzan、Sophia Chung Fegan著,谢希仁译.TCP/IP协议族(第二版).北京:清华大学出版社,2003

【4】    王文东、白刚.IP网络语音技术.北京:机械工业出版社.1999

【5】    赵慧玲、梁勇、吴江.分组语音技术与网络实现方案.北京:人民邮电出版社,1999

【6】    桂海源.IP电话技术与软交换.北京:北京邮电大学出版社,2004

【7】    余雪丽、陈俊杰等.多媒体技术与应用.北京:科学出版社,2003

【8】    舒华英、赖平漳等.IP电话技术及其应用.北京:人民邮电出版社,1999

【9】    (美)Uyless Black 著,温斌、李亦农等译.VoIP:IP语音技术,北京:机械工业出版社,2000

【10】(美)Uyless Black著 ,宋建平、张轶谦、刘毅等译.因特网高级技术.北京:电子工业出版社,2001


上一篇:电子图书信息管理系统        下一篇:没有了

本站公告

欢迎来到LW208计算机毕业设计,本站提供这些设计的初衷是为大家在毕业设计过程中作参考之用或研究编程作参考之用,切勿直接把它用来作为你自己的毕业设计交给老师,否则对提高自己的能力和水平没有任何益处.
从本站获得相关设计资料后,你最好参考该设计的源代码用相应的编程工具重新做一遍,可以增删或修改某些模块.对于论文要结合源程序和自己的工作生活实际进行相应的修改.

www.LW208.com Beta V1.5 2004-2008 Inc.