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