一文讀懂音頻開發入門基礎知識

在現實生活中,音頻(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做承載,也就不存在丟包亂序等問題了。

在軟件實現時,語音的傳輸要做好是不容易的,尤其在無線網絡環境下。個人覺得它是除了音頻算法外最難的部分(算法是有門檻的,需要精通數字信號處理)。

免責聲明:本文僅代表文章作者的個人觀點,與本站無關。其原創性、真實性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容文字的真實性、完整性和原創性本站不作任何保證或承諾,請讀者僅作參考,并自行核實相關內容。

http://www.uswqb.club/style/images/nopic.gif
分享
評論
首頁
高速公路之王电子游艺
重庆福利彩票官网 开元棋牌游戏大厅下载安装 500江苏体彩新11选5 2014最好投资理财平台 青海11选5基本走势图 富贵乐园官网下载 青海十一选五预测号码今天专家推测 东方六十一最新开奖 湖南闲来麻将群 找公式原创规律六肖 2012年足球直播 pc蛋蛋赔率 36选7复式投注说明 欢乐棋牌游戏平台 幸运赛马app官方下载 上海15选5开奖走势图