即時通訊音視訊開發(七):音訊基礎及編碼原理入門
前言
即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。
系列文章
基礎概念
位元率:
表示經過編碼(壓縮)後的音訊資料每秒鐘需要用多少個位元來表示,單位常為kbps。
響度和強度:
聲音的主觀屬性響度表示的是一個聲音聽來有多響的程度。響度主要隨聲音的強度而變化,但也受頻率的影響。總的說,中頻純音聽來比低頻和高頻純音響一些。
取樣和取樣率:
取樣是把連續的時間訊號,變成離散的數字訊號。取樣率是指每秒鐘採集多少個樣本。
常見音訊格式
1. WAV格式,是微軟公司開發的一種聲音檔案格式,也叫波形聲音檔案,是最早的數字音訊格式,被Windows平臺及其應用程式廣泛支援,壓縮率低。
2. MIDI是Musical Instrument Digital Interface的縮寫,又稱作樂器數字介面,是數字音樂/電子合成樂器的統一國際標準。它定義了計算機音樂程式、數字合成器及其它電子裝置交換音樂訊號的方式,規定了不同廠家的電子樂器與計算機連線的電纜和硬體及裝置間資料傳輸的協議,可以模擬多種樂器的聲音。MIDI檔案就是MIDI格式的檔案,在MIDI檔案中儲存的是一些指令。把這些指令傳送給音效卡,由音效卡按照指令將聲音合成出來。
3. MP3全稱是MPEG-1 Audio Layer 3,它在1992年合併至MPEG規範中。MP3能夠以高音質、低取樣率對數字音訊檔案進行壓縮。應用最普遍。
4. MP3Pro是由瑞典Coding科技公司開發的,其中包含了兩大技術:一是來自於Coding科技公司所特有的解碼技術,二是由MP3的專利持有者法國湯姆森多媒體公司和德國Fraunhofer積體電路協會共同研究的一項譯碼技術。MP3Pro可以在基本不改變檔案大小的情況下改善原先的MP3音樂音質。它能夠在用較低的位元率壓縮音訊檔案的情況下,最大程度地保持壓縮前的音質。
5. WMA (Windows Media Audio)是微軟在網際網路音訊、視訊領域的力作。WMA格式是以減少資料流量但保持音質的方法來達到更高的壓縮率目的,其壓縮率一般可以達到1:18。此外,WMA還可以通過DRM(Digital Rights Management)保護版權。
6. RealAudio是由Real Networks公司推出的一種檔案格式,最大的特點就是可以實時傳輸音訊資訊,尤其是在網速較慢的情況下,仍然可以較為流暢地傳送資料,因此RealAudio主要適用於網路上的線上播放。現在的RealAudio檔案格式主要有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured)等三種,這些檔案的共同性在於隨著網路頻寬的不同而改變聲音的質量,在保證大多數人聽到流暢聲音的前提下,令頻寬較寬敞的聽眾獲得較好的音質。
7. Audible擁有四種不同的格式:Audible1、2、3、4。Audible.com網站主要是在網際網路上販賣有聲書籍,並對它們所銷售商品、檔案通過四種Audible.com 專用音訊格式中的一種提供保護。每一種格式主要考慮音訊源以及所使用的收聽的裝置。格式1、2和 3採用不同級別的語音壓縮,而格式4採用更低的取樣率和MP3相同的解碼方式,所得到語音吐辭更清楚,而且可以更有效地從網上進行下載。Audible 所採用的是他們自己的桌面播放工具,這就是Audible Manager,使用這種播放器就可以播放存放在PC或者是傳輸到行動式播放器上的Audible格式檔案。
8. AAC實際上是高階音訊編碼的縮寫。AAC是由Fraunhofer IIS-A、杜比和AT&T共同開發的一種音訊格式,它是MPEG-2規範的一部分。AAC所採用的運演算法則與MP3的運演算法則有所不同,AAC通過結合其他的功能 來提高編碼效率。AAC的音訊演算法在壓縮能力上遠遠超過了以前的一些壓縮演算法(比如MP3等)。它還同時支援多達48個音軌、15個低頻音軌、更多種取樣率和位元率、多種語言的相容能力、更高的解碼效率。總之,AAC可以在比MP3檔案縮小30%的前提下提供更好的音質。
9. Ogg Vorbis 是一種新的音訊壓縮格式,類似於MP3等現有的音樂格式。但有一點不同 的是,它是完全免費 、開放和沒有專利限制的。Vorbis 是這種音訊壓縮機制的名字,而Ogg則是一個計劃的名字,該計劃 意圖設計 一個完全開放性的多媒體系統。VORBIS也是有失真壓縮,但通過使用更加先進的聲學模型去減少損失,因此,同樣位速率(Bit Rate)編碼的OGG與MP3相比聽起來更好一些。
10. APE是一種無失真壓縮音訊格式,在音質不降低的前提下,大小壓縮到傳統無損格式 WAV 檔案的一半。
11. FLAC即是Free Lossless Audio Codec的縮寫,是一套著名的自由音訊無失真壓縮編碼,其特點是無失真壓縮。
(與以上用於儲存和回放非實時壓縮協議的標準不同,常見的實時音訊通訊的編碼標準具體請見:《即時通訊音視訊開發(八):常見的實時音訊通訊編碼標準》)
音訊編碼的基本原理講解
1概述
語音編碼致力於:降低傳輸所需要的通道頻寬,同時保持輸入語音的高質量。
語音編碼的目標在於:設計低複雜度的編碼器以儘可能低的位元率實現高品質資料傳輸。
2靜音閾值曲線
指在安靜環境下,人耳在各個頻率能聽到聲音的閾值。
臨界頻帶
由於人耳對不同頻率的解析度不同,MPEG1/Audio將22khz內可感知的頻率範圍,依不同編碼層,不同取樣頻率,劃分成23~26個臨界頻帶。下圖列出理想臨界頻帶的中心頻率與頻寬。圖中可看到,人耳對低頻的解析度較好。
頻域上的掩蔽效應
幅值較大的訊號會掩蔽頻率相近的幅值較小的訊號,如下圖:
時域上的遮蔽效應
在一個很短的時間內,若出現了2個聲音,SPL(sound pressure level)較大的聲音會掩蔽SPL較小的聲音。時域掩蔽效應分前向掩蔽(pre-masking)和後向掩蔽(post-masking),其中post-masking的時間會比較長,約是pre-masking的10倍。
編碼基本手段(1):量化和量化器
基本概念:
- 量化和量化器:量化是把離散時間上的連續訊號,轉化成離散時間上的離散訊號。
- 常見的量化器有:均勻量化器,對數量化器,非均勻量化器。
- 量化過程追求的目標是:最小化量化誤差,並儘量減低量化器的複雜度(這2者本身就是一個矛盾)。
常見的量化器的優缺點:
- (a)均勻量化器:最簡單,效能最差,僅適應於電話語音。
- (b)對數量化器:比均勻量化器複雜,也容易實現,效能比均勻量化器好。
- (c)非均勻(Non-uniform)量化器:根據訊號的分佈情況,來設計量化器。訊號密集的地方進行細緻的量化,稀疏的地方進行粗略量化。
編碼基本手段(2):語音編碼器
1基本概念
語音編碼器分為三種類形:(a)波形編器 、(b)聲碼器 、(c)混合編碼器 。
波形編碼器以構造出背景噪單在內的模擬波形為目標。作用於所有輸入訊號,因此會產生高質量的樣值並且耗費較高的位元率。 而聲碼器 (vocoder)不會再生原始波形。這組編碼器 會提取一組引數 ,這組引數被送到接收端,用來匯出語音產生模形。聲碼器語音質量不夠好。混合編碼器,它融入了波形編碼器和聲器的長處。
2波形編碼器
波形編碼器的設計常獨立於訊號。所以適應於各種訊號的編碼而不限於語音。
時域編碼:
- a)PCM:pulse code modulation,是最簡單的編碼方式。僅僅是對訊號的離散和量化,常採用對數量化。
- b)DPCM:differential pulse code modulation,差分脈衝編碼,只對樣本之間的差異進行編碼。前一個或多個樣本用來預測當前樣本值。用來做預測的樣本越多,預測值越精確。真實值和預測值之間的差值叫殘差,是編碼的物件。
- c)ADPCM:adaptive differential pulse code modulation,自適應差分脈衝編碼。即在DPCM的基礎上,根據訊號的變化,適當調整量化器和預測器,使預測值更接近真實訊號,殘差更小,壓縮效率更高。
頻域編碼:
頻域編碼是把訊號分解成一系列不同頻率的元素,並進行獨立編碼。
- a)sub-band coding:子帶編碼是最簡單的頻域編碼技術。是將原始訊號由時間域轉變為頻率域,然後將其分割為若干個子頻帶,並對其分別進行數字編碼的技術。它是利用帶通濾波器(BPF)組把原始訊號分割為若干(例如m個)子頻帶(簡稱子帶)。將各子帶通過等效於單邊帶調幅的調製特性,將各子帶搬移到零頻率附近,分別經過BPF(共m個)之後,再以規定的速率(奈奎斯特速率)對各子帶輸出訊號進行取樣,並對取樣數值進行通常的數字編碼,其設定m路數字編碼器。將各路數字編碼訊號送到多路複用器,最後輸出子帶編碼資料流。對不同的子帶可以根據人耳感知模型,採用不同量化方式以及對子帶分配不同的位元數。
- b)transform coding:DCT編碼。
3聲碼器
channel vocoder: 利用人耳對相位的不敏感。
homomorphic vocoder:能有效地處理合成訊號。
formant vocoder: 以用語音訊號的絕大部分資訊都位於共振峰的位置與頻寬上。
linear predictive vocoder:最常用的聲碼器。
4混合編碼器
波形編碼器試圖保留被編碼訊號的波形,能以中等位元率(32kbps)提供高品質語音,但無法應用在低位元率場合。聲碼器試圖產生在聽覺上與被編碼訊號相似的訊號,能以低位元率提供可以理解的語音,但是所形成的語音聽起來不自然。
混合編碼器結合了2者的優點:
- RELP: 線上性預測的基礎上,對殘差進行編碼。機制為:只傳輸小部分殘差,在接受端重構全部殘差(把基帶的殘差進行拷貝)。
- MPC: multi-pulse coding,對殘差去除相關性,用於彌補聲碼器將聲音簡單分為voiced和unvoiced,而沒有中間狀態的缺陷。
- CELP: codebook excited linear prediction,用聲道預測其和基音預測器的級聯,更好逼近原始訊號。
- MBE: multiband excitation,多帶激勵,目的是避免CELP的大量運算,獲得比聲碼器更高的質量。
網易雲信,你身邊的即時通訊和音視訊技術專家,瞭解我們,請戳網易雲信官網
想要閱讀更多行業洞察和技術乾貨,請關注網易雲信部落格
本文轉載自52im,作者:JackJiang