Speex、Opus、iLBC(三种较新的音频编码)

Speex



编码类型:CELP

编码速率:2.5 – 24.6kbps(NB模式) ;4 – 44.2kbps(WB模式)

理论延时:30ms(NB模式)/34ms(WB模式)

采样率:8 /16/32kHz

音质:长途质量 – 近CD;

优点:解决方案全面,已被大量互联网软件采用;

缺点:已被赶超;

应用领域:VOIP;

版税方式:免费

Speex是一套主要针对互联网语音的开源免费,无专利保护的音频编码器,是基于CELP并且专门为码率在2-44kbps的语音压缩而设计的。相对于其它编解码器,speex在网络应用上有着自己独特的优势。Speex是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。

Speex不仅仅是个编码器,它还包含很多音频处理,网络处理等的开源模块。

Speex的特点如下:

l 全开源,免费。

l 码率支持2.25 - 44kbps

l 支持VBR(Variable Bit-Rate)动态码率调整。

l 支持VAD(Voice Activity Detection)语音检测。

l 支持DTX(discontinuous transmission)非连续传输。

l 支持立体声。

l 支持去噪。

l 支持AGC(automatic gain control)自动语音增益。

l 支持AEC(Acoustic Echo Canceller)回声消除。

l 支持音频的升降采样。

l 支持自适应网络抖动缓冲,Adaptive Jitter Buffer。

l 支持PLC(Packet loss concealment)网络丢包消隐。

l 支持语音增强。

因为Speex开源较早(2003-2008),并且对互联网音频解决方案较全面,所以早期被大量针对低带宽的VOIP产品选用。但英雄迟暮,目前其官网(http://www.speex.org)是承认speex编解码器已被opus全面超越,建议用户用opus替代speex。

根据评测,Speex与 iLBC当二者的编码速率差不多时,iLBC的质量要好于Speex。


iLBC



编码类型:Block independent LPC

编码速率:13.33/15.20kbps;

理论延时:30ms/20ms

采样率:8 kHz

音质:长途质量;

算法复杂度:11 MIPS

优点:应用广泛,低码率,抗丢包;

缺点:音质一般;

应用领域:VOIP;

版税方式:免费

iLBC (internet Low Bitrate Codec)是由GIPS开发的基于低带宽的语音编码(speech),现有GOOGLE买下并免费开源到WEBRTC项目中。2006年前的skype产品在低带宽下使用iLBC编解码器。YAHOO message, google talk, polycom IP phone, iphone都支持iLBC。

iLBC的特点就是抗丢包。解码算法支持PLC(Packet loss concealment)网络丢包消隐。

在网络正常情况下,iLBC会记录下当前数据的相关参数和激励信号,以便在之后的数据丢失的情况下进行处理;在当前数据接收正常而之前数据包丢失的情况下,iLBC会对当前解码出的语音和之前模拟生成的语音进行平滑处理,以消除不连贯的感觉;在当前数据包丢失的情况下,iLBC会对之前记录下来的激励信号作相关处理并与随机信号进行混合,以得到模拟的激励信号,从而得到替代丢失语音的模拟语音。总的来说,和标准的低位速率编解码相比,iLBC使用更多自然、清晰的元素,精确的模仿出原始语音信号,这样更适合包交换网络使用的高语音质量的编解码。iLBC 的码率,13.3 kb/s (每帧30ms)和15.2 kb/s (每帧20ms), 8K采样。

iLBC的语音质量效果比G.711、G.729、G.723.1更好,声音更加圆润饱满,丢包率越高,iLBC在语音质量上的优势就越明显。据称在算法上可忍受15%的丢包损失。

iLBC用的比较多,关于iLBC有另外一段描述:

iLBC是一种专为包交换网络通信设计的编解码,优于目前流行的G.729、G.723.1,对丢包进行了特有处理,既使在丢包率 相当高的网络环境下,仍可获得非常清晰的语音效果。
iLBC所占用带宽?
   30ms ptime的iLBC所占用的总通信带宽比通常采用的ptime 20ms的G.729的带宽还要小,以下是iLBC与传统编解码占用带宽列表:
iLBC——语音质量的飞跃
语音质量一直是VoIP应用的主要难点,如何保证和提高IP网络传输语音的通话效果,是VoIP应用迫切需要解决的问题。“iLBC”编解码的出现,解决了在包交换的IP网络中,传输语音所遇到的网络丢包严重影响通话质量等实际问题,实现了“语音质量的飞跃”。

无论在高丢包率条件下还是在没有丢包的条件下,iLBC的语音质量都优于目前流行的G.723.1, G.729A等标准编解码;而且丢包率越大,使用iLBC的语音质量优势越明显。通常情况下,为了衡量IP网络语音质量,将≥5%丢包率的网络情况定义为VoIP的极限网络条件。经过语音质量测试,即使在5%丢包率的情况下,iLBC仍然能够提供相当于GSM手机的语音质量。


Opus


Opus 可以处理很大范围的音频应用,包括网络电话,游戏语音聊天室,视频会议,甚至是远程在线音乐会。它可以把低码率
窄带语音变成高质量的立体语音。

Opus目前正在被广泛的使用,美国的电信公司和科技巨头都开始使用Opus音频编码,其中最有名的就是谷歌公司将Opus引入到其Web项目中,相信大家对Webrtc还是有一些了解的,Speex则被Adobe公司广泛使用,搭着flash的顺风车,占有了广大的市场。但是随着flash的没落,Speex也开始渐渐淡出人们的视野。

6 kb/秒到510 kb/秒的比特率;单一频道最高256 kb/秒

采样率从8 kHz(窄带)到48 kHz(全频)

帧大小从2.5毫秒到60毫秒

支持恒定比特率(CBR)、受约束比特率(CVBR)和可变比特率(VBR)

支持语音(SILK层)和音乐(CELT层)的单独或混合模式

支持单声道和立体声;支持多达255个音轨(多数据流的帧)

可动态调节比特率,音频带宽和帧大小

良好的鲁棒性丢失率和数据包丢失隐藏(PLC)

浮点和定点实现


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Speex音频编解码库移植到STM32F4微控制器上,我们需要注意一些关键步骤和考虑因素。 首先,我们需要下载Speex库的源代码,并对其进行解压和配置。接下来,为了能够编写和编译Speex库的代码,我们需要一个适当的集成开发环境(IDE),如Keil或者IAR。 然后,我们需要根据我们的STM32F4开发板的规格和功能,配置库的编译选项和设置。这包括处理器的架构,时钟频率,外设等。我们还需要调整库的配置文件和头文件,以确保与STM32F4的硬件和驱动兼容。 接下来,我们需要将Speex库的源代码添加到我们的项目中,并确保正确地链接和编译。这可能涉及到修改我们的项目的编译设置和链接脚本。 然后,我们需要根据我们的应用程序的需求,编写相应的代码来初始化和配置STM32F4的音频外设接口,例如I2S或SPI。这些外设接口将与Speex库进行数据传输和处理。 在初始化完成后,我们可以使用Speex库提供的编码和解码函数来处理音频数据。我们可以将音频数据从外部来源输入到STM32F4的外设接口,并使用库来编码和解码数据。然后,我们可以将解码后的音频数据输出到外部设备,如扬声器或耳机。 最后,在使用Speex库进行音频编码和解码时,我们应该密切关注处理器的资源使用情况,以确保合理地分配和管理内存和处理能力。 总之,将Speex音频编码库移植到STM32F4微控制器上需要进行适当的配置、编译和初始化。我们还需要编写额外的代码来管理外设接口和处理音频数据。这样,我们就能够在STM32F4上成功地实现音频编码和解码功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值