即时消息系统的设计与实现语音通讯模块的实现(毕业论文)_第1页
即时消息系统的设计与实现语音通讯模块的实现(毕业论文)_第2页
即时消息系统的设计与实现语音通讯模块的实现(毕业论文)_第3页
即时消息系统的设计与实现语音通讯模块的实现(毕业论文)_第4页
即时消息系统的设计与实现语音通讯模块的实现(毕业论文)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:摘要:.3 ABSTRACT:.3 第一章第一章 引言引言.4 1.1 论文背景 .4 1.2 国内外研究现状及发展趋势 .5 研究现状.5 发展趋势.5 第二章第二章 关键技术关键技术.7 2.1 XMPP 协议.7 XMPP 协议简介.7 XMPP 协议基本网络结构.7 选择 XMPP 协议的理由.7 2.2 网络通信协议.8 2.3 SOCKET网络编程.9 2.4 音频捕获技术.9 2.5 音频回放技术.9 2.6 音频采样技术.10 2.7 音频压缩/解压技术.10 2.8 P2P 技术.10 第三章第三章 语音通讯系统的分析语音通讯系统的分析.11 3.1 语音通讯系统可行性

2、分析 .11 3.2 语音通讯系统需求分析 .11 项目总述.12 市场需求分析.12 用户需求分析.12 软件性能要求.13 软件功能需求.13 3.3 语音通讯系统流程分析 .14 3.4 语音通讯系统数据流图 .15 第四章第四章 语音通讯系统的设计语音通讯系统的设计.17 4.1 系统结构.17 4.2 开发工具.17 4.3 流程设计.18 4.4 语音通讯系统总体设计.19 4.5 语音通讯系统详细设计.19 登录模块.19 建立连接模块.20 音频捕获模块.21 音频回放模块.23 第五章第五章 语音通讯系统的实现语音通讯系统的实现.26 5.1 构建语音通讯系统的用户登录系统.

3、26 5.2 连接建立模块的实现.26 麦克风相关操作.26 建立通信连接.28 5.3 音频捕获模块.32 确定音频格式.32 建立音频捕获对象并为其分配缓冲区.32 打开录音设备.33 开始录音.33 音频压缩并发送给远程主机.33 结束录音.34 5.4 音频回放模块的实现.35 确定音频格式.35 建立音频回放对象.35 循环接收音频数据.35 打开回放设备.36 音频解压并回放.37 结束回放.37 5.5 常用结构体定义及介绍.38 WAVEHDR.38 WAVEFORMATEX.38 5.6 常用WINMM.DLL方法参数介绍.38 waveOutOpen.39 waveInOp

4、en.39 .39 waveOutPrepareHeader.40 waveInAddBuffer.40 5.7 本系统的开发难点与解决技巧.40 通信连接的建立.40 语音捕获、压缩、解压、回放.41 音量大小的调节.41 委托、回调和异步.41 结结 语语.42 参考文献参考文献: :.43 致致 谢谢.44 即时消息系统的设计与实现即时消息系统的设计与实现-语音通讯模块的实现语音通讯模块的实现 刘永忠 西南大学计算机与信息科学学院,重庆 400715 摘要:摘要:本论文主要讨论了语音通讯系统的研究与实现,笔者在探讨即时通讯系统在国内外研究现状 及发展趋势的基础上,结合当前计算机技术的发展

5、情况,选择使用了Vistudio 2005开发环境和当 前比较流行的C#编程语言,结合语音捕获和回放相关知识和Socket相关知识开发了此语音通讯系统。 本系统主要包括连接建立、音频捕获、音频回放三大模块,实现了用户登录、通信连接建立、音频 数据捕获、数据压缩与发送、数据接收及解压、音频数据回放等功能,重点介绍了通信连接建立、 音频数据捕获和回放的实现。在实现方法上,主要采用面向对象编程基本思想,利用C#编程语言将 系统分为接口类、音频捕获类、音频回放类、音频压缩与解压类和异常处理类,再加一个公用的结 构体类进行实现,并采用了现代比较流行的XMPP协议进行消息发送和建立其语音连接,通过Sock

6、et 技术实现最终音频数据的发送和接收。最后,本论文对基于C#技术的语音通讯系统的开发设计进行 了总结和展望。 关键字:关键字:音频捕获;音频回放;音频数据压缩;XMPP协议; Instant Messaging System Design and Implementation -the implementation of Audio communications module LIU Yongzhong Computer and information science college of Southwest University, Chongqing 400715, China Abstr

7、act: This thesis mainly discuss the research and implementation of audio communication system. Based on the research and development trend of instant messaging at home and abroad, combine with the current computer technology, the author use Visual studio 2005 development environment, C# programming

8、language, audio capture and playback technology, as well as the relevant knowledge of Socket develop the audio communication system. This system mainly introduce three modules,including the connection establishment, audio capture, and audio playback , as well as the detailed implementation of the us

9、er log on ,the establishment of communication links, audio data capture, data compression and transmission, data reception and decompression, audio data playback and so on, focusing on the implementation of the establishment of communication links, audio data capture and playback. On the realization

10、, mainly using basic idea of object-oriented programming, and C# programming language to divide the system into some classes as Interface,Audio caputure,Audio playback,Audio compression and decompression, Exception handler, and a common type of structure, then use XMPP messaging protocol to establis

11、h the audio connections, send and receive data via Socket technique. Finally, the thesis summarize and outlook the development and design of C#-based audio communication systems. Key word: Audio capture;Audio playback;Voice data compression;Xmpp protocol 第一章第一章 引言引言 1.11.1 论文背景论文背景 随着移动互联网的发展,即时通信技术

12、也得到飞速的发展。自 1998 年面世以来, 特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、 音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经 发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的 综合化信息平台。近年来,即时通信市场用户规模增长迅速,市场规模前景广阔。随 着互联网用户的快速增长,即时通信用户也日益增长,2004 年中国即时通信用户数达 7000 万人,2005 年达到 9300 万人。中国即时通信市场规模在 2005 年约为 6200 万美 元, 2006 年达到 7700 万美元,到 2010 年将

13、达到 1.14 亿美元。 目前在互联网上受欢迎的即时通讯软件包括 QQ、MSN Messenger、AOL Instant Messenger、Yahoo Messenger、NET Messenger Service、ICQ 等。在这具大的市场份 额的诱惑下,众多公司都希望在这一领域有所突破,各大门户网站纷纷挤入即时通信 市场跑马圈地;国内的电信运营商也是虎视眈眈。基于即时通信在现实生活中广泛的 运用场景和发展趋势,考虑到其在生活中的实用性以及现在市场上流行的即时通信系 统的局限性,我们考虑到很多公司其内部的交流需求,所以我们开发了一个可以在局 域网内实现在线交流、文件传输、实时语音通讯和视

14、屏通讯等功能的一个即时通信系 统。 语音聊天是此即时通信系统的一个核心子模块,它采用现代比较流行的网络编程 技术,面向各类企事业部门等局域网用户,利用即时通信协议以及相关技术实现在局 域网内的实时语音聊天,方便内部人员进行实时交流,共同解决工作生活中遇到的困 难,为企事业以及其它的局域网用户带来方便。而传统的一些诸如飞鸽传书之类的局 域网聊天工具虽然实现了在局域网内文字聊天、文件传送等一系列功能,但其在语音 方面却尚未涉足,给用户的实时交流带来一定的影响。所以,本系统以现在即时通信 在现实生活中大量应用为契机,实现了局域网内实时语音聊天,为人们的生活、工作, 学习带来了极大的便利。 1.21.

15、2 国内外研究现状国内外研究现状及发展及发展趋势趋势 .1 研究现状研究现状 即时通信(IM)是指能够即时发送和接收互联网消息等的业务。自 1998 年面世以来, 特别是近几年的迅速发展,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、 音乐、电视、游戏和搜索等多种功能。即时通信不再是一个单纯的聊天工具,它已经 发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的 综合化信息平台。随着移动互联网的发展,互联网即时通信也在向移动化扩张。目前, 微软、AOL、Yahoo 等重要即时通信提供商都提供通过手机接入互联网即时通信的业务, 用户可以通过手机与其他已经

16、安装了相应客户端软件的手机或电脑收发消息。2006 年 6 月,中国移动已经推出了自己的即时通信工具Fetion,中国联通也将推出即时通 讯工具“超信” ,但由于进入市场较晚,其用户规模和品牌知名度还比不上原有的即时 通信服务提供商。 .2 发展趋势发展趋势 目前即时通信行业仍处于高速发展期,通过调查发现,即时通信在未来的发展中 呈现出整合多种业务、扩张移动平台、渗透企业用户、融入收费内容的发展趋势。 1整合多种业务 随着宽带的普及,即时通信的内涵也开始变化。与过去的纯文本交流不同,新型 的即时通信业务融合了视频、音频交流等宽带应用元素。目前各种即时通信除提供了 基本的即时互动

17、交流外,还能提供视频、语音通信服务,在短信收发、文件共享、数 据传输、游戏、娱乐、个性化设置等方面也都有大的开拓和创新。总之,多媒体化是 即时通信未来的发展方向,未来即时通信将捆绑更多的互联网和电信增值业务功能。 以腾讯 QQ 为例,它目前正在大力发展游戏、音乐、用户定制等业务,今后还可能推广 新的通信录、博客服务、视频音频等服务。同时,QQ 已经是个成熟的内容网站, 现在访问量已经排名第四,它会和 QQ 客户端形成一纵一横互相支持的业务模式。 2扩张移动平台 移动通信业务的迅速发展使得传统的互联网即时通信服务商将移动用户作为下一 步市场发展的重点,这在移动增值服务成为即时通信服务商收入的主要

18、来源之后体现 尤为突出。即时通信业务承载的设备也趋于多样化,用户通过 PC、手机、PDA 以及其 他设备等都可以使用即时通信。MSN 和国内的手机厂商如:多普达、联想等合作,推出 自带即时通信业务的手机;腾讯 QQ 也推出移动 QQ 的即时通信服务。 3渗透企业用户 即时通信从个人通信向企业综合通信发展是其发展史上的重要一步。随着企业信 息化建设步伐的加快,企业即时通信工具(EIM)也将作为联系和沟通的方式被有针对性 地应用在企业的日常生产中,作为企业内外沟通方式之一。企业即时通信应用包括综 合信息服务、内部即时通信、在线客户支持服务、在线呼叫、在线广告等。2003 年全 球企业即时通信市场收

19、入 1.19 亿美元,随着企业对 EIM 的了解日益加深,这个数字会 继续增长。据预测,全球的即时通信服务用户到 2007 年将增长至 14.39 亿户,其中企 业用户数量将成倍增长,到 2007 年将增至 3.49 亿户。另据 Gartner 的调查数字显示, 2004 年在所有使用即时通信的用户中,有约 50%是商业用户。 4融入收费内容 在互联网这个以免费、自由、互通为生存法则的世界里,即时通信从一个免费聊 天工具不断生长壮大,吸引聚集了一些忠诚用户。在此基础上,开始搭建网络广告、 无线增值等一系列各种潜在的交易平台,增加了收费的内容。未来即时通信行业的盈 利点在互联网及增值业务、移动及

20、固网增值业务、广告业务三个方面。其中,互联网 及增值业务包括两部分,核心业务主要是即时通信服务,包括传输文本信息、图像、 视频、音频以及会员服务、号码服务、电子邮件等;另外还有娱乐资讯门户的建设, 包括向用户提供新闻、体育、娱乐等多类资讯,还包括游戏中心、交友中心、校友录、 电子贺卡等多种娱乐服务。而移动及固网增值业务则主要是短信互通和部分 2.5G 产品, 如彩信、彩铃下载和自写短信、短信订阅、新闻等多种服务。也就是说,当用户通过 手机短信与即时通信软件上的好友聊天,下载或订阅短信、彩信等产品时,通过电信 运营商的平台付费,电信运营商收到费用之后再与 SP 结算分成。 第二章第二章 关键技术

21、关键技术 语音实时通讯涉及到很多方面的技术,在开发的过程中受到诸多方面的制约, 在本系统的实现过程中主要运用的关键技术有: 2.12.1 XMPPXMPP协议协议 XMPPXMPP协议协议简介简介 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议) 的前身是 Jabber,一个开源形式组织产生的网络即时通信协议。XMPP 目前被 IETF 国 际标准组织完成了标准化工作。标准化的核心结果分为两部分:核心的 XML 流传输协 议和基于 XML 流传输的即时通讯扩展应用。 (1)XMPP 的核心 XML 流传输协议的定义使得 X

22、MPP 能够在一个比以往网络通信协 议更规范的平台上。借助于 XML 易于解析和阅读的特性,使得 XMPP 的协议能够非常漂 亮地完成相关工作。 (2)XMPP 的即时通讯扩展应用部分是根据 IETF 在这之前对即时通讯的一个抽象 定义的,与其他业已得到广泛使用的即时通讯协议,诸如 AIM,QQ 等有功能完整、完 善等先进性。 XMPPXMPP协议基本网络结构协议基本网络结构 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两 个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。 网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信)

23、 , MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上 传输XML。 选择选择XMPPXMPP协议的理由协议的理由 XMPP 是目前主流的四种 IM(IM:instant messaging,即时消息)协议之一,其 他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时 通讯和空间平衡扩充的进程开始协议 SIP(SIMPLE)。 在这四种协议中,XMPP 是最灵活的。XMPP 用传送与即时通讯相关的指令是用 TCP 传 XML 流,在以前这些命令要么用 2 进制的形式发送(比如 QQ) ,要么用纯文本指令加 空格加参数加换行苻

24、的方式发送(比如 MSN) 。而 XMPP 传输的即时通讯指令的逻辑与以 往相仿,只是协议的形式变成了 XML 格式的纯文本。这不但使得解析容易了,人也容 易阅读了,方便了开发和查错。XMPP 是一种基于 XML 的协议,它继承了在 XML 环境中 灵活的发展性。 因此,基于 XMPP 的应用具有超强的可扩展性。经过扩展以后的 XMPP 可以通过发 送扩展的信息来处理用户的需求,以及在 XMPP 的顶端建立如内容发布系统和基于地址 的服务等应用程 序。而且,XMPP 包含了针对服务器端的软件协议,使之能与另一个进 行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。这一切 也是

25、笔者选择此协议的原因。 2.22.2 网络通信协议网络通信协议 网络中不同的工作站,服务器之间能传输数据,源于协议的存在。随着网络的发 展,不同 的开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机 都必须使用同 一语言,不能带有方言,因而必须开发严格的标准定义主机之间的每个 包中每个字中的每 一位。这些标准来自于多个组织的努力,约定好通用的通信方式, 即协议。 TCP/IP 协议是目前在网络中应用得最广泛的协议,TCP/IP 实际上是一个关于 Internet 的标准,并随着的 Internet 广泛应用而风靡全球,它也成为局域网的首选协 议。TCP/IP 协议中的核心协议有

26、TCP(传输控制协议) 、UDP(用户数据报协议)和 IP(因特网协议) 。TCP 协议可以在网络用户启动的软件应用进程之间建立通信会话, 并实现数据流量控制和错误检测,这样就可以在不可靠的网络上提供可靠的端到端数 据传输。UDP 协议是一种无连接的协议,它在传输数据之前不建立连接,也不提供良好 的可靠性和差错检查,只仅仅依赖于校验来保证可靠性。UDP 不进行流量控制,没有序 列或者确认,因此它处理和传输数据的速度快,还被用来传输关键的网络状态消息。 IP 协议的基本功能是提供数据传输、数据包编址、数据包路由,分段等。通过 IP 编址 约定,可以成功地将数据通过路由传输到正确的网络或者子网。每

27、个网络站点具有一 个 32 位的 IP 地址,它和 48 位 MAC 地址一起协作,完成网络通信,IP 协议也是一种无 连接的协议。 因为考虑到语音数据音比较大(与你的采样频率密切相关) ,而且丢失一小部分数 据并不会影响双方进行正常通讯,所以本系统中的语音通讯模块采用了无连接、不可 靠、没有流量控制但处理和传输数据的速度快的 UDP 进行实现。 2.32.3 SocketSocket网络编程网络编程 利用 Socket 编程实现典型的网络通信程序,特别是在实时性要求比较高的项目中, Winsock 编程方法是非常实用的。在此必须了解怎样建立一个 Socket,并怎样用用 Socket 建立两

28、台计算机之间的连接,最终实现两台计算机之间的数据传送等一系列问 题。 2.42.4 音频捕获技术音频捕获技术 语音通讯最先要解决的就是怎样捕获说话者从麦克风中传进来的语音,本系统中 主要是采用 Windows 多媒体相关应用程序接口 winmm.dll 中所提供的一系列系统函数 进行音频捕获。其中主要运用的函数有: (1) waveInOpen 为录音而打开一个波形输入设备(即得到一个麦克风句柄) 。 (2) waveInPrepareHeader 为波形输入设备准备一个输入缓冲区。 (3) waveInAddBuffer 向波形输入设备添加一个输入缓冲区。 (4) waveInStart 启

29、动在指定的波形输入设备的输入,开始录音。 (5) waveInUnprepareHeader 清除缓存。 (6) waveInClose 关闭设备,停止录音。 2.52.5 音频回放技术音频回放技术 当本面接收到远程主机捕获发送过来的音频数据后,还必须经过回放,才能将音 频数据从音响中播放出来,从而达到语音通讯的目的。本系统中主要是采用Windows 多媒体相关应用程序接口winmm.dll中所提供的一系列函数进行音频回放。其中主要运 用的函数有: (1) waveOutOpen 打开回放设备,并得到其句柄。 (2) waveOutPrepareHeader 为回放设备准备一个波形缓冲区(内存

30、块)。 (3) waveOutWrite 向指定的波形输出设备发送一个数据块。 (4) waveOutRest 停止放音。 (5) waveOutClose 关闭回放设备。 2.62.6 音频采样技术音频采样技术 由于计算机只能处理离散的二进制信息,而人的语音又是连续的模拟信号,所以 我们必须通过采样把模拟信号转换成离散信号。实现这个步骤使用的设备是模/数转换 器(A/D) ,它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟 声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波 了。把每一秒钟所采样的数目称为采样频率或采率,单位为 HZ(赫兹) 。采样频率

31、越 高所能描述的声波频率就越高。采样位数可以理解为采集卡处理声音的解析度。这个 数值越大,解析度就越高,录制和回放的声音就越真实。 本系统中采用 PCM(脉冲编码调制 )进行模/数转换,样频率采用 8000HZ, 采样位数采用 16 位。 2.72.7 音频压缩音频压缩/ /解压技术解压技术 为了保证语音不失真,必须保证达到一定的采样频率(当然也不能过高)和一定 的采样位数。这样,音频数据量将非常大,若不加以压缩而直接传输,很可能会导致 网络阻塞、数据大量丢失等情况,所以必须采用适当的技术对采样到的数据进行压缩 再进行传送,在接收端得到数据后再经过解压还原得到原来的音频数据。本系统主要 采用了

32、G729.dll中包含的压缩与解压算法对音频数据进行压缩、解压。 2.82.8 P2PP2P技术技术 P2P就是点对点。当在两台主机之间语音通讯连接已经建立后,就不需要再用到 服务器了。因为语音数据不会再经过服务器传送到另一台主机上去,这样既消耗服务 器的资源,又增加了数据的传送时间。所以,在连接建立之后,两台主机之间就进行 数据的点对点传输,既节省资源,又加快了数据的传输速度。 第三章第三章 语音通讯系统的分析语音通讯系统的分析 3.13.1 语音通讯系统可行性分析语音通讯系统可行性分析 1技术可行性分析 对于当前的语音通讯系统,在技术上有很大的选择,但其根本都会用到网络编程 的基本知识。根

33、据对目前比较流行的编程语言以及通信协议的比较,笔者在技术上选 择 Visual studio 2005 作为 IDE,以 Visual C#作为编程语言,结合网络编程技术以 及 XMPP 即时通信协议进行此次开发。Visual studio 2005 的集成性与功能强大性、 Visual C#的便捷性与灵活性、XMPP 协议的可扩展性和对网络编程的支持性保证了本次 系统开发在技术上的可行性。 2经济可行性分析 从论文背景中可知,随着互联网用户的快速增长,即时通信用户也日益增长, 2004 年中国即时通信用户数达 7000 万人,2005 年达到 9300 万人。中国即时通信市场 规模在 200

34、5 年约为 6200 万美元, 2006 年达到 7700 万美元,到 2010 年将达到 1.14 亿美元。即时通信的市场需求是非常大的,而系统采用小团队方式开发在局域网内的 即时通信系统,在局域网内实现在线交流、文件传输、实时语音通讯和视屏通讯等功 能。面向各类企事业部门等局域网用户,利用网络实现在局域网内的实时语音聊天, 方便内部人员进行实时交流,共同解决工作生活中遇到的困难,为企事业以及其它的 局域网用户带来方便。研发成功后即可在企事业以及其它局域网用户中得到普遍运用, 而相对来说研发成本就比较低。而且此系统的运行环境即局域网的组建也比较简单, 费用也较低,所以运行环境的配置费用比较低

35、,可以获得广泛的运用。所以其带来的 经济效益远远超过开发成本,在经济上也具有可行性。 3操作可行性分析 通过对周边人群的调查显示,决大部分人现在都在使用即时通信工具,本语音通 讯系统采用与现代比较流行的即时通信工具 QQ 相似的操作方式,在用户发出请求并经 对方同意后,方可进行语音聊天,并且在聊天过程中可以随意调整音量大小,也可以 随时结束语音通讯,这种操作方式合乎人们生活习惯,也具有可行性。 3.23.2 语音通讯系统需求分析语音通讯系统需求分析 .1 项目总述项目总述 随着互联网技术的发展,网上办公、网上购物、网上交友等正在以飞快的速度走 进大众的生活中,人们可以在网上做在

36、现实生活中做的很多事情,而现实生活中最重 要的一件事情就是交流,人与人的交流莫过于口头直接进行交流最为直观最为快捷。 在这个“互联网世界”的今天,为了方便内部人员进行实时交流,共同解决工作生活 中遇到的困难,为企事业以及其它的局域网用户带来方便;为了解决以前人们通过计 算机只能用文字进行交流的局限性,实时语音通讯已经成为现实生活中不可缺少的一 部分。实现在局域网内语音实时聊天,是人们在互联网上便利生活、工作,学习的基 础。 语音聊天是此即时通信系统的一个核心子模块,它采用现代比较流行的网络编程 技术,面向各类企事业部门等局域网用户,实现实时语音捕获,音频数据压缩与发送, 音频数据接收与回放等功

37、能,从而达到了实时语音通讯的目的,方便内部人员进行实 时交流,共同解决工作生活中遇到的困难,为企事业以及其它的局域网用户带来方便。 .2 市场需求分析市场需求分析 近年来,即时通信市场用户规模增长迅速,市场规模前景广阔。随着互联网用户 的快速增长,即时通信用户也日益增长,2004 年中国即时通信用户数达 7000 万人, 2005 年达到 9300 万人。2006 年中国即时通信用户增长 29%,达到 1.2 亿人。另外, iResearch 根据 MorganStanley 发表的研究数字整理发现,中国即时通信市场规模在 2005 年约为 6200 万美元,在 2006 年达

38、到 7700 万美元,到 2010 年将达到 1.14 亿美元。 移动即时通信市场有着更加巨大的成长空间和诱惑力。据 iResearch2006 年 5 月发布 的调查报告显示,2005 年我国移动即时通信的用户已达到 500 万;而在 2006 年,我国 移动即时通信注册用户量达到 700 万;未来几年移动即时通信用户规模将呈现快速增 图 3-1 语音通讯系统用例图 Fig.3-1:The Use Case diagram of Audio communication system 长,预计到 2010 年中国移动即时通信用户将达到 2000 万人。 上面这些数字表明,即时通信系统的市场需求

39、量是非常大的,而语音作为即时通 信的一个核心模块,也将广泛的应用。而且随着企事业单位以及其它局域网用户对语 音通信的使用,其市场将越来越大,对其的需求也将随之增大。 .3 用户需求分析用户需求分析 在本系统中主要采用问卷调查以及与当前比较流行的即时通信系统(如 QQ)作比较 而得到用户对语音通信的一些基本要求:一是速度要快(也就是要实时) ,二是质量要 好(不能出现太大的杂音而影响正常通信),三是应该能在通信过程中动态调节音量 的大小,并能进行静音操作等。 .4 软件性能要求软件性能要求 实时语音通讯系统的两大性能要求就是速度和质量。在速度上不能出现太大的延 迟

40、,因为延迟太大可能会丢失很大一部分用户,另外就是质量上的要求,语音通讯质 量是一个与速度一样重要的问题,在通信过程中不能出现太大的杂音,也不能出现语 音失真的现象。 .5 软件功能需求软件功能需求 在整个语音通讯过程中,涉及到客户端与服务器两个重要的角色,客户端是语音 通讯的主体,而服务器只是 用于此语音通信连接的建立。 其中客户端中包含着两种不 同的角色,一个是请求方, 而另一个则是接收请求方。 首先由请求方发出通信请求, 经服务器中转后传给接收方, 只有在接收方同意进行语音 通讯请求后才能进行正常的 语音聊天,系统用例图见 3- 1,与各个角色相关的详细功能见表 3-1:

41、(1)请求方:可以把其看成是一个人,也可以看作是一台主机。请求方最先发出 语音通讯请求,然后等待接收方的处理反馈信息,只有在接收方同意之后才能进行相 关的语音通讯准备工作,进而进行语音聊天,最后可以点击“结束”按钮结束语音通 讯。 (2)服务器:一台主机。其中转请求方发送过来的请求消息给接收方,在接收方 进行处理之后,再将其反馈信息中转给请求方。在连接建立完成之后,通信双方进行 点 对点通信,将不再使用服务器。 (3)接收请求方:当对方发出请求后,接收请求方可以进行“接受”或者“拒绝”处 理,并将其处理反馈信息回发给请求方。若此处点击“接受”则还要进行相应的语音 通讯工作然后开始正常语音通讯,

42、最后可以点击“结束”按钮结束语音通讯。 3.33.3 语音通讯系统流程分析语音通讯系统流程分析 语音通讯是即时通信系统中的一个核心模块,是实现人们即时交流的重要工具, 而传统的一些诸如飞鸽传书之类的局域网聊天工具虽然实现了在局域网内文字聊天、 表 3-1:各个角色相关的功能 Table.3-1 Various role-related functions 编号名称描述主要路径前置条件 1 请求方发出 请求 双方要想进行语音通 请求方必须先发出请求 点击发送请求按钮- 据对方 IP 发发送请求 聊天窗口 已经打开 2 请求方处理 反馈信息 当请求方发出的请求经对方处理之 后,根据其反馈信息进行相

43、应操作 接收反馈信息-根据对方反馈信息 类型进行处理 收到对方 反馈信息 3 请求方语音 通讯准备 接受请求方的请求后,自己应完成 语音通讯相应的准备工作 建立音频捕获/回放对象-开始音频 捕获与回放 对方接受 请求 4 结束语音通 讯 当请求方/被请求方点击“结束”按 钮即可结束本次语音通信 点击结束按钮-发送结束的消息给 对方-关闭设备,结束通信 正常的语 音通信中 5 服务器中转 信息 当服务器接收到通信双方传给另外 一方的消息时,进行消息转发给对 方 接收客户端发送来的消息-根据其 中包含的 ID 进行消息转发 客户端发 送了消息 6服务器查找 用户 服务器在进行消息转发时,会根据 其

44、 ID 查找到此条消息应该发送给谁 在所有的在线用户中进行查找 ID 与 接收此消息 ID 相同的人即可 有消息通 过服务器 7 被请求方处 理请求 接收到请求方的请求后要进行相应 的处理,并将处理结果反馈对请求 方 接收对方的请求-进行相应的处理- 信息反馈 被请求方 收到请求 8 被请求方语 音通讯准备 接受请求方的请求后,自己应完成 语音通讯相应的准备工作 建立音频捕获/回放对象-开始音频 捕获与回放 接受对方 请求 文件传送等一系列功能,但其在语音方面却尚未涉足,给用户的实时交流带来一定的 影响。所以,本系统以即时通信在现实生活中大量应用为契机,实现了局域网内两台 台主机实时语音聊天。

45、只要其中任意一个用户发出语音聊天的请求,对方就会接收到 一个请求,若同意之后双方就可以进行随意的语音聊天了,并且在聊天过程中可以设 置音量的大小,最后点击结束键结束语音聊天。 首先对语音通讯流程进行分析,流程分析是整个系统的基础,它给出了语音是怎 样从一台主机捕获并发送到另一台机的整个过程。一般语音通讯系统应该包括:建立 连接,音频捕获,音频发送(包括音频压缩),音频接收,音频回放(包括音频解压) 五个部分。其基本流程为:建立连接打开麦克风捕获音频音频压缩音频传送 音频接收音频解压音频回放。 3.43.4 语音通讯系统数据流图语音通讯系统数据流图 本语音通讯系统主要是是实现在局域网内的实时语音

46、聊天,需要一台主机充当服 务器,另外的计算机连接到这台服务器上。当通信双方中的一方给对方发出语音聊天 请求后,服务器进行转发最后双方建立通信连接。在双方通信连接建立后就可以在两 台计算机之间进行点对点音频数据传输。本地主机捕获音频设备中的音频数据,并经 过压缩然后发送给对方,在对方接收到此音频数据之后经解压回放。具体数据流走向 是:一方(A方)发出请求经过服务器转发到另一方(B方),经过B方对A方提出的请 求进行处理,然后将其反馈消息返回给A方(此处假设B方选择了接受),则A方将得 到对方的IP地址并打开自己语音设备开始进行音频捕获、压缩并发送,而B方在进行 音频捕获的同时进行音频接收、解压与

47、回放。所以可以得到顶层数据流图见图3-2: 图 3-2: 顶层数据流图 Fig.3-2 The Top-level DFD 在上面顶层数据流图中,有处理语音请求、捕获音频与发送、音频接收与回放三 大处理,这三个处理分别表示: 1处理语音请求:请求方提出的语音聊天请求,经服务器进行转发给对方,然后经过 对方的处理再通过服务器将其反馈消息转发到请求方,请求方根据对方的应答消息完 成相应的动作,若对方是接受了此语音请求,则将此应答消息发送给音频捕获与发送 处理开始此次语音通信。 2捕获音频与发送:当请求方接收到对方“接受”语音请求的应答消息后,就会打开 自己的音频设备启动音频捕获处理,并将捕获到的音

48、频数据进行压缩处理之后发送给 对方。在发送给对方的过程中会用到处理语音请求过程中所得到的对方的 IP 地址。 3音频接收与回放:当对方(B)收到 A 方传过来的音频数据后,首先其会通过解压 处理而得到最初的音频数据然后在接收方的音频设备中进行回放。 根据以上分析及顶层数据流图可得细化数据流图见图 3-3: 图 3-3: 细化数据流图 Fig.3-3 The detailed DFD 第四章第四章 语音通讯系统的设计语音通讯系统的设计 4.14.1 系统结构系统结构 即时通信系统采用CS结构模式,即:服务器/客户端模式。但语音通讯模块只是 依靠服务器进行两个客户端连接的建立,当两个客户端的连接建

49、立以后,将不使用服 务器,而是采用P2P模式进行通信。因为语音数据不会再经过服务器传送到另一台主机 上去,这样既消耗服务器的资源,又增加了数据的传送时间。所以,采用这种结构, 两台主机之间就进行数据的点对点传输,既节省资源,又加快了数据的传输速度。系 统结构图见图4-1: 图4-1:系统结构模式 Fig.4-1 System architecture model 4.24.2 开发工具开发工具 由于开发基于网络的语音通讯系统,所以现在比较流行的几中语言就是 C+、JAVA 和 C#,基于几种平台和语言的比较,最终选择了 Visual Studio 2005 作为 IDE,选择 Visual C

50、#语言来实现此语音通讯系统,选择 VS2005 和 Visual C#的理由如下: Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、 XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可 以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键 技术。而

51、Visual C#是微软推出的一种比较新的一种面向对象编程语言,它使得程序员 可以快速地编写各种基于 Microsoft .NET 平台的应用程序,Microsoft .NET 提供了一 系列的工具和服务来最大程度地开发利用计算与通讯领域。因此选择 VS2005 作为 IDE 来进行此次开发。 相对以前的编程语言来说,C#语言在效率与安全性上得了很大的改善,并且支持 现有的网络编程新标准,它使程序员快速便捷地创建基于 Microsoft .NET 平台的解决 方案。这种框架使 C#组件可以方便地转化为 XML 网络服务,从而使任何平台的应用程 序都可以通过 Internet 调用它。还有,C#

52、增强了开发者的效率,同时也致力于消除编 程中可能导致严重结果的错误,使得 C/C+程序员可以快速进行网络开发,同时也保持 了开发者所需要的功能强大性和灵活性。于是笔者选择 Visual C#语言来进行此次开发。 4.34.3 流程设计流程设计 一般语音通讯系统的流程应该包括:建立连接,音频捕获,音频发送(包括音频 压缩),音频接收,音频回放(包括音频解压)五个部分。其基本流程为:建立连接 初始化麦克风(打开音频设备)捕获音频音频压缩音频传送音频接收音频 解压音频回放。其流程具体设计如下: (1)建立连接:两台计算机之间进行语音通讯,首先就是要在双方进行连接的建立, 然后双方才能够进行通讯,确定

53、数据发送到什么地方。本系统中一方先发出语音聊天 请求,并通过 XMPP 协议根据对方的 ID 把请求发送给对方,在接收方接收到请求并点 击“接受”后,接收方完成自己语音通讯相关的工作,并且再根据发送方的 ID 发送一 个消息回去,表示自己已经接受,在最初发出请求的主机接收到对方已接收请受后, 此主机也完成自己语音通讯相关的工作,至此双方的连接建立完毕,可以正常进行通 信了。 (2)音频捕获:先初始化麦克风,再打开本机的“混音器”并得其句柄,根据此句柄 调用 winmm.dll 中所提供的一系列函数进行捕获音频,并把其存放在一个数组中(因 为采用 PCM,所以捕获到的音频是一此离散的数字)。 (

54、3)音频发送:建立 Socket 连接(UDP 协议),利用 socket 的 BeginSendTo()函数 将数据发送给远程主机。这个过程中会用到 G729 提供的压缩算法对存放于数组中的数 据进行 16:1 的压缩,减少网络传输的数据量。 (4)音频接收:建立 Socket 连接(UDP 协议),利用 socket 的 BeginReceiveFrom() 函数从指定的远程主机接收数据并存放于一个数组中。 (5)音频回放:本机通过音频接收已经将远程主机发送来的音频数据保存在了一个数 组中,这里只需根据本机的“混音器”句柄调用 winmm.dll 中所提供的一系列函数进 行即可实现语音回放

55、功能。当然,这里在回放之前会先调用 G729 提供解压算法对保存 于数组中的音频数据进行解压。 4.44.4 语音通讯系统总体设计语音通讯系统总体设计 本语音通讯系统采用面向对象的基本知识,再结合系统的需求分析和基本流程, 将系统主要分为如下四个模块:登录模块,连接建立模块,音频捕获模块,音频回放 模块。其中音频捕获模块和音频回放模块又可以分为若干小的模块,最后其每一个小 的模块都采用一个类来进行实现。总体设计见图4-2: 图 4-3:登录模块流程图 Fig.4-3 Flow chart of login module 图4-2:功能模块的总体设计图 Fig.4-2 Total design

56、of function module 4.54.5 语音通讯系统详细设计语音通讯系统详细设计 .1 登录模块登录模块 这个模块是整个即时通信系统所共用的一 个模块,是进入本即时通信系统的界面,在这 个模块中主要是根据用户ID和PASSWORD(把其存 放XmppClientConnection的一个对象中)采用 XMPP协议的XmppClientConnection对象提供的 open()方法发送到指定的服务器上进行验证, 若验证成功,服务器会将其登录成功的消息以 及与此用户相关的一些信息(如:详细信息, 好友列表等到)一起返回到客户端,从而让用 户进入登录后的主界面MainF

57、rom窗体,在这个 窗体中显示了此用户可以进行的一系列操作和 图 4-5:音频捕获模块流程图 Fig.4-5Flow chart of audio capture moudle 该用户的好友列表。在用户登录进服务器的同时,在服务器中记录下此用户的ID以及 其IP地址,以便其它用户上线时查用。其流程图见图4-3: .2 建立连接模块建立连接模块 两个用户要进行语音通讯必须在一方发送请求而另一方接收请求,然后建立其连 接的情况下才能发生。此模块主要完成两个功能:一个是初始化麦克风,另一个就是 建立通信连接,从而能进行正常语音通信。 1.初始化音频设备 语音的大小可以通过音频设备进行

58、控制,所以我们必须得到音频设备的句柄最终 实现对声音大小的控制。所以我们必须初始化音频设备(其实是建立类的一个对象), 并在聊天过程中可以改变音量的大小。此初始化过程是用户点击另一个用户想进行聊 天的时候进行实现,主要是通过在我们自己定义的一个自定义控件中进行调用 AV.dll 中的 Mixer 类进行实现。其中 Mixer 类主要完成:根据给定的窗口句柄打开混音器, 获取混音器设备指定的线路信息, 获取关联音频 线路的一个或多个控制器并从控制器中得到其音 量等信息,获取指定控制器的详细信息, 设置指 定控制器的详细信息。这样我们其对象来调节麦 克风以及扬声器音量的大小。 2.建立通信连接 系

59、统中一方先发出语音聊天请求(将自己的 IP 放于一个 Oob 对象(Oob 类是 XMPP 协议提供的 一个表示语音聊天的专用类)中,并将此 Oob 对 象存于 IQ 的对象中,并设置 IQ 的相关属性 (to,Type),通过 XmppClientConnection 对象 发送给指定的用户,在服务器接收到此 IQ 信息后, 判断这是发给哪一个用户的 IQ 进而转发给该用户, 在接收方接收到此请求后,并根据发送方的 ID 进 行判断是否要与此人进行语音聊天,若选择“接 受”则表示要进行语音聊天,所以接收方会先完 图 4-4:建立通信连接流 Fig.4-4 Flow chart of erec

60、t communication link 成自己这边进行语音聊天所需进行的一些准备工作,并会用上面发送主发送请求一样 的方法发送一个消息给对方(只是 IQ 的属性值不同,如 Type=get 表示发出语音聊天 请求,Type=set 表示接受语音聊天请求 Type=result 表示拒绝语音聊天等),当最先 发出请求的一方接收到对方已接受请求后,则完成自己进行语音通信相关准备工作。 到此语音通信连接建立完成,建立通信连接流程图见图 4-4: 其中上面双方建立通信连接时,当接收方接受请求后,双方会完成自己一些语音 通信相关准备工作,这些准备工作是:通过建立语音通信类(AV)对象,并调用 AV 类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论