音頻技術(shù)開發(fā)班缎,我們得對聲音有所了解蝴光,掌握音頻的基礎(chǔ)知識,這才能更好地去做技術(shù)開發(fā)达址。
首先介紹音頻基礎(chǔ)知識虱疏,然后介紹音頻的量化與編碼,音頻壓縮技術(shù)苏携,音頻編解碼器選型做瞪,AAC,希望對幫助大家右冻。
聲音三要素
- 音調(diào) : 就是音頻装蓬,男生->女生->兒童。
聲音頻率的高低叫做音調(diào)纱扭。表示人的聽覺分辨一個聲音的調(diào)子高低的程度牍帚。音調(diào)主要由聲音的頻率決定,同時也與聲音強(qiáng)度有關(guān)乳蛾。對一定強(qiáng)度的純音暗赶,音調(diào)隨頻率的升降而升降;對一定頻率的純音肃叶、低頻純音的音調(diào)隨聲強(qiáng)增加而下降蹂随,高頻純音的音調(diào)卻隨強(qiáng)度增加而上升。
- 音量: 振動的幅度因惭。
音量又稱響度岳锁、音強(qiáng),是指人耳對所聽到的聲音大小強(qiáng)弱的主觀感受蹦魔,其客觀評價尺度是聲音的振幅大小激率。這種感受源自物體振動時所產(chǎn)生的壓力,即聲壓勿决。物體振動通過不同的介質(zhì)乒躺,將其振動能量傳導(dǎo)開去。人們?yōu)榱藢β曇舻母惺芰炕煽梢员O(jiān)測的指標(biāo)低缩,就把聲壓分成“級”——聲壓級嘉冒,以便能客觀的表示聲音的強(qiáng)弱,其單位稱為“分貝”(dB)。
- 音色: 它與材質(zhì)有很大關(guān)系健爬,本質(zhì)就是諧波控乾。
音色(Timbre)是指不同的聲音的頻率表現(xiàn)在波形方面總是有與眾不同的特性。不同的物體振動都有不同的特點(diǎn)娜遵。
我們?yōu)槭裁匆私饴曇敉珊猓纛l技術(shù)不是有音頻采集,音頻編碼设拟,音頻解碼慨仿,算法等等就行了么,還要了解這么基本的知識有必要么纳胧,如果你了解個音頻技術(shù)里的倍速播放功能時镰吆,就你會發(fā)現(xiàn)當(dāng)你倍速播放時,音調(diào)也發(fā)生了變化跑慕。
音頻采集
音頻采集一般使用 AudioRecod或者 MediaRecord
音頻采集的來源是什么万皿?
一般是指麥克風(fēng):MediaRecorder.AudioSource.MIC
關(guān)于音頻是怎么采集的,到時候?qū)iT寫一篇音頻采集的文章核行,這章主要是了解音頻基礎(chǔ)知識牢硅。當(dāng)我們采集到了聲音數(shù)據(jù)后都要對聲音數(shù)據(jù)進(jìn)行量化。
音頻量化的過程
獲取模擬數(shù)據(jù)(即采集到的音頻波片段的數(shù)據(jù))——>采樣(對音頻波進(jìn)行采樣)——>量化(根據(jù)采樣點(diǎn)的值進(jìn)行一一量化)——>編碼(根據(jù)樣本序號進(jìn)行編碼)——>轉(zhuǎn)換成數(shù)字信號(即把樣本一一轉(zhuǎn)換01這樣的機(jī)器能識別的數(shù)字信號)
音頻量化基本概念
- 采樣大小: 一個采樣用多少bit存放芝雪。常用的是16bit(也有用8bit存放)
16bit 表示Y軸振幅的高度 2的16次方(聲音的振幅最高也高示過65535)
- 采樣率: 采樣頻率可分為8k 减余、16k、 32k惩系、 44.1k位岔、 48k等(對于AAC來說是采用44.1K的采樣率)
以44.1K為例,就是說每秒在模擬信號上堡牡,我們采樣441000次抒抬,比如說20Hz的頻率(20Hz也就是人聽到的最低頻率,20Hz的頻率即每秒采樣了20次)悴侵,每秒鐘正弦波里瞧剖,要采集多少次呢,要采樣2000次可免,那么對于高頻呢,比如20000Hz做粤,那么就要采樣2次
- 聲道數(shù): 單聲道浇借、雙聲道、多聲道(什么叫雙聲道怕品?就是有兩個喇叭妇垢,多聲道就是有多個喇叭)
AudioFormat.CHANNEL_IN_MONO 單聲道,一個聲道進(jìn)行采樣
AudioFormat.CHANNEL_IN_STEREO 雙聲道,兩個聲道進(jìn)行采樣
- 音頻采樣精度
采樣精度:聲音樣本大小bit/s表示闯估。位數(shù)越高灼舍,聲音的保真度越高。
采樣精度決定了記錄聲音的動態(tài)范圍涨薪,它以位(Bit)為單位骑素,比如8位、16位刚夺。8位可以把聲波分成256級献丑,16位可以把同樣的波分成65536級的信號。
它反映度量聲音波形幅度的精度侠姑。例如创橄,每個聲音樣本用16位(2字節(jié))表示,測得的聲音樣本值是在0~65535的范圍里莽红,它的精度就是輸入信號的1/65536妥畏。樣本位數(shù)的大小影響到聲音的質(zhì)量,位數(shù)越多安吁,聲音的質(zhì)量越高咖熟,而需要的存儲空間也越多;位數(shù)越少柳畔,聲音的質(zhì)量越低馍管,需要的存儲空間越少。
一般都采用這個 AudioFormat.ENCODING_PCM_16BIT(官方文檔表示薪韩,該采樣精度保證所有設(shè)備都支持)
碼率計算
要算一個PCM音頻的碼率是一件很輕松的事情确沸,采樣率 * 采樣大小 * 聲道數(shù)
例如:
采樣率為44.1KHz
采樣大小為16bit
雙聲道的PCM編碼的WAV文件
它是碼率為 44.1k * 16 * 2 =1411200b=1411.2Kb/s
每秒傳送的比特(bit)數(shù)。單位為 bps(Bit Per Second)俘陷,比特率越高罗捎,傳送數(shù)據(jù)速度越快。
PCM
PCM是英文Pulse-code modulation的縮寫拉盾,中文譯名是脈沖編碼調(diào)制桨菜。
我們知道在現(xiàn)實(shí)生活中,人耳聽到的聲音是模擬信號捉偏,PCM就是要把聲音從模擬轉(zhuǎn)換成數(shù)字信號的一種技術(shù)倒得,他的原理簡單地說就是利用一個固定的頻率對模擬信號進(jìn)行采樣,采樣后的信號在波形上看就像一串連續(xù)的幅值不一的脈沖夭禽,把這些脈沖的幅值按一定的精度進(jìn)行量化霞掺,這些量化后的數(shù)值還要進(jìn)行編碼,就是用一組二進(jìn)制碼組來表示每一個量化值讹躯,然后記錄到存儲介質(zhì)中菩彬,所有這些組成了數(shù)字音頻的產(chǎn)生過程缠劝。
音頻壓縮技術(shù)
音頻壓縮技術(shù)有兩種方法,如下:
- 消除冗余數(shù)據(jù)(久損壓縮技術(shù))
在音頻采集過程中骗灶,會采集到各種各樣的聲音惨恭,其中只有一部分聲音是我們?nèi)四軌蜃R別出來的,其他聲音我們可以直接刪除掉耙旦,這樣能夠大大減少存儲的數(shù)據(jù)脱羡,刪除掉的這些數(shù)據(jù),當(dāng)我們壓縮完之后是完全沒有了也無法恢復(fù)母廷。
- 哈夫曼無損編碼(無損壓縮技術(shù))
將人無法識別的聲音刪除之后轻黑,留下來的聲音對其壓縮編碼,壓縮后的編碼還能恢復(fù)為原來一模一樣的數(shù)據(jù)琴昆,這就稱為無損壓縮技術(shù)氓鄙。
音頻冗余信息
壓縮的主要方法是去除采集到的音頻冗余信息,所謂冗余信息包括人耳聽覺范圍外的音頻信號以及被掩蔽掉的音頻信號
信號的掩蔽可以分為:頻域掩蔽业舍、時域掩蔽
頻域掩蔽: 人耳所能察覺的聲音信號的頻率范圍為20Hz~20KHz抖拦,在這個頻率范圍以外的音頻信號屬于冗余信號;或一個強(qiáng)純音會掩蔽在其附近同時發(fā)聲的弱純音舷暮,那么弱純音也被掩蔽态罪,弱純音屬于冗余信號。
時域掩蔽: 在時間上相鄰的聲音之間也有掩蔽現(xiàn)象下面,主要原因是人的大腦處理信息需要花費(fèi)時間复颈。同步掩蔽效應(yīng)和不同頻率聲音的頻率和相對竟是有關(guān),而時間掩蔽則僅僅和時間有關(guān)沥割。如果兩個聲音在時間上特別接近耗啦,分辨會有困難(如兩個聲音音量相差較大且兩個聲音間隔時間低于5毫秒,則其中弱的那個聲音會聽不到)机杜。
下面簡單列出常見的音頻壓縮格式:
MP3帜讲,AAC,OGG椒拗,WMA似将,Opus,F(xiàn)LAC蚀苛,APE在验,m4a,AMR枉阵,等等
音頻編碼的過程
時域轉(zhuǎn)頻域變換 —(聲學(xué)模型)—> 量化編碼 —> 比特流格式 (也可以添加輔助的數(shù)據(jù))—> 比特流
音頻編解碼器選型
常見的音頻編碼器
- 常見的音頻編碼器包括 OPUS译红、AAC、Vorbis兴溜、Speex侦厚、iLBC、AMR拙徽、G.711等
- 網(wǎng)上評測結(jié)果: OPUS>AAC>Vorbis
常見的音頻編碼器他們的性能對比就不一一列舉了刨沦,感興趣的可以網(wǎng)上查閱一下。下面重點(diǎn)介紹一下AAC編碼器膘怕。
AAC介紹
為什么重點(diǎn)介紹AAC呢想诅?
- AAC是的應(yīng)用范圍廣(市面上95%以上的都是AAC編碼器)
- 傳輸協(xié)議是用rtmp,RTMP是支持AAC的不支持OPUS
- AAC是的編碼質(zhì)量非常高岛心,有一個高保幀来破,保持音頻的高保幀,這樣也導(dǎo)致很多應(yīng)用使用AAC
AAC為了解決什么問題忘古?
- AAC(Advanced Audio Coding) 目的是取代MP3格式
- MPEG-4標(biāo)準(zhǔn)出現(xiàn)后徘禁,AAC加入了SBR技術(shù)和PS技術(shù)
- 目前常用的規(guī)格有AAC LC、AAC HE V1髓堪、AAC HE V2
AAC規(guī)格
AAC +SBR -> AAC HE V1
AAC+SBR+PS -> AAC HE V2
AAC規(guī)格描述
- AAC LC: (Low Complexity)低復(fù)雜度送朱,碼流128k
- AAC HE V1: AAC LC +SBR(Spectral Band Replication)碼流64k(碼流減少了,音頻質(zhì)量也提高了)
- AAC HE V2: AAC LC +SBR + PS(Parametric Stereo)碼流32k(碼流減少了干旁,音頻質(zhì)量也提高了)
AAC格式
- ADIF(Audio Data Interchange Format)這種格式只能從頭開始解碼驶沼,常用在磁盤文件中
- ADTS(Audio Data Transport Stream)這種格式每一幀都有一個同步字,可以在音頻流的任何位置開始解碼争群,它似于數(shù)據(jù)流格式
AAC編碼庫那個好回怜?
市面上的庫:
Libfdk_AAC > ffmpeg AAC > libfaac > libvo_aacenc
Libfdk_AAC的編碼效率更高