音频基础说明
現實生活中,音頻(Audio)主要用在兩大場景中,包括語音(Voice)和音樂(Music)。語音主要用于溝通,如打電話等。目前由于語音識別技術的發展,人機語音交互也是語音的一個應用方向,很多大廠推出智能音箱、語音助手等。音樂主要用于欣賞和陶冶情操,如播放音樂。
音頻的基礎概念主要包括采樣、采樣率、聲道、音頻編解碼、碼率等。常用的音頻格式主要包括WAV、AAC、AMR、MP3、AC-3等。音頻開發的主要應用包括音頻播放器、錄音機、語音電話、音視頻監控應用、音視頻直播應用、音頻編輯/處理軟件、藍牙耳機/音箱等。
1 音頻基礎概念
音頻是一個專業術語,音頻一詞通常用作一般性描述音頻范圍內和聲音有關的設備及其作用。人類所能聽到的所有聲音都可以成為音頻,包括噪聲等。聲音被錄制下來后,風聲、雨聲、讀書聲,歌聲、樂器聲都可以通過數字音樂軟件處理,把它們制作成CD,這時候音頻是指存儲在計算機中的聲音。與音頻相關的概念包括數字音頻、音頻采集、音頻處理、音頻應用場景、常見的音頻格式、混音技術等。
1.1 聲音和音頻
聲音和音頻是兩個不同的概念,聲音有三要素。
1.1.1 聲音的三要素
聲音的三要素是頻率、振幅、波形。
頻率是指聲波的頻率,即聲音的音調,人類聽覺的頻率(音調)范圍為[20Hz,20kHz]。
振幅是指聲波的響度,通俗地講就是聲音的高低,可以理解為音量.
波形是指聲音的音色,在同樣的頻率和振幅下,鋼琴和二胡的聲音聽起來完全不同,因為其音色不同。波形決定了其所代表聲音的音色,音色不同是因為它們的介質所產生的波形不同。
綜上,聲音的本質就是音調、音量和音色。音調指頻率,音量指振幅,音色和材質有關。
其中聲音響度和強度是兩個不同的概念,聲音的主觀屬性響度表示的是一個聲音聽起來有多響的程度。響度主要隨聲音的強度而變化,但也受頻率的影響。
1.1.2 音頻的基礎概念
音頻相關概念包括比特率、采樣、采樣率、奈奎斯特采樣定律等。
比特率表示經過編碼(壓縮)后的音頻數據每秒需要用多少比特來表示,常用kb/s表示。
采樣是把連續的模擬信號,變成離散的數字型號。
采樣率是指每秒采集多少個樣本。
奈奎斯特(Nyquist)采樣定律規定當采樣率大于或等于連續信號最高頻率分量的2倍時,采樣信號可以用來完美重構原始連續信號。
1.2 數字音頻
數字音頻是一種利用數字化手段對聲音進行錄制、存放、編輯、壓縮或播放的技術,它是隨著數字信號處理技術、計算機技術、多媒體技術的發展而形成的一種全新的聲音處理手段。數字音頻的主要應用領域是音樂后期制作和錄音。
計算機數據的存儲是以0、1的形式存儲的,所以數字音頻就是首先將音頻文件進行轉換,接著將這些電平信號轉換成二進制數據保存,播放的時候把這些數據轉化為模擬的電平信號再送到揚聲器播出,數字聲音和一般磁帶、廣播、電視中的聲音就存儲及播放方式而言有著本質的區別。相比而言,它具有存儲方便、存儲成本低、存儲和傳輸的過程中沒有聲音的失真、編輯和處理非常方便等特點。
數字音頻所設計的基礎概念非常多,包括采樣、量化、編碼、采樣率、采樣數、聲道數、音頻幀、比特率、PCM等。
從模擬信號——>采樣——>量化——>編碼——>數字信號等步驟。
1.2.1 采樣
采樣是指再時間軸上對信號進行數字化。根據奈奎斯特定律,當按照比聲音最高頻率的2唄以上進行采樣時,采樣信號可以用來完美重構原始連續信號。如人類聽覺頻率范圍[20Hz,20kHz],所以采樣頻率至少要大于40kHz。采樣頻率一般為44.1kHz,即1S采樣44100次,這樣可以保證聲音達到20kHz也能被數字化。
采樣率,簡單來說就是每秒獲取聲音樣本的次數。聲音是一種能量波,其具有音頻頻率和振幅的特征。采樣過程就是抽取某點的頻率值。如果在1S內抽取的點越多,獲取的信息也就越多,采樣率越高,聲音的質量就越好。但并不是說采樣率越高就越好,因為人耳的聽覺范圍為[20Hz,20kHz]。
采樣數跟采樣率、采樣時間、采樣位數和聲道數有關系,即采樣數等于采樣率、采樣時間、采樣位數和聲道數的乘積。如采樣率為44100Hz,采樣率時間為1S,采樣位數為16b,聲道數為2,那么采樣數等于44100 *1 *16*2=1411200。
1.2.2 量化
每個采樣又該如何表示呢?這就涉及量化了。量化是指在幅度軸上對信號進行數字化。如果用16比特的二進制信號來表示一個采樣,則一個采樣所表示的范圍為[-32768,32767]。
采樣位數也叫采樣大小、量化位數、量化深度、采樣位深、采樣位寬。采樣位數表示每個采樣點用多少比特表示,音頻的量化深度一般為8b、16b、32b等。當量化深度為8b時,每個采樣點可以表示256個不同的量化值;當量化深度為16b時,每個采樣點可以表示65536個不同的量化值。量化深度的大小會影響聲音的質量,位數越多,量化后的波形越接近原始波形,聲音的質量越高,而需要的存儲空間也越大;位數越少,聲音的質量越低,需要的存儲空間越小。如常見的CD音質采用的是16b的量化深度。采樣精度用來指定采樣數據的格式和每次采樣的大小。例如數據格式為PCM,每次采樣位數為16b。
1.2.3 編碼
每個量化都是一個采樣,將這么多采樣進行存儲就叫作編碼。編碼就是按照一定的格式記錄采樣和量化后的數字數據,例如順序存儲或者壓縮存儲等。通常所講的音頻裸數據格式就是脈沖編碼調制(PCM)數據。描述一段PCM數據通常需要幾個概念,包括量化格式(通常為16b)、采樣率、聲道數等。對于聲音格式,還有一個概念用來描述它的大小,即比特率,即1S內比特數目,用來衡量音頻數據單位時間內的容量大小。
其中PCM(Pulse Code Modulation),它是指在原始收錄聲音時,數據會保存到一串緩沖區(Buffer)中,這串緩沖區采用了PCM格式存儲。通常把音頻采樣過程也叫做脈沖編碼調制編碼,即PCM編碼,采樣值也叫PCM值。PCM編碼過程就是從模擬信號到數字信號的轉化過程,包括抽樣、量化和編碼三個階段。如在Windows系統中,通過WaveIn或者CoreAudio采集聲音,得到的原始數據就是一串PCM格式的Buffer。
1.2.4 其他概念
從模擬信號到數字信號的轉換過程包括采樣、量化、編碼這3個階段,除此之外,數字音頻還涉及幾個基礎概念。
通道數,即聲音的通道數目,有單聲道、雙聲道和立體聲道等區別。記錄聲音時,如果每次只生成一個聲波數據,成為單聲道;每次生成兩個聲波數據,成為雙聲道(立體聲)。
立體聲存儲大小是單聲道文件的兩倍。單聲道的聲音通常使用一個揚聲器發聲,但也可以處理成兩個揚聲器輸出同一個聲道的聲音,但通過兩個揚聲器回放單聲道信息的時候,可以明顯感覺到聲音是從兩個音箱中間傳遞到耳朵的,無法判斷聲源的具體位置。雙聲道就是有兩個聲音通道,其原理是人們聽到的聲音時可以根據左耳和右耳對聲音的相位差來判斷聲源的具體位置。聲音在錄制的過程中被分配到兩個獨立的聲道中,從而達成了很好的聲音定位效果。
音頻跟視頻不太一樣,視頻的每一幀就是一幅圖像,但音頻是流式的,本身沒有一幀的概念。對于音頻來講,確實沒有辦法明確定義出一幀。如PCM流,采樣率為44100Hz,采樣位數為16b,通道數為2,那么1S音頻數據的大小是固定的,共44100*16b*2/8=176400B。通常,可以規定一幀音頻的概念,例如規定每20ms的音頻是一幀。
比特率(碼率),是指音頻每秒傳送的比特數,單位為b/s。比特率越大表示單位時間內采樣的數據越多,傳輸的數據量就越大。如PCM流,采樣率為44100Hz,采樣大小為16b,聲道數為2,那么比特率為44100*16*2=1411200b/s。
一個音頻文件的總大小,可以根據采樣數、采樣位數、聲道數、采樣時間來計算,即文件大小=采樣率*采樣時間*采樣位數*聲道數/8。
1.3 音頻收集
音頻技術用于實現計算機對聲音的處理。聲音是一種由物體振動而產生的波,當物體振動時,會發出聲波。音頻數據的主要格式包括WAVE、MP3、AAC、AC-3、Real Audio、CD Audio等。音頻數據的采集,常見方法有三種,分別是直接獲取已有音頻、利用音頻處理軟件捕獲并截取聲音、用話筒錄制聲音。
1.3.1 直接獲取已有音頻數據
直接獲取已有音頻數據的常用方法包括從網上下載、從多媒體光盤中查找。
1.3.2 利用音頻處理軟件捕獲截取
利用音頻處理軟件捕獲、截取CD光盤音頻數據,通常成為CD抓軌(抓音軌的意思)。抓軌時多媒體術語,是抓取CD音軌并轉換成MP3、WAV等音頻格式的過程。
另外還可以剝離出音頻文件中的聲音,可以用很多方便的軟件來操作(如FFmpeg),能方便直接地轉換音頻格式,可以實現大多數視頻、音頻及圖像不同格式之間地相互轉換,還可以實現增添數字水印等功能。
1.3.3 利用話筒錄制
利用話筒錄制需要先把話筒接到計算機上,然后利用錄音軟件直接錄制聲音。
1.4 音頻處理
音頻處理技術包括音頻采集、語音編解碼、文字與聲音地轉換、音樂合成、語音識別與理解、音頻數據傳輸、音視頻同步、音頻效果與編輯等。通常實現計算機語音輸出有兩種方式,即錄音與重放、文字聲音轉換。
1.4.1 噪聲抑制
噪聲抑制(Noise Supperession)是很常見地應用,如手機等設備采集原始聲音會包含背景噪聲,影響聽眾主觀體驗,還會降低音頻壓縮效率,就需要進行噪聲抑制處理。谷歌著名地開源框架WebRTC,對其中的噪聲抑制算法進行嚴謹測試,發現該算法可以對白噪聲和有色噪聲進行良好抑制,滿足視頻或者語音通話的要求。其他開源項目如Speex包含的噪聲抑制算法,也有較好的效果,該算法適用范圍較WebRTC的噪聲抑制算法更為廣泛,可以在任意采樣率下使用。
1.4.2 回聲消除
回聲消除技術是數字信號處理的典型應用之一。在視頻或者音頻通話過程中,本地的聲音傳送到對端播放后,聲音會被對端話筒/麥克風采集,混合著對端人聲一起傳輸到本地播放,這樣本端播放的聲音包含了本端原本采集的聲音,造成主觀感覺聽到了自己的回聲。回聲非常影響用戶體驗,回聲消除(Acoustic Echo Canceller)的原理和算法非常復雜。以WebRTC為例,其中的回聲抑制模塊建議移動設備采用運算量較小的AECM算法。
回聲消除的基本原理以揚聲器信號與由它產生的多路徑回聲的相關性為基礎,建立遠端信號的語音模型,利用它對回聲進行估計,并不斷修改濾波器的系數,使估計值更加逼近真實的回聲,然后將回聲估計值從話筒的輸入信號中減去,從而達到消除回聲的目的。
回聲消除在即時通信應用中,需要雙方/多方進行,在要求較高的場合,通常采用外置音箱放音,必然會有回音。這種情感況下不對回音進行處理,將會影響通話質量和用戶體驗,更嚴重的情況還會形成震蕩,產生嘯叫。
傳統的回聲消除都采用硬件方式,在硬件電路上繼承DSP處理芯片,如常用的固定電話、手機等都有專門的回音消除處理電路,而采用軟件方式實現回聲消除一直存在技術難點,包括QQ語音通話使用的使國外的GIPS技術。因此,回聲消除已經成為即時通信中提供全雙工語音的標準方法。升學回聲消除使通過消除或移除本地話筒中拾取的遠端音頻信號來阻止遠端的聲音返回去的一種處理方法。這種音頻的一處都是通過數字信號處理來完成的。
1.4.3 自動增益控制
手機等設備采集的音頻數據往往響度時高時低,從而造成聲音忽大忽小,影響聽眾的主觀感受。自動增益控制(Auto Gain Control)算法根據預先配置的參數對聲音進行正向/負向調節,使輸出的聲音大小適合人耳的主觀感受。
1.4.4 靜音檢測
靜音檢測(Voice Activity Detection)的基本原理使計算機音頻的功率譜密度,如果功率譜密度小于閾值則認為使靜音,否則認為使聲音。靜音檢測廣泛應用于音頻編碼、AGC、AECM等。
1.4.5 舒適噪聲產生
舒適噪聲產生(Confortable Noise Generation)的基本原理是根據噪聲的功率譜密度,人為生成噪聲,廣泛適用于音頻編解碼器。在編碼端計算靜音時的白噪聲功率譜密度,將靜音時段和功率譜密度信息編碼。在解碼端,根據時間信息和功率譜密度信息,重建隨機白噪聲。如完全靜音時,為了創造舒適的通話體驗,在音頻后處理階段添加隨機白噪聲。
1.5 音頻使用場景及應用
當下,音頻主要用在兩大場景中,包括語音和音樂。語音主要用于溝通,如打電話、微信語音、人機語音交互(正處于封口,大廠推出的智能音箱)等。音樂主要用于欣賞,如音樂播放。
音頻開發的主要應用包括音頻播放器、錄音機、語音電話、音視頻監控應用、音視頻直播應用、藍牙耳機、音箱、音頻編碼與處理軟件,如KTV音效和鈴聲轉換等。
音頻開發的具體內容包括音頻采集與播放、音頻算法處理、音頻的編解碼和格式轉換、音頻傳輸協議的開發等。音頻算法處理主要包括去噪、VAD檢測、回聲消除、音效處理、增強、混音與分離等。
1.6 音頻格式
音頻格式是指要在計算機內播放或處理的音頻文件的格式,是對聲音文件進行數、模轉換的過程。
目前音樂文件播放格式分為 無損壓縮和有損壓縮。不同格式的音樂文件,在音質上表現會有很大的差異。有損壓縮就是降低音頻采樣頻率與比特率,輸出的音頻文件會比原文件小。另一種音頻壓縮被稱為無損壓縮,能夠將100%保存源文件的所有數據的前提下,將音頻文件的體積壓縮得更小,而將壓縮后的音頻文件還原后,能夠實現與源文件相同大小、相同的碼率。
1.6.1 WAV
WAV是微軟公司開發的一種聲音文件格式,也叫做波形聲音文件,是最早的數字音頻格式,被Windows平臺及其應用程序廣泛支持,但壓縮率比較低。WAV編碼是在PCM數據格式的前面加上44B的頭部,分別用來描述PCM的采樣率、聲道數、數據格式等新消息。WAV編碼的特點是音質非常好、大量軟件支持。一般應用于多媒體開發的中間文件、保存音樂和音效素材等。
1.6.2 MIDI
樂器數字接口(Musical Instrument Digital Interface,MIDI)是數字音樂與電子合成樂的統一國際標準。它定義了計算機音樂程序、數字合成器及其他電子設備交換音樂信號的方式,規定了不同廠家的電子樂器與計算機連接的電纜、硬件及設備間數據傳輸的協議,可以模擬多種樂器的聲音。MIDI文件就是MIDI格式的文件,在MIDI文件中存儲的是一些指令。將這些指令發送給聲卡,聲卡會在按照指令將聲音合成出來。
1.6.3 MP3
MP3全稱是MPEG-1 Audio Layer 3,它在1992年合并至MPEG規范中。MP3能夠以高音質、低采樣率對數字音頻文件進行壓縮,應用最普遍。MP3具有不錯的壓縮比,使用LAME編碼的中高碼率的MP3文件,在聽感上非常接近源WAV文件。特點是音質在128kb/s以上表現還不錯,壓縮比較高,兼容性好。適用于高比特率下對兼容性有要求的音樂欣賞方面。
1.6.4 MP3Pro
MP3Pro是瑞典Coding科技公司研發的,包含兩大技術:一是來自Coding科技公司所特有的解碼技術;二是由MP3的專利持有者法國湯姆森多媒體公司和德國Fraunhofer集成電路協會共同研究的一項譯碼技術。MP3Pro可在基本不改變文件大小的情況下改善原先的MP3音樂音質,能夠在用較低的比特率壓縮音頻文件的情況下,最大程度地保持壓縮前地音質。
1.6.5 WMA
WMA(Windows Media Audio)是微軟公司在互聯網音頻、視頻領域地力作。WMA格式以減少數據流量但保持音質地方法來達到更好地壓縮目的,其壓縮率一般可以達到1:18。WMA還可以通過DRM(Digital Rights Management)保護版權。
1.6.6 RealAudio
RealAudio是由Real Networks公司推出地一種文件格式,其最大的特點就是可以實時傳輸音頻信息,尤其是網速較慢的情況下,仍然可以較為流暢地傳送數據,因此RealAudio主要用于網絡上的在線播放。現在的RealAudio文件格式主要有RA(RealAudio)、RM(RealMedia)、RMX(RealAudio Secured)這3種,這些文件的共同性在于隨著網絡帶寬的不同而改變聲音的質量,在保證大多數人聽到流暢聲音的前提下,令帶寬較為寬敞的聽眾獲得較好的音質。
1.6.7 Audible
Audible擁有4種不同的格式,包括Audible1、2、3、4。每種格式主要考慮音頻源及所使用的收聽裝備。格式1、2和3采用不同級別的語音壓縮,而格式4采用更低的采樣率和與MP3相同的解碼方式,所得到的語音吐詞更清楚,而且可以更有效地從網上下載。Audible所采用地是自己的桌面播放工具,這就是Audible Manager,使用這種播放器就可以播放存放在PC或者傳輸到便捷式播放器上的Audible格式文件了。
1.6.8 AAC
高級音頻編碼(Advanced Audio Coding,AAC)是由Fraunhofer IIS-A、杜比和AT&T共同開發的一種音頻格式,它是MPEG-2規范的一部分。AAC所采用的運算法則與MP3的運算法則有所不同,AAC通過結合其他的功能來提高編碼效率。AAC的音頻算法在壓縮能力上遠遠超過以前的一些算法,如MP3。它還同時支持多達48個音軌、15個低頻音軌、更多種采樣率和比特率、多種語言的兼容能力、更高的解碼效率。具體來說,AAC可以在比MP3文件縮小30%的前提下提供更好的音質。
AAC是新一代的音頻有損壓縮技術,它通過一些附加編碼技術(如PS和SBR)衍生出LC-AAC、HE-AAC、HE-AAC V2這3中主要編碼格式。在小于128kb/s碼率下表現優異,且多用于視頻中的音頻編碼。在128kb/s碼率下的音頻編碼,多用于視頻中的音頻軌的編碼。
1.6.9 Ogg Vorbis
Ogg Vorbis是一種新的音頻壓縮格式,類似于MP3等現有的音樂格式,但有一點不同的是,它完全是免費、開放和沒有專利限制的。Vorbis是這種音頻壓縮機制的名字,而Ogg則是一個計劃的名字,該計劃意圖設計一個完全開放性的多媒體系統。Vorbis也是有損壓縮,但通過使用更加先進的升學模型減少損失。同樣位速率編碼的Ogg與MP3相比聽起來更好些。Ogg 編碼音質好、完全免費,可以用更小的碼率達到更好的音質,128kb/s的Ogg比192kb/s甚至更好的MP3還要出色,但是目前在媒體軟件支持上還是不夠友好。在高中低碼率下都有良好的表現,但兼容性不夠好,流媒體特性不太支持。
1.6.10 APE
APE是一種無損壓縮音頻格式,在音質不降低的前提下,可以壓縮到傳統無損格式WAV文件的一半。APE壓縮與WinZip或WinRAR這類專業數據壓縮軟件壓縮原理類似,只是APE等無損壓縮數字音樂之后的APE音頻文件是直接可以被播放的。APE的壓縮速率是動態的,壓縮時只壓縮可被要鎖的部分,不能包壓縮的部分被保留。
1.6.11 FLAC
FLAC(Free Lossless Audio Codec)是一套著名的自由音頻無損壓縮編碼,其特點是無損壓縮。理論上以FLAC編碼壓縮后不會丟失任何信息,將FLAC文件還原為WAV文件后,與壓縮前的WAV文件內容相同。這種壓縮與ZIP的方式類似,但FLAC的壓縮率大于ZIP和RAR,因FLAC是專門針對PCM音頻的特點而設計的壓縮方式,而且可以使用播放器直接播放FLAC壓縮的文件,就像通常播放MP3文件一樣。FLAC是免費的,并且支持大多數操作系統(如Windows、Linux、BSD、Solaris、IRIX、AIX、BeOS、OS/2、Amiga等)。FLAC提供了在開發工具autotools、MSVC、Watcom C、Project Builder上的build系統。現各大網站都有FLAC音樂提供下載,發布者一般是購買CD后把.cda音軌直接抓成.flac格式文件,以保證光盤的原無損質量。
1.7 混音技術
混音就是把兩路或者多路音頻流混合在一起,形成一路音頻流。混流則是指音頻流的混合,也就是視頻畫面和聲音的對齊。在混音之前,需要做回聲消除、噪音抑制和靜音檢測等處理。回聲消除和噪聲抑制屬于語音前處理的范疇。靜音抑制可有可無,對于終端混音,要把采集到的主播聲音和從音頻文件中讀到的伴奏聲音混合。如果主播停頓一段時間而不發出聲音,通過VAD檢測到了以后,這段時間不婚姻,直接采用伴奏音樂的數據即可。
PS:靜音檢測與回聲消除可參考1.4章節的音頻處理。另外,并不是任意兩路音頻流都可以直接混合,兩路音頻流必須符合以下條件才能混合。
(1)格式相同,要解壓成PCM格式。(2)采樣率相同,要轉換成相同的采樣率。主流采樣率包括16kHz、32kHz、44.1kHz和48kHz。
(3)幀長相同,幀長由編碼格式決定,PCM沒有幀長的概念,開發者可自行決定幀長。為了和主流音頻編碼格式的幀長保持一致,推薦采用20ms為幀長。
(4)位深(Bit-Depth)或采樣格式相同,承載每個采樣點數據的比特數目要相同。
(5)聲道數相同,必須同樣是單聲道或者雙聲道。
1.8 音頻重采樣
音頻重采樣就是將音頻進行重新采樣得到的新的采樣率/采樣位數/聲道數。在音頻系統中可能存在多個音軌,而每個音軌的原始采樣率可能是不一致的。
如播放音樂時,來了個提示音,此時需要把音樂和提示音混合到編解碼器進行輸出,音樂的原始采樣率和提示音的原始采樣率可能不一致。如果編解碼的采樣率設置為音樂的原始采樣率,提示音就會失真,所以需要進行音頻重采樣。
最事半功倍的方法時編解碼器的采樣率固定一個值(44.1kHz或48kHz),所有的音軌都重采樣到這個采樣率,然后才送到編解碼器,以保證所有音軌聽起來都不失真。
2 音頻編碼原理
描述信源的數據時信息和數據冗余之和,即數據=信息+數據冗余。音頻信號在時域和頻域上具有相關性,即存在數據冗余。將音頻作為一個信源,音頻編碼的實質時減少音頻中的冗余。自然界中的聲音非常復雜,波形也及其復雜,通常采用的時脈沖編碼調制編碼,即PCM編碼。PCM通過抽樣、量化、編碼3個步驟將連續變化的模擬信號轉化成數字編碼信號。
2.1 音頻壓縮
原始的音頻數據中存在大量的冗余信息,需要進行壓縮處理。音頻信號能壓縮的理論依據,包括聲音信號中存在大量的冗余度,以及人的聽覺具有強音能抑制同時存在的弱音現象。
壓縮編碼,其原理是壓縮冗余的信號。冗余的信號是指不能被人耳感知到的信號,包括人耳聽覺范圍之外的音頻信號及被掩蔽掉的音頻信號。
模擬音頻信號轉化為數字信號需要經過采樣和量化。量化的過程被成為編碼,根據不同的量化策略,產生了許多不同的編碼方式(常見如PCM和ADPCM)。這些數據代表著無損的原始數字音頻信號,添加一些文件頭信息就可以存儲為WAV文件了,它是由微軟和IBM聯合開發的用于音頻數字存儲的標準,可以很容易被解析和播放。
在更深一步學習音頻處理和壓縮之前需要明白幾個概念,包括音調、響度、采樣率、采樣精度、聲道數、音頻幀長等。
PS:與音頻相關的基礎概念可以參考之前的文章。音頻壓縮編碼分為2類,包括無損壓縮和有損壓縮。
(1)無損壓縮,主要指熵編碼,包括哈夫曼編碼、算術編碼、行程編碼等。(2)有損壓縮,包括波形編碼(主要是PCM、DPCM、ADPCM、子帶編碼、矢量量化等)、參數編碼、混合編碼。
音頻壓縮編碼有3中常用的實現方案。
(1)采用專用的音頻芯片對語音信號進行采集和處理,音頻編解碼算法集成在硬件內部,如MP3編解碼芯片、語音合成分析芯片等。使用這種方案的優點是處理速度快,設計周期短。其缺點是局限性較大,不靈活,難以進行系統升級。(2)利用A/D采集卡加上計算機組成的硬件平臺,音頻編解碼算法由計算機上的軟件實現。使用這種方案的優點是價格便宜,開發靈活并且利于系統的升級。缺點是處理速度較慢,開發難度較大。
(3)利用高精度、高速度的A/D采集芯片來完成語音信號的采集,使用可編程的數據處理能力強的芯片實現語音信號處理的算法,然后用ARM進行控制。采用這種方案的優點是系統升級能力強,可以兼容多種音頻壓縮格式甚至未來的音頻壓縮格式,系統成本較低。缺點是開發難度較大,設計者需要將音頻的解碼算法移植到對應的ARM芯片中。
音頻壓縮編碼有3種常用的標準。
(1)ITU/CCITT的G系列:G.711、G.721、G.722、G.723、G.728、G.729等。(2)MPEG系列:MPEG-1、MPEG-2、MPEG-4中的音頻編碼等。
(3)Dolby實驗室的AC系列:AC-1、AC-2、AC-3等。
2.2 音頻編碼
2.2.1 音頻編碼概述
音頻編碼目的在于降低傳輸所需要的信道帶寬,同時保持輸入語音的高質量。高頻編碼的目的在于設計低復雜度的編碼器以盡可能低的比特率實現高品質的數據傳輸。
音頻信號數字化是指將連續的模擬信號轉換成離散的數字信號,完成采樣、量化和編碼3個步驟。它又成為脈沖編碼調制,通常由A/D轉換器實現。
音頻模擬信號的數字化過程,即模擬信號——>采樣——>量化——>數字信號。
音頻編碼有3類常用方法,包括波形編碼、參數編碼和混合編碼。波形編碼是盡量保持輸入波形不變,即沖擊愛你的語音信號基本上與原始語音信號的波形相同,壓縮率比較低。參數編碼要求重建的信號聽起來與輸入語音一樣,但其波形可以不同,它是以語音信號所產生的數學模型為基礎的一種編碼方法,壓縮率比較高。混合編碼是綜合了波形編碼的高質量潛力和參數編碼的高壓縮效率和混合編碼方法,這類方法也是目前低碼率編碼的方向。
2.2.2 靜音閾值曲線
靜音閾值曲線是指在安靜環境下,人耳在各個頻率所能聽到的聲音的閾值。
2.2.3 臨界頻帶
由于人耳對不同頻率的解析度不同,MPEG-1/Audio將22kHz內可感知的頻率范圍以不同的編碼層,以及不同取樣頻率,劃分為23~26個臨界頻帶。
PS:人耳對低頻的解析度較好。2.2.4 頻域上的掩蔽效應
頻域上的掩蔽效應是指幅值較大的信號會掩蔽頻率相近的幅值較小的信號。
2.2.5 時域上的遮蔽效應
在一個很短的時間內,若出現了兩個聲音,SPL(Sound Pressure Level)較大的聲音會遮蔽SPL較小的聲音。時域遮蔽效應分為前向遮蔽(Pre-masking)和后向遮蔽(Post-masking),其中Post-masking的時間會比較長,約是Pre-masking的10倍。時域遮蔽效應有助于消除前回音。
2.3 音頻編碼基本手段
音頻編碼的基本手段包括量化器和語音編碼器。
2.3.1 量化和量化器
量化是把離散時間上的連續信號轉換成離散時間上的離散信號。量化過程追求的目標是最小化量化誤差,并盡量減低量化器的復雜度。由于這兩者本身就是一個矛盾,所以需要折衷考慮。
常見的量化器有均勻量化器、對數量化器、非均勻量化器,各自都有優缺點。均勻量化器的實現最簡單,但性能最差,僅適應于電話語音。對數量化器比均勻量化器稍微復雜,也比較容易實現,其性能比均勻量化器好。非均勻量化器根據信號的分布情況來設計量化器,信號密集的地方進行細致量化,而稀疏的地方進行粗略量化。
2.3.2 語音編碼器
語音編碼器通常分為3種類型,包括波形編碼器、聲碼器和混合編碼器。波形編碼器以構造出背景噪音在內的模擬波形為目標,作用于所有輸入信號,因此會產生高質量的樣值并且耗費較高的比特率,而聲碼器不會再生原始波形,這種編碼器會提取一組參數,這組參數被送到接收端,用來導出語音所產生的模擬波形,但聲碼器語音質量不夠好。混合編碼器融合了波形編碼器和聲碼器的長處。
波形編碼器的設計獨立于信號,適用于各種信號的編碼而不限于語音,主要包括時域編碼和頻域編碼。時域編碼包括PCM、DPCM、ADPCM等。
PCM是最簡單的編碼方式,僅僅對信號進行離散和量化,通常采用對數量化。差分脈沖編碼調制(Differential Pulse Code Modulation,DPCM)只對樣本間的差異進行編碼。前一個或多個樣本用來預測當前樣本值,并且用來做預測的樣本值越多,預測值越精確。真實值和預測值之間的差值叫做殘差,是編碼的對象、自適應差分脈沖編碼調制(Adaptive Differential Pulse Code Modulation,ADPCM),在DPCM的基礎上,根據信號的變化,適當調整量化器和預測器,使預測值更接近真實信號,殘差更小,壓縮效率更高。
頻域編碼是把信號分解成一系列不同頻率的元素,并進行獨立編碼,包括子帶編碼和DCT編碼。
子帶編碼(Sub-band Coding)是最簡單的頻域編碼技術,是將原始信號由時間域轉變為頻率域,然后將其分割為若干子頻帶(簡稱子帶),并對其分別進行數字編碼的技術。它是利用帶通濾波器(BPF)組把原始信號分割成若為子頻帶(如n個),然后通過等效于單邊帶調幅的調制特性,將各子帶搬移到零頻率附近,分別經過BPF(共n個)之后,再以規定的速率(奈奎斯特速率)對各子帶輸出信號進行取樣,并對取樣數值進行通常的數字編碼,共設置n路數字編碼器。將各路數字編碼信號送到多路復用器,最后輸出子帶編碼數據流。對不同的子帶可以根據人耳感知模型,采用不同的量化方式,以及對子帶分配不同的比特數。
離散余弦(Discrete Consine Transform,DCT)經常用于信號和圖像數據的壓縮。經過DCT后的數據能量非常集中,一般只有左上角的數值非零的,也就是能量都集中在離散余弦變換后的直流和低頻部分,這樣非常有助于數據壓縮。
聲碼器的數碼率已經降到2400或1200b/s,甚至更低。合成后語音質量有較大提高。中國于20世紀50年代末開始研制聲碼器,并用于數字通信。
聲碼器根據語音信號某種模型進行語音分析,是壓縮通信頻帶和進行保密通信的有力工具。在傳輸中只利用模型參數,在編譯碼時利用模型參數估計采用語音合成技術的語音編譯器。
聲碼器在發送端對語音信號進行分析,提取語音信號的特征參量加以編碼和加密,已取得和信道的匹配,經信息通道傳遞到接收端,再根據收到的特征參量恢復原始語音波形。分析可在頻域中進行,對語音信號進行頻譜分析,鑒別清濁音,測定濁音基頻,進而選取清濁判斷、濁音基頻和頻譜包絡做維護特征參量加以傳送。分析也可在時域中進行,利用其周期性提取一些參數進行線性預測,或對語音信號進行相關分析。根據工作原理,聲碼器可以分成:通道式聲碼器、共振峰聲碼器、圖案聲碼器、線性預測聲碼器、相關聲碼器、正交函數聲碼器,主要用于數字電話通信,特別是保密電話通道。
波形編碼器試圖保留被編碼信號的波形,能以中等比特率(32kb/s)提供高品質語音,但無法應用在低比特率場所。聲碼器試圖產生在聽覺上與被編碼信號相似的信號,能以低比特率提供可以理解的語音,但是所形成的的語音聽起來不自然。混合編碼器結合了二者的優點,具體包括以下幾個特點。
(1)RELP(Residual Excited Linear Prediction),在線性預測的基礎上,對殘差進行編碼。其機制只傳輸小部分殘差,在接收端重構全部殘差,把基帶的殘差進行復制。
(2)MPC(Multi-pulse Coding),對殘差去除相關性,用于彌補聲碼器將聲音簡單分為voiced和unvoiced而沒有中間狀態的缺陷。
(3)MBE(Multiband Excitation),即多帶激勵,其目的是避免CELP的大量運算,以便獲得比聲碼器更高的質量。
2.4 音頻編碼算法
常見的音頻編碼算法有OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等。OPUS的性能好,質量高,但由于應用時間短,暫時還沒有普及,并且不支持RTMP協議。AAC屬于有損壓縮算法,其目的是取締MP3,壓縮率很高、但還能接近原始的質量。MPEG-4標準出現后,加入了SBR技術和PS技術,目前常用規格有AAC LC、AAC HE V1、AAC HE V2。其中AAC LC具有低復雜度的特點,碼率為128kb/s。AAC HE V2采取AAC+SBR+PS,由于聲道間相同的性質很多,所以對于其他聲道只需存儲一些差異性的特征。AAC格式分為ADIF和ADTS。常見的AAC編碼庫有Libfdk_AAC、FFmpeg AAC、libfaac、libvo_aacenc等。
3 音頻深度學習
深度學習領域的學術論文很多事關于計算機視覺和自然語言處理的,而音頻分析(包括自動語音識別、數字信號處理、音樂分類、標簽、生成)領域的運用也逐漸收到了學者們的關注。目前最流行的機器學習系統,如小布助手等,都是構建于音頻信號提取模型之上的。很多研究人員也在音頻分類、語音識別、語音合成等任務上不斷努力,構建了許多工具分析、探索、理解音頻數據。
3.1 音頻深度學習的簡介
音頻深度學習主要從語音、音樂和環境聲(Environmental Sounds)3個領域出發,分析它們之間的相似點和不同點,以及一些跨領域的通用方法描述。在音頻特征表示和網絡模型方面進行了詳細的分析,對每個領域的技術演進及深度學習應用場景進行了大概的描述。截至目前,深度學習歷經3次浪潮,第1次是1957年的感知算法的提出;第2次是1986年反向傳播算法的提出;第3次2012年深度學習在圖像識別領域上的成功突破,促使深度學習的發展呈現了蓬勃發展的景象,并廣泛應用于其他領域。如基因組學、量子化學、自然語言處理、推薦系統等。
相比圖像處理領域,聲音信號處理領域是深度學習成功應用的又一個大方向,尤其是語音識別,很多大公司在研究這個方向。聲音信號是一維的序列數據,盡管可以通過FFT這樣的頻域轉換算法轉換為二維頻譜,但它的兩個維度也有特定的含義(縱軸表示頻率,橫軸表示時間幀)。
一般情況下,可根據任務目標的類型劃分為不同的任務類型。目標可以是一個全局的單標簽,可以是每個時間幀都有一個標簽,也可以是一個自由長度的序列。每個標簽可以為一個單一的類別,可以為多個類別,也可以是一個數值。聲音信號分析任務可以劃分為兩個屬性,包括預測的標簽數量(左)和標簽的類型(右)。預測一個全局的單標簽的任務成為序列分類(Sequennce Classification),這個標簽可以為一個語音、說話人、音樂鍵或者聲音場景等。當目標為多個類別的集合時,稱為多標簽序列分類(Multi-label Sequence Classification)。當目前是一個連續的數值時,稱為序列回歸(Sequence Regression)。實際上,回歸任務通常是可以離散化并且可以轉化為分類任務的。
在音頻信號處理領域,構建適當的特征表示和分類模型通常被作為兩個分離的問題。這種做法的一個缺點是人工構建的特征可以對目標任務不是最優的。深度神經網絡具有自動提取特征的能力,因此可以將上述兩個問題進行聯合優化。如在語音識別中,Mohamed等認為深度神經網絡可在底層提取一些適應說話人的特征,而在高層提取類別間的判別信息。深度學習的表征能力需要龐大的數據來支撐。
聲音處理領域中,與語音相關的開源數據集有很多,尤其是英文的;與音樂相關的開源數據集也有很多,如Million Song Dataset和MusicNet;與環境聲相關的數據集最大的就是AudioSet了,超過200萬個音頻片段,但是基本都是Weakly-label的。但實際使用中,有價值的數據還是很有限,尤其是對于環境聲來講。
語音識別指的是將語音信號轉化成文字序列,它是所有基于語音交互的基礎。對于語音識別而言,高斯混合模型(GMM)和隱馬爾可夫模型(HMM)曾占據了幾十年的發展史。
聲源識別可以利用多通道信號對聲源位置進行跟蹤和定位。跟蹤和定位的主要設備條件是話筒陣列,通常包括線性陣列、環形陣列和球形陣列等。聲源分離是指的是在多聲源混合的信號中提取單一的目標聲源,主要應用在一些穩健聲音識別的預處理及音樂編輯和重譜。聲音增強通常為語音增強,指的是通過減小噪聲來提高語音質量,主要技術是去噪自編碼器、CNN、RNN、GAN等。
3.2 十大音頻處理任務
聲音深度學習非常復雜,這里列舉10個常見的處理任務。
音頻分類是語音處理領域的一個基本問題。需要從音頻中提取特征,然后判斷具體屬于哪類。現在已有許多優秀的音頻分類應用,如 Genre Classification、Instrument Recoginition和Artist Identification等。解決音頻分類問題的常用方法是預處理音頻輸入以提取有用的特征,然后在其應用分類算法。
音頻指紋識別的目的是從音頻中提取一段特定的數字摘要,用于快速識別該段音頻是否來自音頻樣本,或從音頻庫中搜索出帶有相同數字摘要的音頻。
自動音樂標注是音頻分類的升級版。它包含多個類別,一個音頻可以同時屬于不同類,也就是有多個標簽。自動音樂標注的潛在應用為音頻創建元數據,以便日后進行搜索。
音頻分割,即根據定義的一組特征將音頻樣本分割成段。音頻分割是一個重要的預處理步驟,它可以將一個嘈雜而冗長的音頻信號分割成短小、均勻的段落,再進行序列建模。目前它的應用時心音分割,即識別心臟的特定信號,幫助診斷心血管疾病。
音源分離就是從一堆混合的音頻信號中分離出來自不同音源的信號,它最常見的應用之一就是識別并翻譯音頻中的歌詞。
節拍跟蹤的目標就是跟蹤音頻文件中每個節拍的位置,它為這項耗時耗力的任務提供了一種自動化的解決方案,因此深受視頻剪輯、音樂編輯等群體的歡迎。
音樂推薦也是一種應用場景,為每個人推薦符合其口味的音樂。表面上它是一種根據用戶收聽歷史定制個性化歌單的技術,本質上是一種信息處理技術。
音樂信息檢索是音頻處理中最困難的任務之一,實質上是建立一個基于音頻數據的搜索引擎。
音樂轉錄(Music Transcription)是另一個非常有挑戰性的音頻處理任務,它包括注釋音頻和創建一個“表”,以便于之后為它生成音樂。
音符起始點檢測是分析音頻/建立音樂序列的第一步,對于以上提到的大多數任務而言,執行音符起始點檢測是必要的。
總結
 
                            
                        - 上一篇: 电源电路设计原来是这么回事
- 下一篇: Dapr Workflow构建块的.NE
