1、摘要:3ABSTRACT:3第一章 引言41.1 论文背景41.2 国内外研究现状及发展趋势51.2.1 研究现状51.2.2 发展趋势5第二章 关键技术72.1 XMPP协议72.1.1 XMPP协议简介72.1.2 XMPP协议基本网络结构72.1.2 选择XMPP协议的理由72.2 网络通信协议82.3 Socket网络编程92.4 音频捕获技术92.5 音频回放技术92.6 音频采样技术102.7 音频压缩/解压技术102.8 P2P技术10第三章 语音通讯系统的分析113.1 语音通讯系统可行性分析113.2 语音通讯系统需求分析113.2.1 项目总述123.2.2 市场需求分析1
2、23.2.3 用户需求分析123.2.4 软件性能要求133.2.5 软件功能需求133.3 语音通讯系统流程分析143.4 语音通讯系统数据流图15第四章 语音通讯系统的设计174.1 系统结构174.2 开发工具174.3 流程设计184.4 语音通讯系统总体设计194.5 语音通讯系统详细设计194.5.1 登录模块194.5.2 建立连接模块204.5.3 音频捕获模块214.5.4 音频回放模块23第五章 语音通讯系统的实现265.1 构建语音通讯系统的用户登录系统265.2 连接建立模块的实现265.2.1 麦克风相关操作265.2.2 建立通信连接285.3音频捕获模块325.3
3、.1 确定音频格式325.3.2 建立音频捕获对象并为其分配缓冲区325.3.3 打开录音设备335.3.4 开始录音335.3.5 音频压缩并发送给远程主机335.3.6 结束录音345.4音频回放模块的实现355.4.1 确定音频格式355.4.2 建立音频回放对象355.4.3 循环接收音频数据355.4.4 打开回放设备365.4.5 音频解压并回放375.4.6 结束回放375.5常用结构体定义及介绍385.5.1 WAVEHDR385.5.2 WAVEFORMATEX385.6常用winmm.dll方法参数介绍385.6.1 waveOutOpen395.6.2 waveInOpe
4、n395.6.3 waveOutWrite395.6.4 waveOutPrepareHeader405.6.5 waveInAddBuffer405.7本系统的开发难点与解决技巧405.7.1 通信连接的建立405.7.2 语音捕获、压缩、解压、回放415.7.3 音量大小的调节415.7.4 委托、回调和异步41结 语42参考文献:43致 谢44即时消息系统的设计与实现-语音通讯模块的实现 摘要:本论文主要讨论了语音通讯系统的研究与实现,笔者在探讨即时通讯系统在国内外研究现状及发展趋势的基础上,结合当前计算机技术的发展情况,选择使用了Vistudio 2005开发环境和当前比较流行的C#编
5、程语言,结合语音捕获和回放相关知识和Socket相关知识开发了此语音通讯系统。本系统主要包括连接建立、音频捕获、音频回放三大模块,实现了用户登录、通信连接建立、音频数据捕获、数据压缩与发送、数据接收及解压、音频数据回放等功能,重点介绍了通信连接建立、音频数据捕获和回放的实现。在实现方法上,主要采用面向对象编程基本思想,利用C#编程语言将系统分为接口类、音频捕获类、音频回放类、音频压缩与解压类和异常处理类,再加一个公用的结构体类进行实现,并采用了现代比较流行的XMPP协议进行消息发送和建立其语音连接,通过Socket技术实现最终音频数据的发送和接收。最后,本论文对基于C#技术的语音通讯系统的开发
6、设计进行了总结和展望。关键字:音频捕获;音频回放;音频数据压缩;XMPP协议;Instant Messaging System Design and Implementation-the implementation of Audio communications moduleAbstract: This thesis mainly discuss the research and implementation of audio communication system. Based on the research and development trend of instant messag
7、ing at home and abroad, combine with the current computer technology, the author use Visual studio 2005 development environment, C# programming language, audio capture and playback technology, as well as the relevant knowledge of Socket develop the audio communication system. This system mainly intr
8、oduce three modules,including the connection establishment, audio capture, and audio playback , as well as the detailed implementation of the user log on ,the establishment of communication links, audio data capture, data compression and transmission, data reception and decompression, audio data pla
9、yback and so on, focusing on the implementation of the establishment of communication links, audio data capture and playback. On the realization, mainly using basic idea of object-oriented programming, and C# programming language to divide the system into some classes as Interface,Audio caputure,Aud
10、io playback,Audio compression and decompression, Exception handler, and a common type of structure, then use XMPP messaging protocol to establish the audio connections, send and receive data via Socket technique. Finally, the thesis summarize and outlook the development and design of C#-based audio
11、communication systems.Key word: Audio capture;Audio playback;Voice data compression;Xmpp protocol第一章 引言1.1 论文背景随着移动互联网的发展,即时通信技术也得到飞速的发展。自1998年面世以来,特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。近年来,即时通信市场用户规模增长迅速,市场规模前景广阔。随着互联网
12、用户的快速增长,即时通信用户也日益增长,2004年中国即时通信用户数达7000万人,2005年达到9300万人。中国即时通信市场规模在2005年约为6200万美元, 2006年达到7700万美元,到2010年将达到1.14亿美元。目前在互联网上受欢迎的即时通讯软件包括QQ、MSN Messenger、AOL Instant Messenger、Yahoo Messenger、NET Messenger Service、ICQ等。在这具大的市场份额的诱惑下,众多公司都希望在这一领域有所突破,各大门户网站纷纷挤入即时通信市场跑马圈地;国内的电信运营商也是虎视眈眈。基于即时通信在现实生活中广泛的运用
13、场景和发展趋势,考虑到其在生活中的实用性以及现在市场上流行的即时通信系统的局限性,我们考虑到很多公司其内部的交流需求,所以我们开发了一个可以在局域网内实现在线交流、文件传输、实时语音通讯和视屏通讯等功能的一个即时通信系统。语音聊天是此即时通信系统的一个核心子模块,它采用现代比较流行的网络编程技术,面向各类企事业部门等局域网用户,利用即时通信协议以及相关技术实现在局域网内的实时语音聊天,方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企事业以及其它的局域网用户带来方便。而传统的一些诸如飞鸽传书之类的局域网聊天工具虽然实现了在局域网内文字聊天、文件传送等一系列功能,但其在语音方面却尚未涉
14、足,给用户的实时交流带来一定的影响。所以,本系统以现在即时通信在现实生活中大量应用为契机,实现了局域网内实时语音聊天,为人们的生活、工作,学习带来了极大的便利。1.2 国内外研究现状及发展趋势1.2.1 研究现状即时通信(IM)是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。随着移动互联网的发展,互联网即时通信也在向移动化扩张。目前,微软、AO
15、L、Yahoo等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。2006年6月,中国移动已经推出了自己的即时通信工具Fetion,中国联通也将推出即时通讯工具“超信”,但由于进入市场较晚,其用户规模和品牌知名度还比不上原有的即时通信服务提供商。 1.2.2 发展趋势目前即时通信行业仍处于高速发展期,通过调查发现,即时通信在未来的发展中呈现出整合多种业务、扩张移动平台、渗透企业用户、融入收费内容的发展趋势。1整合多种业务 随着宽带的普及,即时通信的内涵也开始变化。与过去的纯文本交流不同,新型的即时通信业务融合了视频、音
16、频交流等宽带应用元素。目前各种即时通信除提供了基本的即时互动交流外,还能提供视频、语音通信服务,在短信收发、文件共享、数据传输、游戏、娱乐、个性化设置等方面也都有大的开拓和创新。总之,多媒体化是即时通信未来的发展方向,未来即时通信将捆绑更多的互联网和电信增值业务功能。以腾讯QQ为例,它目前正在大力发展游戏、音乐、用户定制等业务,今后还可能推广新的通信录、博客服务、视频音频等服务。同时,QQ.com已经是个成熟的内容网站,现在访问量已经排名第四,它会和QQ客户端形成一纵一横互相支持的业务模式。2扩张移动平台移动通信业务的迅速发展使得传统的互联网即时通信服务商将移动用户作为下一步市场发展的重点,这
17、在移动增值服务成为即时通信服务商收入的主要来源之后体现尤为突出。即时通信业务承载的设备也趋于多样化,用户通过PC、手机、PDA以及其他设备等都可以使用即时通信。MSN和国内的手机厂商如:多普达、联想等合作,推出自带即时通信业务的手机;腾讯QQ也推出移动QQ的即时通信服务。3渗透企业用户即时通信从个人通信向企业综合通信发展是其发展史上的重要一步。随着企业信息化建设步伐的加快,企业即时通信工具(EIM)也将作为联系和沟通的方式被有针对性地应用在企业的日常生产中,作为企业内外沟通方式之一。企业即时通信应用包括综合信息服务、内部即时通信、在线客户支持服务、在线呼叫、在线广告等。2003年全球企业即时通
18、信市场收入1.19亿美元,随着企业对EIM的了解日益加深,这个数字会继续增长。据预测,全球的即时通信服务用户到2007年将增长至14.39亿户,其中企业用户数量将成倍增长,到2007年将增至3.49亿户。另据Gartner的调查数字显示,2004年在所有使用即时通信的用户中,有约50%是商业用户。4融入收费内容在互联网这个以免费、自由、互通为生存法则的世界里,即时通信从一个免费聊天工具不断生长壮大,吸引聚集了一些忠诚用户。在此基础上,开始搭建网络广告、无线增值等一系列各种潜在的交易平台,增加了收费的内容。未来即时通信行业的盈利点在互联网及增值业务、移动及固网增值业务、广告业务三个方面。其中,互
19、联网及增值业务包括两部分,核心业务主要是即时通信服务,包括传输文本信息、图像、视频、音频以及会员服务、号码服务、电子邮件等;另外还有娱乐资讯门户的建设,包括向用户提供新闻、体育、娱乐等多类资讯,还包括游戏中心、交友中心、校友录、电子贺卡等多种娱乐服务。而移动及固网增值业务则主要是短信互通和部分2.5G产品,如彩信、彩铃下载和自写短信、短信订阅、新闻等多种服务。也就是说,当用户通过手机短信与即时通信软件上的好友聊天,下载或订阅短信、彩信等产品时,通过电信运营商的平台付费,电信运营商收到费用之后再与SP结算分成。第二章 关键技术语音实时通讯涉及到很多方面的技术,在开发的过程中受到诸多方面的制约,在
20、本系统的实现过程中主要运用的关键技术有:2.1 XMPP协议2.1.1 XMPP协议简介XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分:核心的XML流传输协议和基于XML流传输的即时通讯扩展应用。(1)XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮地完成相关工作。 (2)XM
21、PP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整、完善等先进性。2.1.2 XMPP协议基本网络结构XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。2.1.2 选择XMPP协议的理由XMPP是目前主流的四种IM(IM:instant mes
22、saging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。 在这四种协议中,XMPP是最灵活的。XMPP用传送与即时通讯相关的指令是用TCP传XML流,在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,
23、基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。这一切也是笔者选择此协议的原因。2.2 网络通信协议网络中不同的工作站,服务器之间能传输数据,源于协议的存在。随着网络的发展,不同 的开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机都必须使用同 一语言,不能带有方言,因而必须开发严格的标准定义主机之间的每个包中每个字中的每 一位。这些标
24、准来自于多个组织的努力,约定好通用的通信方式,即协议。TCP/IP 协议是目前在网络中应用得最广泛的协议,TCP/IP实际上是一个关于Internet的标准,并随着的Internet广泛应用而风靡全球,它也成为局域网的首选协议。TCP/IP协议中的核心协议有TCP(传输控制协议)、UDP(用户数据报协议)和IP(因特网协议)。TCP协议可以在网络用户启动的软件应用进程之间建立通信会话,并实现数据流量控制和错误检测,这样就可以在不可靠的网络上提供可靠的端到端数据传输。UDP协议是一种无连接的协议,它在传输数据之前不建立连接,也不提供良好的可靠性和差错检查,只仅仅依赖于校验来保证可靠性。UDP不进
25、行流量控制,没有序列或者确认,因此它处理和传输数据的速度快,还被用来传输关键的网络状态消息。IP协议的基本功能是提供数据传输、数据包编址、数据包路由,分段等。通过IP编址约定,可以成功地将数据通过路由传输到正确的网络或者子网。每个网络站点具有一个32位的IP地址,它和48位MAC地址一起协作,完成网络通信,IP协议也是一种无连接的协议。因为考虑到语音数据音比较大(与你的采样频率密切相关),而且丢失一小部分数据并不会影响双方进行正常通讯,所以本系统中的语音通讯模块采用了无连接、不可靠、没有流量控制但处理和传输数据的速度快的UDP进行实现。2.3 Socket网络编程利用Socket编程实现典型的
26、网络通信程序,特别是在实时性要求比较高的项目中,Winsock编程方法是非常实用的。在此必须了解怎样建立一个Socket,并怎样用用Socket建立两台计算机之间的连接,最终实现两台计算机之间的数据传送等一系列问题。2.4 音频捕获技术语音通讯最先要解决的就是怎样捕获说话者从麦克风中传进来的语音,本系统中主要是采用Windows多媒体相关应用程序接口winmm.dll中所提供的一系列系统函数进行音频捕获。其中主要运用的函数有:(1) waveInOpen 为录音而打开一个波形输入设备(即得到一个麦克风句柄)。(2) waveInPrepareHeader 为波形输入设备准备一个输入缓冲区。(3
27、) waveInAddBuffer 向波形输入设备添加一个输入缓冲区。(4) waveInStart 启动在指定的波形输入设备的输入,开始录音。(5) waveInUnprepareHeader清除缓存。(6) waveInClose关闭设备,停止录音。2.5 音频回放技术当本面接收到远程主机捕获发送过来的音频数据后,还必须经过回放,才能将音频数据从音响中播放出来,从而达到语音通讯的目的。本系统中主要是采用Windows多媒体相关应用程序接口winmm.dll中所提供的一系列函数进行音频回放。其中主要运用的函数有:(1) waveOutOpen打开回放设备,并得到其句柄。(2) waveOut
28、PrepareHeader 为回放设备准备一个波形缓冲区(内存块)。(3) waveOutWrite 向指定的波形输出设备发送一个数据块。(4) waveOutRest停止放音。(5) waveOutClose关闭回放设备。2.6 音频采样技术由于计算机只能处理离散的二进制信息,而人的语音又是连续的模拟信号,所以我们必须通过采样把模拟信号转换成离散信号。实现这个步骤使用的设备是模/数转换器(A/D),它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了。把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(
29、赫兹)。采样频率越高所能描述的声波频率就越高。采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。本系统中采用PCM(脉冲编码调制)进行模/数转换,样频率采用8000HZ,采样位数采用16位。2.7 音频压缩/解压技术为了保证语音不失真,必须保证达到一定的采样频率(当然也不能过高)和一定的采样位数。这样,音频数据量将非常大,若不加以压缩而直接传输,很可能会导致网络阻塞、数据大量丢失等情况,所以必须采用适当的技术对采样到的数据进行压缩再进行传送,在接收端得到数据后再经过解压还原得到原来的音频数据。本系统主要采用了G729.dll中包含的压缩与解压算法对
30、音频数据进行压缩、解压。2.8 P2P技术P2P就是点对点。当在两台主机之间语音通讯连接已经建立后,就不需要再用到服务器了。因为语音数据不会再经过服务器传送到另一台主机上去,这样既消耗服务器的资源,又增加了数据的传送时间。所以,在连接建立之后,两台主机之间就进行数据的点对点传输,既节省资源,又加快了数据的传输速度。第三章 语音通讯系统的分析3.1 语音通讯系统可行性分析1技术可行性分析对于当前的语音通讯系统,在技术上有很大的选择,但其根本都会用到网络编程的基本知识。根据对目前比较流行的编程语言以及通信协议的比较,笔者在技术上选择Visual studio 2005作为IDE,以Visual C
31、#作为编程语言,结合网络编程技术以及XMPP即时通信协议进行此次开发。Visual studio 2005的集成性与功能强大性、Visual C#的便捷性与灵活性、XMPP协议的可扩展性和对网络编程的支持性保证了本次系统开发在技术上的可行性。2经济可行性分析从论文背景中可知,随着互联网用户的快速增长,即时通信用户也日益增长,2004年中国即时通信用户数达7000万人,2005年达到9300万人。中国即时通信市场规模在2005年约为6200万美元, 2006年达到7700万美元,到2010年将达到1.14亿美元。即时通信的市场需求是非常大的,而系统采用小团队方式开发在局域网内的即时通信系统,在局
32、域网内实现在线交流、文件传输、实时语音通讯和视屏通讯等功能。面向各类企事业部门等局域网用户,利用网络实现在局域网内的实时语音聊天,方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企事业以及其它的局域网用户带来方便。研发成功后即可在企事业以及其它局域网用户中得到普遍运用,而相对来说研发成本就比较低。而且此系统的运行环境即局域网的组建也比较简单,费用也较低,所以运行环境的配置费用比较低,可以获得广泛的运用。所以其带来的经济效益远远超过开发成本,在经济上也具有可行性。3操作可行性分析通过对周边人群的调查显示,决大部分人现在都在使用即时通信工具,本语音通讯系统采用与现代比较流行的即时通信工具
33、QQ相似的操作方式,在用户发出请求并经对方同意后,方可进行语音聊天,并且在聊天过程中可以随意调整音量大小,也可以随时结束语音通讯,这种操作方式合乎人们生活习惯,也具有可行性。3.2 语音通讯系统需求分析3.2.1 项目总述随着互联网技术的发展,网上办公、网上购物、网上交友等正在以飞快的速度走进大众的生活中,人们可以在网上做在现实生活中做的很多事情,而现实生活中最重要的一件事情就是交流,人与人的交流莫过于口头直接进行交流最为直观最为快捷。在这个“互联网世界”的今天,为了方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企事业以及其它的局域网用户带来方便;为了解决以前人们通过计算机只能用文
34、字进行交流的局限性,实时语音通讯已经成为现实生活中不可缺少的一部分。实现在局域网内语音实时聊天,是人们在互联网上便利生活、工作,学习的基础。语音聊天是此即时通信系统的一个核心子模块,它采用现代比较流行的网络编程技术,面向各类企事业部门等局域网用户,实现实时语音捕获,音频数据压缩与发送,音频数据接收与回放等功能,从而达到了实时语音通讯的目的,方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企事业以及其它的局域网用户带来方便。3.2.2 市场需求分析近年来,即时通信市场用户规模增长迅速,市场规模前景广阔。随着互联网用户的快速增长,即时通信用户也日益增长,2004年中国即时通信用户数达70
35、00万人,2005年达到9300万人。2006年中国即时通信用户增长29%,达到1.2亿人。另外,iResearch根据MorganStanley发表的研究数字整理发现,中国即时通信市场规模在2005年约为6200万美元,在2006年达到7700万美元,到2010年将达到1.14亿美元。移动即时通信市场有着更加巨大的成长空间和诱惑力。据iResearch2006年5月发布的调查报告显示,2005年我国移动即时通信的用户已达到500万;而在2006年,我国移动即时通信注册用户量达到700万;未来几年移动即时通信用户规模将呈现快速增长,预计到2010年中国移动即时通信用户将达到2000万人。上面这
36、些数字表明,即时通信系统的市场需求量是非常大的,而语音作为即时通信的一个核心模块,也将广泛的应用。而且随着企事业单位以及其它局域网用户对语音通信的使用,其市场将越来越大,对其的需求也将随之增大。3.2.3 用户需求分析在本系统中主要采用问卷调查以及与当前比较流行的即时通信系统(如QQ)作比较而得到用户对语音通信的一些基本要求:一是速度要快(也就是要实时),二是质量要好(不能出现太大的杂音而影响正常通信),三是应该能在通信过程中动态调节音量的大小,并能进行静音操作等。3.2.4 软件性能要求实时语音通讯系统的两大性能要求就是速度和质量。在速度上不能出现太大的延迟,因为延迟太大可能会丢失很大一部分
37、用户,另外就是质量上的要求,语音通讯质量是一个与速度一样重要的问题,在通信过程中不能出现太大的杂音,也不能出现语音失真的现象。3.2.5 软件功能需求图3-1语音通讯系统用例图Fig.3-1:The Use Case diagram of Audio communication system在整个语音通讯过程中,涉及到客户端与服务器两个重要的角色,客户端是语音通讯的主体,而服务器只是用于此语音通信连接的建立。其中客户端中包含着两种不同的角色,一个是请求方,而另一个则是接收请求方。首先由请求方发出通信请求,经服务器中转后传给接收方,只有在接收方同意进行语音通讯请求后才能进行正常的语音聊天,系统用
38、例图见3-1,与各个角色相关的详细功能见表3-1:(1)请求方:可以把其看成是一个人,也可以看作是一台主机。请求方最先发出语音通讯请求,然后等待接收方的处理反馈信息,只有在接收方同意之后才能进行相关的语音通讯准备工作,进而进行语音聊天,最后可以点击“结束”按钮结束语音通讯。(2)服务器:一台主机。其中转请求方发送过来的请求消息给接收方,在接收方进行处理之后,再将其反馈信息中转给请求方。在连接建立完成之后,通信双方进行点表3-1:各个角色相关的功能Table.3-1 Various role-related functions编号名称描述主要路径前置条件1请求方发出请求双方要想进行语音通请求方必
39、须先发出请求点击发送请求按钮-据对方IP发发送请求聊天窗口已经打开2请求方处理反馈信息当请求方发出的请求经对方处理之后,根据其反馈信息进行相应操作接收反馈信息-根据对方反馈信息类型进行处理收到对方反馈信息3请求方语音通讯准备接受请求方的请求后,自己应完成语音通讯相应的准备工作建立音频捕获/回放对象-开始音频捕获与回放对方接受请求4结束语音通讯当请求方/被请求方点击“结束”按钮即可结束本次语音通信点击结束按钮-发送结束的消息给对方-关闭设备,结束通信正常的语音通信中5服务器中转信息当服务器接收到通信双方传给另外一方的消息时,进行消息转发给对方接收客户端发送来的消息-根据其中包含的ID进行消息转发
40、客户端发送了消息6服务器查找用户服务器在进行消息转发时,会根据其ID查找到此条消息应该发送给谁在所有的在线用户中进行查找ID与接收此消息ID相同的人即可有消息通过服务器7被请求方处理请求接收到请求方的请求后要进行相应的处理,并将处理结果反馈对请求方接收对方的请求-进行相应的处理-信息反馈被请求方收到请求8被请求方语音通讯准备接受请求方的请求后,自己应完成语音通讯相应的准备工作建立音频捕获/回放对象-开始音频捕获与回放接受对方请求对点通信,将不再使用服务器。(3)接收请求方:当对方发出请求后,接收请求方可以进行“接受”或者“拒绝”处理,并将其处理反馈信息回发给请求方。若此处点击“接受”则还要进行
41、相应的语音通讯工作然后开始正常语音通讯,最后可以点击“结束”按钮结束语音通讯。3.3 语音通讯系统流程分析语音通讯是即时通信系统中的一个核心模块,是实现人们即时交流的重要工具,而传统的一些诸如飞鸽传书之类的局域网聊天工具虽然实现了在局域网内文字聊天、文件传送等一系列功能,但其在语音方面却尚未涉足,给用户的实时交流带来一定的影响。所以,本系统以即时通信在现实生活中大量应用为契机,实现了局域网内两台台主机实时语音聊天。只要其中任意一个用户发出语音聊天的请求,对方就会接收到一个请求,若同意之后双方就可以进行随意的语音聊天了,并且在聊天过程中可以设置音量的大小,最后点击结束键结束语音聊天。首先对语音通
42、讯流程进行分析,流程分析是整个系统的基础,它给出了语音是怎样从一台主机捕获并发送到另一台机的整个过程。一般语音通讯系统应该包括:建立连接,音频捕获,音频发送(包括音频压缩),音频接收,音频回放(包括音频解压)五个部分。其基本流程为:建立连接打开麦克风捕获音频音频压缩音频传送音频接收音频解压音频回放。3.4 语音通讯系统数据流图本语音通讯系统主要是是实现在局域网内的实时语音聊天,需要一台主机充当服务器,另外的计算机连接到这台服务器上。当通信双方中的一方给对方发出语音聊天请求后,服务器进行转发最后双方建立通信连接。在双方通信连接建立后就可以在两台计算机之间进行点对点音频数据传输。本地主机捕获音频设
43、备中的音频数据,并经过压缩然后发送给对方,在对方接收到此音频数据之后经解压回放。具体数据流走向是:一方(A方)发出请求经过服务器转发到另一方(B方),经过B方对A方提出的请求进行处理,然后将其反馈消息返回给A方(此处假设B方选择了接受),则A方将得到对方的IP地址并打开自己语音设备开始进行音频捕获、压缩并发送,而B方在进行音频捕获的同时进行音频接收、解压与回放。所以可以得到顶层数据流图见图3-2:图3-2: 顶层数据流图Fig.3-2 The Top-level DFD在上面顶层数据流图中,有处理语音请求、捕获音频与发送、音频接收与回放三大处理,这三个处理分别表示:1处理语音请求:请求方提出的
44、语音聊天请求,经服务器进行转发给对方,然后经过对方的处理再通过服务器将其反馈消息转发到请求方,请求方根据对方的应答消息完成相应的动作,若对方是接受了此语音请求,则将此应答消息发送给音频捕获与发送处理开始此次语音通信。2捕获音频与发送:当请求方接收到对方“接受”语音请求的应答消息后,就会打开自己的音频设备启动音频捕获处理,并将捕获到的音频数据进行压缩处理之后发送给对方。在发送给对方的过程中会用到处理语音请求过程中所得到的对方的IP地址。3音频接收与回放:当对方(B)收到A方传过来的音频数据后,首先其会通过解压处理而得到最初的音频数据然后在接收方的音频设备中进行回放。根据以上分析及顶层数据流图可得
45、细化数据流图见图3-3:图3-3: 细化数据流图Fig.3-3 The detailed DFD第四章 语音通讯系统的设计4.1 系统结构即时通信系统采用CS结构模式,即:服务器/客户端模式。但语音通讯模块只是依靠服务器进行两个客户端连接的建立,当两个客户端的连接建立以后,将不使用服务器,而是采用P2P模式进行通信。因为语音数据不会再经过服务器传送到另一台主机上去,这样既消耗服务器的资源,又增加了数据的传送时间。所以,采用这种结构,两台主机之间就进行数据的点对点传输,既节省资源,又加快了数据的传输速度。系统结构图见图4-1:图4-1:系统结构模式Fig.4-1 System architect
46、ure model4.2 开发工具由于开发基于网络的语音通讯系统,所以现在比较流行的几中语言就是C+、JAVA和C#,基于几种平台和语言的比较,最终选择了Visual Studio 2005作为IDE,选择Visual C#语言来实现此语音通讯系统,选择VS2005和Visual C#的理由如下:Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE
47、 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。而Visual C#是微软推出的一种比较新的一种面向对象编程语言,它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。因此选择VS2005作为IDE来进行此次开发。相对以前的编程语言来说,C#语言在效率与安全性上得了很大的改善,并且支持现有的网络编程新标准,它使程序员快速便捷地创建基于Microsoft .NET平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。还有,C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误,