0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

网络语音通话运用了哪些技术?

Dbwd_Imgtec 来源:未知 作者:易水寒 2018-08-12 11:38 次阅读

当我们使用像Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介绍,算是管中窥豹吧。

一、概念模型

网络语音通话通常是双向的,就模型层面来说,这个双向是对称的。为了简单起见,我们讨论一个方向的通道就可以了。一方说话,另一方则听到声音。看似简单而迅捷,但是其背后的流程却是相当复杂的。我们将其经过的各个主要环节简化成下图所示的概念模型:

这是一个最基础的模型,由五个重要的环节构成:采集、编码、传送、解码、播放。

1. 语音采集

语音采集指的是从麦克风采集音频数据,即声音样本转换成数字信号。其涉及到几个重要的参数:采样频率、采样位数、声道数。

简单的来说:采样频率,就是在1秒内进行采集动作的次数;采样位数,就是每次采集动作得到的数据长度。

而一个音频帧的大小就等于:(采样频率×采样位数×声道数×时间)/8。

通常一个采样帧的时长为10ms,即每10ms的数据构成一个音频帧。假设:采样率16k、采样位数16bit、声道数1,那么一个10ms的音频帧的大小为:(16000*16*1*0.01)/8 = 320 字节。计算式中的0.01为秒,即10ms。

附:可以参考了解语音视频采集组件MCapture相关介绍及Demo源码与SDK下载

2. 编码

假设我们将采集到的音频帧不经过编码,而直接发送,那么我们可以计算其所需要的带宽要求,仍以上例:320*100 =32KBytes/s,如果换算为bits/s,则为256kb/s。这是个很大的带宽占用。而通过网络流量监控工具,我们可以发现采用类似QQ等IM软件进行语音通话时,流量为3-5KB/s,这比原始流量小了一个数量级。而这主要得益于音频编码技术。

所以,在实际的语音通话应用中,编码这个环节是不可缺少的。目前有很多常用的语音编码技术,像G.729、iLBC、AAC、SPEEX等等。

3. 网络传送

当一个音频帧完成编码后,即可通过网络发送给通话的对方。对于语音对话这样Realtime应用,低延迟和平稳是非常重要的,这就要求我们的网络传送非常顺畅。

4. 解码

当对方接收到编码帧后,会对其进行解码,以恢复成为可供声卡直接播放的数据。

5. 语音播放

完成解码后,即可将得到的音频帧提交给声卡进行播放。

附:可以参考了解语音播放组件MPlayer相关介绍与Demo源码与SDK下载

二、实际应用中的难点及解决方案

如果仅仅依靠上述的技术就能实现一个效果良好的应用于广域网上的语音对话系统,那就没什么太大的必要来撰写此文了。正是有很多现实的因素为上述的概念模型引入了众多挑战,使得网络语音系统的实现不是那么简单,其涉及到很多专业技术。当然,这些挑战大多已经有了成熟的解决方案。首先,我们要为“效果良好”的语音对话系统下个定义,我觉得应该达到如下几点:

低延迟。只有低延迟,才能让通话的双方有很强的Realtime的感觉。当然,这个主要取决于网络的速度和通话双方的物理位置的距离,就单纯软件的角度,优化的可能性很小。

背景噪音小。

声音流畅、没有卡、停顿的感觉。

没有回音。

下面我们就逐个说说实际网络语音对话系统中额外用到的技术。

1. 回音消除 AEC

现在大家几乎都已经都习惯了在语音聊天时,直接用PC或笔记本的声音外放功能。殊不知,这个小小的习惯曾为语音技术提出了多大的挑战。当使用外放功能时,扬声器播放的声音会被麦克风再次采集,传回给对方,这样对方就听到了自己的回音。所以,实际应用中,回音消除的功能是必需的。

在得到采集的音频帧后,在编码之前的这个间隙,是回音消除模块工作的时机。

其原理简单地来说就是,回音消除模块依据刚播放的音频帧,在采集的音频帧中做一些类似抵消的运算,从而将回声从采集帧中清除掉。这个过程是相当复杂的,而且其还与你聊天时所处的房间的大小、以及你在房间中的位置有关,因为这些信息决定了声波反射的时长。 智能的回音消除模块,能动态调整内部参数,以最佳适应当前的环境。

2. 噪声抑制 DENOISE

噪声抑制又称为降噪处理,是根据语音数据的特点,将属于背景噪音的部分识别出来,并从音频帧中过滤掉。有很多编码器都内置了该功能。

3. 抖动缓冲区 JitterBuffer

抖动缓冲区用于解决网络抖动的问题。所谓网络抖动,就是网络延迟一会大一会小,在这种情况下,即使发送方是定时发送数据包的(比如每100ms发送一个包),而接收方的接收就无法同样定时了,有时一个周期内一个包都接收不到,有时一个周期内接收到好几个包。如此,导致接收方听到的声音就是一卡一卡的。

JitterBuffer工作于解码器之后,语音播放之前的环节。即语音解码完成后,将解码帧放入JitterBuffer,声卡的播放回调到来时,从JitterBuffer中取出最老的一帧进行播放。

JitterBuffer的缓冲深度取决于网络抖动的程度,网络抖动越大,缓冲深度越大,播放音频的延迟就越大。所以,JitterBuffer是利用了较高的延迟来换取声音的流畅播放的,因为相比声音一卡一卡来说,稍大一点的延迟但更流畅的效果,其主观体验要更好。

当然,JitterBuffer的缓冲深度不是一直不变的,而是根据网络抖动程度的变化而动态调整的。当网络恢复到非常平稳通畅时,缓冲深度会非常小,这样因为JitterBuffer而增加的播放延迟就可以忽略不计了。

4. 静音检测 VAD

在语音对话中,要是当一方没有说话时,就不会产生流量就好了。静音检测就是用于这个目的的。静音检测通常也集成在编码模块中。静音检测算法结合前面的噪声抑制算法,可以识别出当前是否有语音输入,如果没有语音输入,就可以编码输出一个特殊的的编码帧(比如长度为0)。

特别是在多人视频会议中,通常只有一个人在发言,这种情况下,利用静音检测技术而节省带宽还是非常可观的。

5. 混音算法

在多人语音聊天时,我们需要同时播放来自于多个人的语音数据,而声卡播放的缓冲区只有一个,所以,需要将多路语音混合成一路,这就是混音算法要做的事情。即使,你可以想办法绕开混音而让多路声音同时播放,那么对于回音消除的目的而言,也必需混音成一路播放,否则,回音消除最多就只能消除多路声音中的某一路。

混音可以在客户端进行,也可以在服务端进行(可节省下行的带宽)。如果使用了P2P通道,那么混音就只能在客户端进行了。如果是在客户端混音,通常,混音是播放之前的最后一个环节。

综合上面的概念模型以及现实中用到的网络语音技术,下面我们给出一个完整的模型图:

本文是我们在实现OMCS语音部分功能的一个粗略的经验总结。在这里,我们只是对图中各个环节做了一个最简单的说明,而任何一块深入下去,都可以写成一篇长篇论文甚至是一本书。所以,本文就算是为那些刚刚接触网络语音系统开发的人提供一个入门的地图,给出一些线索。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Skype
    +关注

    关注

    0

    文章

    27

    浏览量

    13900
  • 噪声抑制
    +关注

    关注

    0

    文章

    29

    浏览量

    12164
  • 语音通话
    +关注

    关注

    0

    文章

    29

    浏览量

    9413

原文标题:浅谈网络语音技术

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    干货!全面解析几种LTE语音通话技术

    over LTE”,翻译过来可以理解为一种“通过LTE网络传输的语音技术”。那么,什么是VoLTE语音技术、基于4G LTE
    发表于 04-10 10:09 2.4w次阅读

    基于ZigBee网络语音应急通信可行性研究

     基于ZigBee网络语音应急通信可行性研究简要介绍ZigBee无线网络技术以及电信行业通话质量的评估标准。通过仿真模拟,对ZigBee无线信道上的VoIP和PTT两种
    发表于 09-19 09:25

    移动视频语音通话/全平台视频监控/视频直播源码出售

    移动视频语音通话/全平台视频监控/视频直播源码出售移动端视频采集:通过android系统采集视频,并实时在3G环境下将视频传输到总部扩展灵活:支持3G/wifi等无线网络,效果商业运营保证高清视频
    发表于 03-19 15:53

    移动视频语音通话/全平台视频监控/视频直播源码出售

    移动视频语音通话/全平台视频监控/视频直播源码出售移动端视频采集:通过android系统采集视频,并实时在3G环境下将视频传输到总部扩展灵活:支持3G/wifi等无线网络,效果商业运营保证高清视频
    发表于 03-31 09:30

    可实现通话语音芯片有哪些,求推荐

    想做个东西实现与手机通话,求问有什么合适的语音芯片
    发表于 09-14 10:29

    多方通话中的语音优先技术

      语音通信实时性要求较高。为了保证提供高音质的IP 电话通信,在带宽不足、信息拥挤不堪的iP 网络上,一般需要采用语音优先技术。  当广域网(WAN ) 带宽低于512kbit/s
    发表于 12-30 17:20

    Mate30 SA终端语音通话不能正常回落至4G网络

    Mate30 SA终端语音通话不能正常回落至4G网络
    发表于 03-02 07:31

    启英泰伦通话降噪方案,采用深度学习降噪算法,让通话更清晰

    生活中的通话应用场景无处不在,如电话、对讲机、远程会议、在线教育等。普遍存在的问题是环境噪音、干扰声导致通话声音不清晰,语音失真等。 为了解决这一问题,启英泰伦基于自适应线性滤波联合非线性滤波的回声
    发表于 08-22 17:36

    SRVCC语音技术

    SRVCC(单一无线语音呼叫连续性)实现从LTE网络到WCDMA网络的首次语音呼叫切换。作为支持LTE网络
    发表于 02-08 15:18 2145次阅读

    基于VoWLAN终端实现无线VoIP语音通话解决方案

    本文介绍通过VoWLAN终端利用现有WLAN网络,实现无线VoIP无线语音通话的几种解决方案,并介绍方案具体的构成组件。
    发表于 12-14 14:10 3366次阅读

    中移动称4G通话比2G清晰 语音通话质量提升2倍

    6月27日消息,中移动首次发布了关于4G语音技术白皮书,能将采用VoLTE技术语音呼叫切换至2G/3G网络上,
    发表于 06-27 11:09 1.4w次阅读

    Volte是基于IMS域的纯IP的语音通话技术

    现在三大运营商都开始了Volte的商用(联通是试商用),Volte可以带来语音的提升,但是现在在大多数的地区,不仅仅需要两台手机都支持Volte,而且需要是同一运营商之间的通话才属于高清通话,才可以带来
    发表于 10-14 10:14 2808次阅读

    VoLTE语音通话究竟是一个什么样的技术

    随着通信技术飞速发展,以往2G、3G时代的数据语音传输已经无法满足用户需求了,大家都在期待更高质量的高通通话或者视频通话,对此2G、3G网络
    发表于 10-31 10:56 3008次阅读
    VoLTE<b class='flag-5'>语音</b><b class='flag-5'>通话</b>究竟是一个什么样的<b class='flag-5'>技术</b>

    高通和中兴通讯利用5G网络实现了语音通话

    语音服务是移动运营商提供的基础性服务,利用5G网络实现语音通话被称为新空口承载语音(VoNR)。实现VoNR
    发表于 01-07 09:44 701次阅读

    卫星通话网络通话如何相互转换?

    卫星通话网络通话如何相互转换? 在当今信息化社会,通信和信息的传播变得越来越发达。无线通信,尤其是卫星通信的出现,极大地改变了人们之间的通信方式。人们在地球上可以使用网络
    的头像 发表于 08-30 17:27 1714次阅读