音频格式Opus和Speex对比分析

1. Opus

  Opus编码器 是一个有损声音编码的格式,由IETF的编解码器工作组设计的,合并了Skype的SILK和Xiph. Org的CELT技术。
  opus是一个低延时、高保真的适合在网络中传输的开源的语音编码格式,相对于其他编码格式来讲,保真性更好,但体积会稍微大一些。Opus 格式是一个开放格式,使用上没有任何专利或限制。通过诸多的对比测试,低码率下Opsu完胜曾经优势明显的HE AAC,中码率就已经可以媲敌码率高出30%左右的AAC格式,而高码率下更接近原始音频,它可以适用于从低码率窄带语音到非常高质量的立体声音乐。

标准格式可参考: RFC 6716

官网地址:http://www.opus-codec.org/

它的主要特点是:
  • 采样率从8至48 kHz
  • 比特率从6kb/s到510kb/s
  • 对固定码率(CBR)和可变码率(VBR)都能支持
  • 从窄带到宽带的音频带宽
  • 支持语音和音乐
  • 支持单声道和立体声
  • 支持多通道(最多255通道)
  • 帧规格从2.5毫秒到60毫秒
  • 良好的损失鲁棒性和包丢失隐藏性(PLC)(注:应是指丢包也不容易被发现)
  • 浮点和定点执行
接口调用可参考博文 https://blog.csdn.net/liuhongxiangm/article/details/52919951

2. Speex

  Speex是一套主要针对语音的开源免费、无专利保护的音频压缩格式,是基于CELP并且专门为码率在2-44kbps的语音压缩而设计的。
  Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。
它的主要特点是:
  • 窄带(8kHz),宽带(16kHz)和超宽带(32kHz)压缩于同一位流
  • 强化立体编码
  • 数据包丢失隐蔽
  • 可变比特率(VBR)
  • 语音捕捉(VAD)
  • 非连续传输(DTX)
  • 定点运算
  • 感官回声消除(AEC)
  • 噪音屏蔽

3. Slik

  SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。
它的主要特点:
  • 支持4种采样率:8KHz、12KHz、16KHz、24KHz;三种复杂度:低、中、高;
  • 编码码率在 6~40kbps(不同采样率具有不同的码率范围),即使丢包水平达到10%依然可以稳定维持24KHz采样的通话音质.;
  • 支持VAD、DTX、FEC等模块;
  • 强化立体编码
  • 强化立体编码

最重要的一点是提供了定点C代码,非常有利于向ARM、DSP移植和优化。Skype投入了数百万美元,耗时三年多开发了Silk,他们表示Silk可以使VoIP通话听起来好像你和对话的人在同一间房子里一样。大部分电话只能传输3.4kHz(码率)的信号,而Silk可以让Skype传输高达12kHz的信号,,现已开源。

源码地址: http://developer.skype.com/silk。
应用参考地址: https://blog.csdn.net/xyz_lmn/article/details/8015619
标准地址:http://tools.ietf.org/html/draft-vos-silk-01

4. 篇外话

为什么要进行编码?我们通过一个案例来说明。

录制音频属性:
采样频率: fm = 44.1KHz
量化位数:16bit         //可以较为详细的表示声音的幅度
声道配置:2(双声道)

  如果直接使用录制音频流并发送到另一端进行播放,则有码率 V = 44.1K * 16 *2 = 1411.2 Kbps = 176.4KBps,即每秒需要传输速率大概176.4KB。
一个音频帧时长为20ms,每个音频数据包大小为 size = 176.4KBps * 0.02s = 3.528KB,可以取整为3600Byte。
  那么,每秒大概发送 176.4/3.6=49 个数据包,每个数据包大小为3.6KB。
  如果再考虑到数据报头,实测每秒发送约45个数据包,每秒传输速率大概180KB。这就要求网络质量和硬件设备必须很好,而且信道干扰较弱,并且链接的设备不能过多。只要稍微信号不好,就会导致丢包率特别高,而且延时十分大,根本无法满足通信的需要。
所以需要进行语音压缩、降噪等处理。

你可能感兴趣的:(音频格式Opus和Speex对比分析)