当我们使用像Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介绍,算是管中窥豹吧。
一.概念模型
网络语音通话通常是双向的,就模型层面来说,这个双向是对称的。为了简单起见,我们讨论一个方向的通道就可以了。一方说话,另一方则听到声音。看似简单而迅捷,但是其背后的流程却是相当复杂的。我们将其经过的各个主要环节简化成下图所示的概念模型:
这是一个最基础的模型,由五个重要的环节构成:采集、编码、传送、解码、播放。
1.语音采集
语音采集指的是从麦克风采集音频数据,即声音样本转换成数字信号。其涉及到几个重要的参数:采样频率、采样位数、声道数。
简单的来说:采样频率,就是在1秒内进行采集动作的次数;采样位数,就是每次采集动作得到的数据长度。
而一个音频帧的大小就等于:(采样频率×采样位数×声道数×时间)/8。
通常一个采样帧的时长为10ms,即每10ms的数据构成一个音频帧。假设:采样率16k、采样位数16bit、声道数1,那么一个10ms的音频帧的大小为:(16000*16*1*0.01)/8 = 320 字节。计算式中的0.01为秒,即10ms。
2.编码
假设我们将采集到的音频帧不经过编码,而直接发送,那么我们可以计算其所需要的带宽要求,仍以上例:320*100 =32KBytes/s,如果换算为bits/s,则为256kb/s。这是个很大的带宽占用。而通过网络流量监控工具,我们可以发现采用类似QQ等IM软件进行语音通话时,流量为3-5KB/s,这比原始流量小了一个数量级。而这主要得益于音频编码技术。
所以,在实际的语音通话应用中,编码这个环节是不可缺少的。目前有很多常用的语音编码技术,像G.729、iLBC、AAC、SPEEX等等。
3.网络传送
当一个音频帧完成编码后,即可通过网络发送给通话的对方。对于语音对话这样Realtime应用,低延迟和平稳是非常重要的,这就要求我们的网络传送非常顺畅。
4.解码
当对方接收到编码帧后,会对其进行解码,以恢复成为可供声卡直接播放的数据。
5.语音播放
完成解码后,即可将得到的音频帧提交给声卡进行播放。
二.实际应用中的难点及解决方案
如果仅仅依靠上述的技术就能实现一个效果良好的应用于广域网上的语音对话系统,那就没什么太大的必要来撰写此文了。正是有很多现实的因素为上述的概念模型引入了众多挑战,使得网络语音系统的实现不是那么简单,其涉及到很多专业技术。当然,这些挑战大多已经有了成熟的解决方案。首先,我们要为“效果良好”的语音对话系统下个定义,我觉得应该达到如下几点:
(1)低延迟。只有低延迟,才能让通话的双方有很强的Realtime的感觉。当然,这个主要取决于网络的速度和通话双方的物理位置的距离,就单纯软件的角度,优化的可能性很小。
(2)背景噪音小。
(3)声音流畅、没有卡、停顿的感觉。
(4)没有回音。
下面我们就逐个说说实际网络语音对话系统中额外用到的技术。
1.回音消除 AEC
现在大家几乎都已经都习惯了在语音聊天时,直接用PC或笔记本的声音外放功能。殊不知,这个小小的习惯曾为语音技术提出了多大的挑战。当使用外放功能时,扬声器播放的声音会被麦克风再次采集,传回给对方,这样对方就听到了自己的回音。所以,实际应用中,回音消除的功能是必需的。
在得到采集的音频帧后,在编码之前的这个间隙,是回音消除模块工作的时机。
其原理简单地来说就是,回音消除模块依据刚播放的音频帧,在采集的音频帧中做一些类似抵消的运算,从而将回声从采集帧中清除掉。这个过程是相当复杂的,而且其还与你聊天时所处的房间的大小、以及你在房间中的位置有关,因为这些信息决定了声波反射的时长。 智能的回音消除模块,能动态调整内部参数,以最佳适应当前的环境。
2.噪声抑制 DENOISE
噪声抑制又称为降噪处理,是根据语音数据的特点,将属于背景噪音的部分识别出来,并从音频帧中过滤掉。有很多编码器都内置了该功能。
3.抖动缓冲区 JitterBuffer
抖动缓冲区用于解决网络抖动的问题。所谓网络抖动,就是网络延迟一会大一会小,在这种情况下,即使发送方是定时发送数据包的(比如每100ms发送一个包),而接收方的接收就无法同样定时了,有时一个周期内一个包都接收不到,有时一个周期内接收到好几个包。如此,导致接收方听到的声音就是一卡一卡的。
JitterBuffer工作于解码器之后,语音播放之前的环节。即语音解码完成后,将解码帧放入JitterBuffer,声卡的播放回调到来时,从JitterBuffer中取出最老的一帧进行播放。
JitterBuffer的缓冲深度取决于网络抖动的程度,网络抖动越大,缓冲深度越大,播放音频的延迟就越大。所以,JitterBuffer是利用了较高的延迟来换取声音的流畅播放的,因为相比声音一卡一卡来说,稍大一点的延迟但更流畅的效果,其主观体验要更好。
当然,JitterBuffer的缓冲深度不是一直不变的,而是根据网络抖动程度的变化而动态调整的。当网络恢复到非常平稳通畅时,缓冲深度会非常小,这样因为JitterBuffer而增加的播放延迟就可以忽略不计了。
4.静音检测 VAD
在语音对话中,要是当一方没有说话时,就不会产生流量就好了。静音检测就是用于这个目的的。静音检测通常也集成在编码模块中。静音检测算法结合前面的噪声抑制算法,可以识别出当前是否有语音输入,如果没有语音输入,就可以编码输出一个特殊的的编码帧(比如长度为0)。
特别是在多人视频会议中,通常只有一个人在发言,这种情况下,利用静音检测技术而节省带宽还是非常可观的。
5.混音算法
在多人语音聊天时,我们需要同时播放来自于多个人的语音数据,而声卡播放的缓冲区只有一个,所以,需要将多路语音混合成一路,这就是混音算法要做的事情。即使,你可以想办法绕开混音而让多路声音同时播放,那么对于回音消除的目的而言,也必需混音成一路播放,否则,回音消除最多就只能消除多路声音中的某一路。
混音可以在客户端进行,也可以在服务端进行(可节省下行的带宽)。如果使用了P2P通道,那么混音就只能在客户端进行了。如果是在客户端混音,通常,混音是播放之前的最后一个环节。
综合上面的概念模型以及现实中用到的网络语音技术,下面我们给出一个完整的模型图:
本文是我们在实现OMCS语音部分功能的一个粗略的经验总结。在这里,我们只是对图中各个环节做了一个最简单的说明,而任何一块深入下去,都可以写成一篇长篇论文甚至是一本书。所以,本文就算是为那些刚刚接触网络语音系统开发的人提供一个入门的地图,给出一些线索。
至此,在网络语音技术基础上再引出视频技术,可以借鉴一些SDK资料,
商用或学习都可以使用的,下载SDK可到CSDN上:
http://dldx.csdn.net/fd.php?i=447645132231776&s=ef991809163c5ef73ba9560d77bc6294
相关推荐
浅谈计算机网络技术应用与发展 计算机网络技术是一种新型技术,通过计算机技术与通信技术的结合,实现了不同计算机之间的相互连接,具有非常重要的作用。在社会经济中,计算机网络技术的应用极其广泛,涉及到各个...
以上是对【标题】"浅谈人工智能关键技术研究与应用.pdf"中提及的关键知识点的详细解读,涉及人工智能的核心技术以及它们在不同领域的应用。希望这些知识点能够给相关人员提供有价值的参考和指导。
例如,数据处理涉及各类统计数据,文字处理则包括文档的创建、编辑和管理,语言处理如语音识别和合成,图像处理涉及图像分析和图形生成,而网络支持则确保了多部门间的协同办公。 在实际应用中,办公自动化可以分为...
浅谈基于语音识别的智能视频会议系统 智能视频会议系统是近年来随着大规模通信网络建设而广泛应用的一种会议形式。传统的视频会议系统已经不能满足当前的需求,为了提高视频会议系统的服务质量和效率,本文探讨了...
### 浅谈信息技术 #### 一、信息技术的基本概念 信息技术(Information Technology,简称IT),是一种广泛的概念,涵盖了管理和处理信息所需的各类技术。信息技术的核心在于利用计算机科学和通信技术设计、开发、...
《浅谈无线网络通信技术的发展》 随着科技的飞速进步,无线网络通信技术已成为现代社会不可或缺的一部分,它在各个领域中的应用不断拓展,从航空航天、军事到日常生活的方方面面,都离不开无线通信技术的支持。本文...
### Mesh网络技术浅谈 #### 一、Mesh网络概述 Mesh网络作为一种新兴的网络技术,在近年来得到了迅速的发展和广泛的应用。Mesh网络的核心理念在于构建一个由多个节点组成的自组织网络,其中每个节点不仅可以作为...
“浅谈网络安全中的身份认证技术” 身份认证是网络安全的基石, garantieing 用户身份的真实性和合法性。该技术在网络安全中扮演着至关重要的角色,protecting 用户隐私和敏感信息。下面是浅谈网络安全中的身份认证...
【网络语境与网络语言特点】\n\n网络语境是指在互联网环境下,人们进行交流的语言使用环境,它包括各种在线平台,如聊天室...随着网络技术的进步和社会趋势的变化,网络语言将继续发展,形成更多适应网络语境的新特征。
《浅谈基于路由器的网络技术》这篇文章探讨了路由器在网络技术中的重要作用,以及其在不同应用场景下的分类和工作原理。路由器是计算机网络通信中至关重要的设备,尤其在TCP/IP协议体系中,它工作在网络层,负责根据...
【网络技术环境对小学英语教学的影响】 随着网络技术的发展,教育领域正经历着深刻的变革,尤其是在小学阶段的英语教学中。网络技术不仅提供了丰富的教学资源,还改变了学习方式,激发了学生的学习兴趣,提升了教学...
计算机网络安全技术是当前信息技术领域的重要研究方向,随着互联网的普及,网络已经成为人们日常生活和工作中不可或缺的一部分。然而,网络的开放性和互联性同时也带来了安全隐患。本文将对计算机网络安全进行简要...
未来人工智能在计算机网络技术中的应用还将不断深化和拓展,涉及到网络的各个层面,包括但不限于数据挖掘、模式识别、智能控制、自然语言理解等方面,这将极大地提高网络的智能水平和应用价值。随着技术的不断发展和...
网络语言作为信息时代的一个重要特征,其产生与普及反映出社会、文化和技术的深刻变革。网络语言的萌芽、发展和壮大,既体现了语言的创新与适应性,也揭示了社会结构与人们交流方式的变化。 首先,网络语言的诞生...
这篇文档“浅谈现代信息技术在幼儿园语言教学中的运用”可能详细探讨了如何有效地利用这些技术手段来提升幼儿的语言学习效果。 首先,信息技术为幼儿园语言教学提供了丰富的多媒体资源。如音频故事、动画视频、互动...
移动交换无线网络联合优化技术是近年来随着移动通信技术发展而出现的一项重要技术,它的主要目的是提高移动通信网络的服务质量和用户体验。在市场竞争日益激烈的背景下,各大移动运营商面临着如何增强用户开发能力、...
【网络技术在小学语文阅读教学中的应用】 随着信息化时代的快速发展,网络技术已逐渐渗透到教育领域,对各学科的教学方式产生了深远影响。在小学语文阅读教学中,巧妙地结合网络技术,不仅可以提升教学效率,还能...
根据提供的文件内容,以下是对“社交网络数据挖掘技术浅谈.pdf”中涵盖的关键知识点的详细解释: 1. 社交网络数据挖掘的重要性 在大数据时代背景下,社交网站包含了大量信息数据。如何有效利用这些数据,成为了研究...