Android音頻開發(1):基礎知識

Android音頻開發(1):基礎知識

導讀

人的說話頻率基本上為300Hz3400Hz,但是人耳朵聽覺頻率基本上為20Hz20000Hz。

對于人類的語音信號而言,實際處理一般經過以下步驟:

人嘴說話——>聲電轉換——>抽樣(模數轉換)——>量化(將數字信號用適當的數值表示)——>編碼(數據壓縮)——>

傳輸(網絡或者其他方式)

——> 解碼(數據還原)——>反抽樣(數模轉換)——>電聲轉換——>人耳聽聲。

  • 抽樣率

實際中,人發出的聲音信號為模擬信號,想要在實際中處理必須為數字信號,即采用抽樣、量化、編碼的處理方案。

處理的第一步為抽樣,即模數轉換。

簡單地說就是通過波形采樣的方法記錄1秒鐘長度的聲音,需要多少個數據。

根據奈魁斯特(NYQUIST)采樣定理,用兩倍于一個正弦波的頻繁率進行采樣就能完全真實地還原該波形。

所以,對于聲音信號而言,要想對離散信號進行還原,必須將抽樣頻率定為40KHz以上。實際中,一般定為44.1KHz。

44.1KHz采樣率的聲音就是要花費44000個數據來描述1秒鐘的聲音波形。

原則上采樣率越高,聲音的質量越好,采樣頻率一般共分為22.05KHz、44.1KHz、48KHz三個等級。

22.05 KHz只能達到FM廣播的聲音品質,44.1KHz則是理論上的CD音質界限,48KHz則已達到DVD音質了。

  • 碼率

對于音頻信號而言,實際上必須進行編碼。在這里,編碼指信源編碼,即數據壓縮。如果,未經過數據壓縮,直接量化進行傳輸則被稱為PCM(脈沖編碼調制)。
要算一個PCM音頻流的碼率是一件很輕松的事情,采樣率值×采樣大小值×聲道數 bps。
一個采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的WAV文件,它的數據速率則為 44.1K×16×2 =1411.2 Kbps。
我們常說128K的MP3,對應的WAV的參數,就是這個1411.2 Kbps,這個參數也被稱為數據帶寬,它和ADSL中的帶寬是一個概念。將碼率除以8,就可以得到這個WAV的數據速率,即176.4KB/s。

這表示存儲一秒鐘采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的音頻信號,需要176.4KB的空間,1分鐘則約為10.34M,這對大部分用戶是不可接受的,尤其是喜歡在電腦上聽音樂的朋友,要降低磁盤占用

只有2種方法,降低采樣指標或者壓縮。降低指標是不可取的,因此專家們研發了各種壓縮方案。最原始的有DPCM、ADPCM,其中最出名的為MP3。

所以,采用了數據壓縮以后的碼率遠小于原始碼率。

一、發的主要應用有哪些?

音頻播放器,錄音機,語音電話,音視頻監控應用,音視頻直播應用,音頻編輯/處理軟件,藍牙耳機/音箱,等等。

二、頻開發的具體內容有哪些?

(1)音頻采集/播放

(2)音頻算法處理(去噪、靜音檢測、回聲消除、音效處理、功放/增強、混音/分離,等等)

(3)音頻的編解碼和格式轉換

(4)音頻傳輸協議的開發(SIP,A2DP、AVRCP,等等)

三、 音頻應用的難點在哪?

延時敏感、卡頓敏感、噪聲抑制(Denoise)、回聲消除(AEC)、靜音檢測(VAD)、混音算法,等等。

四、 音頻開發基礎概念有哪些?

在音頻開發中,下面的這幾個概念經常會遇到。

1. 采樣率(samplerate)

采樣就是把模擬信號數字化的過程,不僅僅是音頻需要采樣,所有的模擬信號都需要通過采樣轉換為可以用0101來表示的數字信號,示意圖如下所示:

file

藍色代表模擬音頻信號,紅色的點代表采樣得到的量化數值。

采樣頻率越高,紅色的間隔就越密集,記錄這一段音頻信號所用的數據量就越大,同時音頻質量也就越高。

根據奈奎斯特理論,采樣頻率只要不低于音頻信號最高頻率的兩倍,就可以無損失地還原原始的聲音。

通常人耳能聽到頻率范圍大約在20Hz~20kHz之間的聲音,為了保證聲音不失真,采樣頻率應在40kHz以上。常用的音頻采樣頻率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。

對采樣率為44.1kHz的AAC音頻進行解碼時,一幀的解碼時間須控制在23.22毫秒內。

通常是按1024個采樣點一幀

分析:

1. AAC

一個AAC原始幀包含某段時間內1024個采樣點相關數據。

用1024主要是因為AAC是用的1024點的mdct。

音頻幀的播放時間=一個AAC幀對應的采樣樣本的個數/采樣頻率(單位為s)

采樣率(samplerate)為 44100Hz,表示每秒 44100個采樣點,

所以,根據公式,

音頻幀的播放時長 = 一個AAC幀對應的采樣點個數 / 采樣頻率

則,當前一幀的播放時間 = 1024 * 1000/44100= 23.22 ms(單位為ms)

48kHz采樣率,

則,當前一幀的播放時間 = 1024 * 1000/48000= 21.333ms(單位為ms)

22.05kHz采樣率,

則,當前一幀的播放時間 = 1024 * 1000/22050= 46.439ms(單位為ms)

2. MP3

mp3 每幀均為1152個字節,

則:

每幀播放時長 = 1152 * 1000 / sample_rate

例如:sample_rate = 44100HZ時,

計算出的時長為26.122ms,

這就是經常聽到的mp3每幀播放時間固定為26ms的由來。

2. 量化精度(位寬)

上圖中,每一個紅色的采樣點,都需要用一個數值來表示大小,這個數值的數據類型大小可以是:4bit、8bit、16bit、32bit等等,位數越多,表示得就越精細,聲音質量自然就越好,當然,數據量也會成倍增大。

常見的位寬是:8bit 或者 16bit

3. 聲道數(channels)

由于音頻的采集和播放是可以疊加的,因此,可以同時從多個音頻源采集聲音,并分別輸出到不同的揚聲器,故聲道數一般表示聲音錄制時的音源數量或回放時相應的揚聲器數量。

單聲道(Mono)和雙聲道(Stereo)比較常見,顧名思義,前者的聲道數為1,后者為2

4. 音頻幀(frame)

是用于測量顯示幀數的量度。所謂的測量單位為每秒顯示幀數(Frames per Second,簡稱:FPS)或“赫茲”(Hz)。

音頻跟視頻很不一樣,視頻每一幀就是一張圖像,而從上面的正玄波可以看出,音頻數據是流式的,本身沒有明確的一幀幀的概念,在實際的應用中,為了音頻算法處理/傳輸的方便,一般約定俗成取2.5ms~60ms為單位的數據量為一幀音頻。

這個時間被稱之為“采樣時間”,其長度沒有特別的標準,它是根據編×××和具體應用的需求來決定的,我們可以計算一下一幀音頻幀的大小:

假設某通道的音頻信號是采樣率為8kHz,位寬為16bit,20ms一幀,雙通道,則一幀音頻數據的大小為:

int size = 8000 x 16bit x 0.02s x 2 = 5120 bit = 640 byte

五、常見的音頻編碼方式有哪些?

上面提到過,模擬的音頻信號轉換為數字信號需要經過采樣和量化,量化的過程被稱之為編碼,根據不同的量化策略,產生了許多不同的編碼方式,常見的編碼方式有:PCM 和 ADPCM,這些數據代表著無損的原始數字音頻信號,添加一些文件頭信息,就可以存儲為WAV文件了,它是一種由微軟和IBM聯合開發的用于音頻數字存儲的標準,可以很容易地被解析和播放。

我們在音頻開發過程中,會經常涉及到WAV文件的讀寫,以驗證采集、傳輸、接收的音頻數據的正確性。

六、常見的音頻壓縮格式有哪些?

首先簡單介紹一下音頻數據壓縮的最基本的原理:因為有冗余信息,所以可以壓縮。

(1) 頻譜掩蔽效應: 人耳所能察覺的聲音信號的頻率范圍為20Hz~20KHz,在這個頻率范圍以外的音頻信號屬于冗余信號。

(2) 時域掩蔽效應: 當強音信號和弱音信號同時出現時,弱信號會聽不到,因此,弱音信號也屬于冗余信號。

下面簡單列出常見的音頻壓縮格式:

MP3,AAC,OGG,WMA,Opus,FLAC,APE,m4a,AMR,等等

七、Adndroid VoIP相關的開源應用有哪些 ?

imsdroid,sipdroid,csipsimple,linphone,WebRTC 等等

八、音頻算法處理的開源庫有哪些 ?

speex、ffmpeg,webrtc audio module(NS、VAD、AECM、AGC),等等

九、Android提供了哪些音頻開發相關的API?

音頻采集: MediaRecoder,AudioRecord

音頻播放: SoundPool,MediaPlayer,AudioTrack

音頻編解碼: MediaCodec

NDK API: OpenSL ES

十、音頻開發的延時標準是什么?

ITU-TG.114規定,對于高質量語音可接受的時延是300ms。一般來說,如果時延在300~400ms,通話的交互性比較差,但還可以接受。時延大于400ms時,則交互通信非常困難。

有問題請在下方留言或者加入星球

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容

  • 前言: 記載資料多為網絡搜集,侵刪。 根據最近接觸的整機項目做了一些整機音頻相關基礎知識的總結,如有不足或表述問題...
    Gawain_Knowknow閱讀 8,207評論 0 4
  • 概述 本片文章主要介紹音頻基礎,在做音頻開發之前首先必須要對音頻的相關概念了解。以下是具體內容概述: 常見的音頻格...
    iosmedia閱讀 2,691評論 0 1
  • 音頻技術開發,我們得對聲音有所了解,掌握音頻的基礎知識,這才能更好地去做技術開發。首先介紹音頻基礎知識,然后介紹音...
    安仔夏天勤奮閱讀 7,474評論 3 18
  • ### YUV顏色空間 視頻是由一幀一幀的數據連接而成,而一幀視頻數據其實就是一張圖片。 yuv是一種圖片儲存格式...
    天使君閱讀 3,335評論 0 4
  • 一、聲音的三要素 1.音調 人耳對聲音高低的感覺稱為音調(也叫音頻)。音調主要與聲波的頻率有關。聲波的頻率高,則音...
    一葉知秋0830閱讀 15,488評論 0 10