在網絡視頻會議開發領域,我們有許多開源的音頻編碼庫可以供選擇,如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編碼不僅僅是一個開源的編碼器,其還具有網絡視頻會議音頻處理所需要的一些重要的功能。