在現實生活中,音頻(audio)主要用在兩大場景中:語音(voice)和音樂(music)。語音主要用于溝通通信,如打電話,現在由于語音識別的發展,人機語音交互也是語音的一個應用,目前正在風口上,好多大廠都推出了智能音箱。音樂主要用于欣賞,如音樂播放。
下面簡單介紹音頻的基礎知識:
采樣和采樣頻率:
現在是數字時代,在音頻處理時要先把音頻的模擬信號變成數字信號,這叫A/D轉換。要把音頻的模擬信號變成數字信號,就需要采樣,或者叫抽樣。當要把音頻播放出來時則需要把數字信號轉換成模擬信號,這叫D/A轉換。一秒鐘內采樣的次數稱為采樣頻率。根據Nyquist采樣定理,要想重建原始信號,采樣頻率必須大于信號中最高頻率的兩倍。采樣頻率越高,越接近原始信號,但是也加大了運算處理的復雜度。人能感受到的頻率范圍為20HZ--20kHZ, 一般音樂的采樣頻率為44.1kHZ(根據Nyquist采樣定理,采樣頻率大于信號中最高頻率的兩倍), 更高的可以是48kHZ和96kHZ,不過一般人用耳聽感覺不出差別了。語音主要是以溝通為主,不需要像音樂那樣清晰,分窄帶和寬帶。窄帶頻率范圍為300Hz--3400Hz,相應的采樣頻率為8000Hz; 寬帶頻率范圍為50Hz--7000Hz,相應的采樣頻率為16000Hz,用16k采樣的語音就稱為高清語音了。現在主流的語音采樣頻率為16kHz。
采樣位數:
數字信號是用0和1來表示的。采樣位數就是采樣值用多少位0和1來表示,也叫采樣精度,用的位數越多就越接近真實聲音。如用8位表示,采樣值取值范圍就是-128--127,如用16位表示,采樣值取值范圍就是-32768--32767。現在一般都用16位采樣位數。
聲道(channel)
通常語音只用一個聲道。而對于音樂來說,既可以是單聲道(mono),也可以是雙聲道(即左聲道右聲道,叫立體聲stereo),還可以是多聲道,叫環繞立體聲,多用于影院中。
音頻采集和播放
一般用專門的芯片(通常叫codec芯片)采集音頻,做A/D轉換,然后把數字信號通過I2S總線(主流用I2S總線,也可以用其他總線,比如PCM總線)送給CPU處理(也有的會把codec芯片與CPU芯片集成在一塊芯片中)。當要播放時CPU會把音頻數字信號通過I2S總線送給codec芯片,然后做D/A轉換得到模擬信號再播放出來。這部分對語音和音樂是通用的,只是用的采樣率有可能不一樣,音樂的采樣率用的高一些。
編解碼
如果把采樣值直接保存或者發送,會占用很大的存儲空間或者很大的流量。以16kHz采樣率16位采樣位數單聲道為例,一秒鐘就有32000(2字節*16000)字節。通常需要把采樣后的數字信號壓縮后才保存或者發送。把采樣值壓縮叫編碼(encode),形成比特流(bitstream). 把比特流還原出采樣值叫解碼(decode),統稱編解碼(codec)。
音頻的編解碼
通常也把音頻采樣過程叫脈沖編碼調制編碼,即PCM(Pulse Code Modulation)編碼,采樣值也叫PCM值。為了節省保存空間或者發送流量,會對PCM值壓縮。
目前主要有三大技術標準組織制定壓縮標準:
a)ITU,主要制定有線語音的壓縮標準(g系列),有g711/g722/g726/g729等。
b)3GPP,主要制定無線語音的壓縮標準(amr系列等), 有amr-nb/amr-wb。后來ITU吸納了amr-wb,形成了g722.2。
c)MPEG,主要制定音樂的壓縮標準,有11172-3,13818-3/7,14496-3等。
一些大公司或者組織也制定壓縮標準,比如iLBC,OPUS。
無損壓縮和有損壓縮:把PCM數據壓縮后無任何損傷叫無損壓縮,不過壓縮程度不高。把PCM數據壓縮后有損傷叫有損壓縮,最多可以壓到幾十分之一,不過音頻質量差些。
音頻前后處理
音頻處理是指對PCM數據(也叫線性數據)進行處理,從而達到想要的效果,如回聲消除。
對音頻編碼前的PCM數據進行處理叫音頻前處理,主要用于語音中,來去除各種干擾,使聲音更清晰,主要有回聲消除、噪聲抑制、增益控制等。
對音頻解碼后的PCM數據進行處理叫音頻后處理,主要用于音樂中,來產生各種音效,使音樂更動聽,主要有均衡器、混響等。
音頻傳輸
這里主要是指網絡傳輸,通過網絡把音頻數據傳給對方。語音和音樂兩種場景下有明顯的區別。
對于語音來說,實時性要求很高,主要用RTP/UDP做承載,由于UDP是不可靠傳輸,會丟包亂序等,影響語音質量,所以要采取相應的措施,主要有PLC(丟包補償)、FEC(前向糾錯)、重傳、jitter buffer等。
對于音樂來說,以前是播放本地音樂文件,近些年隨著網絡帶寬的加大,可以播放云端的音樂文件了。播放時要把音樂文件傳給播放器,一般是邊播放邊下載,播放音樂對實時性要求不高,一般用HTTP/TCP做承載,也就不存在丟包亂序等問題了。
在軟件實現時,語音的傳輸要做好是不容易的,尤其在無線網絡環境下。個人覺得它是除了音頻算法外最難的部分(算法是有門檻的,需要精通數字信號處理)。
評論
查看更多