在网络视频会议开发领域,我们有许多开源的音频编码库可以供选择,如G.7x系列、ACC、AC3、Speex等音频编码库,但由于网络视频会议可能会在无QOS保证的网络中传输数据,所以不仅要求音频编码器可以传输实时的高质量的音频数据,还需要保证带宽足够小,满足不同带宽的需求。因此一些宽带的编码器,如ACC、AC3等,其传输需要较大的带宽,就很难适应网络视频会议的低带宽传输要求。Speex是一个基于CELP算法的开源编码器,其可以支持从窄带(2kb)到宽带(44kbs)的音频传输,最少的音频传输带宽可以达到500字节每秒,是目前压缩率最高的音频编码器之一。Speex除了以上的特点外,还具有一些可供网络会议使用的特性。
1、 数据丢包掩饰
在网络视频会议的传输过程中,由于网络的带宽存在着波动性,因此有时候我们传输的数据会在网络中出现延迟甚至会产生丢包现象,大部分的音频编码器,当其接收的数据出现丢包,可能声音就会出现不连续的情况。而Speex的丢包掩饰功能可以使局部丢包不影响整体的音频质量。经测试当超过5%的丢包的时候,GSM、G.72x的语音质量会严重下降,而当我们采用Speex进行传输的时候,其语音质量没有出现较大变化,这证明Speex的丢包掩饰确实能解决局部丢包的问题。由于网络视频会议有时候会出现网络堵塞的情况,从而出现数据丢包现象,因此Speex的数据丢包掩饰对网络视频会议克服丢包的影响非常有作用。
2、 可变数据流
Speex具有先进的可变数据流传输方式,其通过音频静音检测,Speex可以在静音的情况不发送任何数据;而通过调整语音的传输质量,动态改变语音的传输带宽,使语音在主观上更为出色。
3、 回声抑制
网络视频会议系统的语音一般都是双向的,如果其中一方把外置的声音传输到其麦克风上,就很容易出现回声的现象。Speex编码库提供回声消除功能,可以通过近端和远端的数据包进行叠加,从而消除静音,但由于网络视频会议的语音接收和发送线程都是分开,因此需要对两个线程进行同步才能进行回声消除。
4、 自动增益控制
网络视频会议系统的声音采集通常可以为耳麦、鹅颈麦克风等,不同的麦克风的其拾音半径都不一样,而且有时候我们会议发言者的位置可能会移动,如采集同样的声音大小,其声音就会有时大、有时小,通过语音自动增益控制,通过放大或者降低声强,我们可以获得大致一直的声音强度,避免了语音跳跃的情况。
5、 噪声消除
在会议中可能会遇到对方的环境噪声造成语音质量下降的情况,Speex可以对环境噪声进行判断,并消除这些噪声,提高了语音的质量。
6、 强化的立体声编码
Speex除了能压缩一般语音数据,还可以对立体声数据进行编码。
**
7、 跨平台**
Speex可以在不同的平台上编译,如Android、IOS系统,因此非常适合我们的视频会议系统的移动终端的音频压缩库。
总结,通过Speex的多项特性证明,Speex是目前最佳的开源网络视频会议音频编码库,Speex编码不仅仅是一个开源的编码器,其还具有网络视频会议音频处理所需要的一些重要的功能。
本文转自d1net(转载)