- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公众号:asterisk-cn
- Asterisk课堂-如何通过源代码安装方式安装Asteisk/dahdi
- Asterisk课堂-系统部署环境要求
- Asterisk课堂-Asterisk技术架构
- Asterisk课堂-拨号规则基础
- Asterisk课堂-创建第一个拨号规则
- Asterisk课堂-拨号规则中的Contexts
- Asterisk课堂-拨号规则中变量的使用
- Asterisk课堂-拨号规则中的Extensions用法
- Asterisk课堂-拨号规则中匹配模式
- Asterisk课堂-IAX2 介绍
- Asterisk课堂-IAX2 呼叫流程
- Asterisk课堂-SIP介绍
- Asterisk课堂-SIP呼叫流程
- Asterisk课堂-终端注册
- Asterisk课堂-SIP Trunk
- Asterisk课堂-SIP和NAT
- Asterisk课堂-拨号规则中的Include使用方法
- Asterisk课堂-拨号规则中的语音播放
- Asterisk课堂-DTMF 介绍
- Asterisk课堂-语音IVR基础
- Asterisk课堂-Timeout 超时设置
- Asterisk课堂-CLI 使用方法
- Asterisk课堂-关于Input DTMF介绍
- Asterisk课堂-拨号规则中呼叫控制
- Asterisk课堂-如何使用Debug
- Asterisk课堂-拨号规则中的优先级
- 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环境。因为网络环境不同,终端不同,笔者建议用户需要根据自己的网络环境做进一步的测试来保证系统的语音质量。