• 1.摘要
  • 2.基本信息
  • 3.原理介绍
  • 4.解决方法
  • 5.介绍
  • 6.源代码分析
  • 7.公共协议
  • 8.实例介绍
  • 8.1.程序的结构
  • 8.2.类名描述
  • 9.程序工作流程
  • 10.编写代码摘要

语音聊天室

1 双方之间的网络连接 要进行频数据的传输,首先就是要建立数据连结。常用的通讯协议中,TCP较可靠,所以用在不允许数据丢失的应用上。而UDP则较多应用于处理速度要求较快、数据传输可靠性要求不是很高的应用上,如数据广播。通信协议的选择取决于我们所要做的应用的类型。怎样建立网络连接,稳定的接收和发送音频信号的数据流是关键。

基本信息

  • 中文名

    语音聊天室

  • 外文名

    Voice Chat Room

原理介绍

在网络上传输音频的方面存在的问题主要可以归纳为以下几点:

信号采集回放

在进行音频信号的采集中我们必须考虑到采样率的问题,声音信号的采样率有8Khz、16Khz、32Khz、44Khz等,每种数据采样虑产生的数据量都不一样,越高的采样率产生的数据量越大,所以我们要选择合适的采样率以适应网络的带宽。

信号编码解码

语音聊天室

如果把直接采集到的音频信号数据流在网络上进行传输,它所占有的带宽也是十分大的,以8Khz的采样率采集14位的音频数据那么就有以下这样的一个式子:

从中我们可以看出以这样的方式传输音频数据,每秒需要向网络中发送112kb的数据。所以。从节省带宽的角度考虑,我们很有必要对这样的数据进行压缩。对多媒体信号的压缩我们有许多可以选择的格式,如mp2、mp3、GSM等等,现在用的最多的是MP3格式。同样,我们这里也存在一个对压缩格式进行选择的问题,考虑到音频数据传输的及时性,对传输的音频数据质量的要求,以及各种压缩格式的压缩比率以及进行压缩和解压缩所要耗费的系统资源等方面问题,选择合适的压缩格式就显得尤为重要。

解决方法

下面就针对前面提出的问题讨论一下解决的办法

双方之间的网络连接

在这方面有其独特的优势,Java提供了丰富的网络类库的支持,可以轻松编写多种类型的网络通信程序。在我下面的例子中我就使用了TCP/IP协议,通过Java的Socket类进行编程2音频信号的采集和回放以及音频数字信号的编码与解码 在解决这两个问题的时候,在网上很幸运地通过一些文章的介绍,找到了Answer Machine 演示程序的源代码(由of j的Florian Bomers 和Matthias Pfisterer编写,网址在这个程序代码中,有几个解决我们问题所需要的类,而且作者将这些类封装的很好,我们基本不需要做什么改动,只需要屏蔽其中的调试信息的输出就行了,更可贵的是它还封装了几种常见的音频格式。其中的GSM格式(Global System for Mobile Telecommunications)就是我们下面例子中采用的压缩格式,GSM格式可以将128kbps 的音频数据流 (16bit通过8k Hz的音频采样) 压缩为13kbps 的音频数据流,非常适合语音信号的传送,所以可谓是一石二鸟。

介绍

1、考米网

“考米网”是深圳市盈华讯方通信技术有限公司领先推出的能够电话聊天交友的网站,在网络交友的基础上增添电话聊天,提供一对一通话、多人通话、二人电话约会、自建会议聊天室、电话中发送的语音短讯,设置个性化个人资料等十几种功能。在不方便使用电脑的时候,也能通过手机、电话拨打400热线,随时和网上的好友保持联系。

2、YY聊天

是一种YY团队语音工具,是多玩游戏网针对中文用户设计的多人语音群聊工具。 它是一款免费语音软件,稳定清晰的语音工具,用于游戏玩家交流等。即时通话,是一款不错的通讯软件。

3、ISpeak

ISpeak娱乐互动平台(简称IS),是国内专业游戏语音服务商,拥有上千万注册用户,每天活跃用户上百万,公会频道近10万个的规模,已经成为国内一流的语音互动平台。