您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

Asterisk课堂-语音编码介绍

2017-01-16 16:26:33   作者:james.zhu   来源:asterisk   评论:0  点击:


\      
  Asterisk系统支持了多种语音编码来适应市场的需求,例如WebRTC中的Opus 语音编码。但是目前,大部分的使用场景还是G.711和G.729等几个主要的编码。我们需要首先说明的是,语音编码研究领域是一个非常复杂的领域,笔者不是这方面的专家,仅对此有一定的应用经验。如果用户需要了解语音编码的算法,请参考相关的科学文献资料来学习。这里,笔者目前仅对Asterisk当前使用的几种编码进行一个基本介绍。
  视频中介绍了几种编码的特点和各自的特点:
  本章节主要介绍几个在Asterisk环境中关于语音编码的相关问题。它们包括:语音编码的基本属性,使用语音编码原因,几种语音编码的各自的特点。
  语音编码包括四个基本的属性,它们是:Sampling rate,Packet size,Complexity,Bandwidth。 语音首先经过空气传播,并且通过一定的设备采集了语音以后,经过设备的处理,完成数字转换,最后转化成一定的数据形式,通过网络或者其他设备发送到相应的目的地。对于语音电话系统来说,根据数字通信之父Nyquist的采样定律,8kHz是可以满足窄带采样率的要求。这个过程就涉及了以上这四个属性。因为要适应不同的环境和设备的要求,采样律可能有所不同。Packet size 是语音的打包时长,顾名思义就是在一定时间内语音文件在传输之前打包帧数据需要的时间。因为不同编码的传输带宽要求不同,语音数据以帧的方式来测试,这样需要要求在一定时间内对每个帧数据进行打包,以便稳定地发送到对端。一般都限定在20毫秒内完成,有的语音编码可支持灵活配置。语音编码算法的计算复杂度和带宽,CPU有着非常紧密的联系,采用不同算法会消耗不同的系统资源,例如需要高压缩比的编码还是低压缩比的编码。这样就会导致网络带宽占用的不同。Bandwidth 是一个核心的考虑因素,为了节省带宽,很多用户考虑使用G.729 编码。但是,G.729 会提高部署成本。
\
\
\
  为什么在asterisk中使用语音编码? 根据上面的介绍,因为网络的不同和终端的不同,导致通话使用的语音编码不同,双方不同的语音编码不会实现正常的通话。这时,需要Asterisk来进行一个语音编码的转换功能,这样会导致系统CPU负载增加,可能影响系统的稳定性。
\
\
  Asterisk环境中常用编码的特点。在目前经常使用的几种语音编码中,大部分用户需要使用G.711 或者G.729 编码。G.711 使用在传统的PSTN语音接入环境中,G.729 则使用在IP测定语音编码环境,例如现在的SIP中继或者IMS。为了保证系统的稳定性,选择语音编码时管理员需要考虑几个方面的因素,例如语音质量,带宽占用比,CPU消耗情况,部署费用的问题。当然管理员也只能在这几个因素之间做一个平衡和妥协。图例中列出了它们各自的特点。如果采用了G.729编码,在系统部署时要考虑编码转换的问题。编码转化的成本大约一路差不多10美金左右。编码转换的解决方案包括通过IMS设备或者语音编码卡来解决,也可以购买Digium官方的软件许可证来支持。另外,还有免费的编码解决方案,但是这里提醒大家,这种解决方案不能使用在商业的环境中,以免引起法律方面的纠纷,同时语音质量也得不到保障。管理员在部署Asterisk服务器时,笔者建议用户使用计算工具来计算出不同编码的带宽占用比,这样可以获得一个大概部署预算费用。
\
\
  本章节简单讨论了语音编码的基本概念和相关的几个参数,也讨论了为什么使用不同的语音编码,还有几个不同语音编码的特点。另外,我们这里没有讨论宽带的编码和其他高清编码,还有最新的Opus 和其他编码类型。当然,这些编码也逐渐支持了Asterisk环境。因为网络环境不同,终端不同,笔者建议用户需要根据自己的网络环境做进一步的测试来保证系统的语音质量。

相关阅读:

专题