音頻信號(hào)處理
音訊的來(lái)源
當(dāng)物體產(chǎn)生震動(dòng)時(shí),就會(huì)產(chǎn)生聲音,舉例來(lái)說(shuō):當(dāng)用力揮動(dòng)手掌時(shí),就會(huì)產(chǎn)生聲音,以及蚊子翅膀快速震動(dòng)時(shí),所發(fā)出的擾人聲音。
但是,在上述例子中,所聽到的聲音是來(lái)自于空氣震動(dòng),而不是因?yàn)槭终茢[動(dòng),
原因是人耳可以聽到的聲音頻率介于20Hz到20000Hz之間,所以我們可以聽到空氣振動(dòng)產(chǎn)生的聲音,卻聽不到手掌擺動(dòng)產(chǎn)生的聲音,因?yàn)閿[動(dòng)的頻率不夠快。
音訊的資訊
聲音訊號(hào)是一種力學(xué)波,因此在傳播過(guò)程中是一種類比連續(xù)的訊號(hào),然而由于人耳是天然的傅立葉轉(zhuǎn)換器,因此音訊經(jīng)過(guò)人耳后會(huì)變成數(shù)字信號(hào)。在這些訊號(hào)中,有三個(gè)特征是處理時(shí)經(jīng)??紤]的部分,可以參考下圖:
音量:從訊號(hào)來(lái)看,音量代表的是訊號(hào)的震幅,訊號(hào)振幅越大,所發(fā)出的音量也越大。
音頻:訊號(hào)的頻率,就是所謂的音頻,也就是聲音震動(dòng)的頻率。其代表的是音調(diào)的高低,頻率越高,音調(diào)就越高。除此之外,樂(lè)器所產(chǎn)生的聲音訊號(hào),并非是單一頻率的訊號(hào),而是有基頻和泛音(倍頻)的存在。
音色:每一個(gè)人或樂(lè)器所發(fā)出的音色都不一樣,從訊號(hào)上來(lái)看,音色就是訊號(hào)的波形,因此只要利用波形分析,就可以判斷出聲音的來(lái)源,從下圖可以看到小提琴跟鋼琴的音色差異非常大。
音訊的三個(gè)特征:音量、音頻、音色。
音訊的檔案
音訊的檔案儲(chǔ)存可以分成壓縮和無(wú)壓縮兩種,常見的無(wú)壓縮檔案格式為*.wav,而壓縮檔案格式為*.mp3,關(guān)于這一部分的詳細(xì)資料可以參照音訊檔案格式。聲音檔的存取時(shí),主要有三個(gè)需要考慮因素:
取樣頻率:在訊號(hào)處理中,取樣頻率所代表的是聲音的品質(zhì),取樣的頻率越高,數(shù)字信號(hào)的波形越接近類比訊號(hào)的波形,因此聲音的品質(zhì)也越好。而在做取樣時(shí),必須遵守奈奎斯特頻率,簡(jiǎn)單來(lái)說(shuō),頻率在取樣時(shí)至少要大于原訊號(hào)頻率的2倍,才可以得到有意義的訊號(hào),也能還原成原本的訊號(hào)。
聲音分辨率:存取訊號(hào)資料點(diǎn)所用的位元數(shù),即代表其分辨率。所使用的位元數(shù)越大,每個(gè)資料點(diǎn)的數(shù)值就越精確,聲音的分辨率也越好。比較16bit與8bit兩種存取位元,16bit可以存取到較精確的數(shù)值,但是也會(huì)花比較大的硬件儲(chǔ)存空間。
聲道:聲道就是聲音的來(lái)源數(shù),常聽到的單聲道及雙聲道,代表的是聲音是否有立體感。利用兩個(gè)喇叭,撥放單聲道的聲音,左右兩個(gè)喇叭發(fā)出的聲音完全相同,因此會(huì)感覺(jué)聲音是來(lái)自兩個(gè)喇叭中間,但若是雙聲道聲音,左右兩個(gè)喇叭發(fā)出的聲音會(huì)有一定差異,因此會(huì)覺(jué)得聲音聽起來(lái)有立體感。
舉例來(lái)說(shuō),借由MATLAB輸入指令audioinfo(音訊檔案名稱),可以得到音訊檔案的相關(guān)資訊如下圖:
因?yàn)闄n案格式是*.wav,所以是無(wú)壓縮(uncompressed)。
聲道(NumChannels): 1
取樣頻率(SampleRate): 44100Hz
聲音分辨率(BitsPerSample): 16
執(zhí)行MATLAB函數(shù):audioinfo(音訊檔案名稱)
音訊的處理
由于聲音訊號(hào)是一段長(zhǎng)時(shí)間的訊號(hào),因此在處理時(shí)必須要分段進(jìn)行,在處理之前會(huì)先開一個(gè)范圍,選擇出想要處理的部分,再針對(duì)范圍內(nèi)的部分做處理,聲音資訊主要包含:音量、音色和音高,三個(gè)部分,也是最常處理的部分。
1.音量控制:音量是一種相對(duì)訊號(hào),在訊號(hào)中代表得是振幅,其計(jì)算方式是將范圍內(nèi)的訊號(hào)取平方相加,在以10為底取log,單位是分貝(dB)如下公式:
但是,在對(duì)人耳來(lái)說(shuō),音量是一種主觀的感受,根據(jù)佛萊徹森曲線(Fletcher-Munson Curve),在不同頻率之下,人耳要聽到聲音的話,對(duì)音量有一個(gè)最低要求,如下圖所示。反過(guò)來(lái)說(shuō),雖然聲音訊號(hào)的振幅相同,但是因?yàn)轭l率高低不同,對(duì)人耳的感受大小也會(huì)不同,相同聲音強(qiáng)度,耳朵對(duì)低頻的感受度較差,對(duì)3000Hz左右的聲音感受度最高,越往高頻又會(huì)慢慢降低。調(diào)整音量最簡(jiǎn)單的方式就是用加減法,首先把要處理的范圍框出來(lái),接著計(jì)算出振幅大小,最后再減掉想要減少的振幅強(qiáng)度,就可以降低音量,反之用加法就可以增強(qiáng)區(qū)域的音量。
在不同頻率之下,人耳對(duì)聲音的敏感度會(huì)有所不同。
2.音頻控制:音頻是聲音訊號(hào)處理的核心部分,最常用的簡(jiǎn)單處理方式是增頻和降頻。音頻代表得是訊號(hào)的音高,中音Do的頻率約在262Hz,在音樂(lè)中,有C(Do),#C(#Do,?Re),D(Re),#D(#Re,?Mi),E(Mi,?Fa),F(xiàn)(Fa),#F(#Fa,?Sol),G(Sol),#G(#Sol,?La),A(La),#A(#La,?Si),B(Si),12個(gè)特定的音階,每差12個(gè)音階,頻率會(huì)變?yōu)樵瓉?lái)的兩倍,其頻率設(shè)定是以440Hz為標(biāo)準(zhǔn)音頻,做進(jìn)一步數(shù)學(xué)推算,其頻率為440乘上2的n/12次方,其中n是上面列出的第幾個(gè)音階。音頻的處理最常用的是升頻和降頻,先選出想要處理的區(qū)域,接著做升降頻的動(dòng)作,這其中必須要注意奈奎斯特理論,避免訊號(hào)失真。
frequency = 2 * 440
3.頻率分析:透過(guò)離散傅立葉轉(zhuǎn)換(Discrete Fourier Transform),通常簡(jiǎn)稱為DFT,可以將一段聲音訊號(hào)轉(zhuǎn)換成其各個(gè)頻率的正弦波分量,方便做更進(jìn)一步的分析、運(yùn)算。下圖是將頻率為440Hz的正弦波訊號(hào),借由MATLAB function: fft,可以得到訊號(hào)組成頻率的分量,從圖上可以看到在440Hz的地方有特別大的值。
將正弦波的訊號(hào),經(jīng)由傅立葉轉(zhuǎn)換,可以得到訊號(hào)組成的頻率。
4.音色:每一組聲音訊號(hào)的波形都不一樣,其物理意義是音色,因此如果改變波形的變化,就可以產(chǎn)生出音色類似的聲音,處理波形最簡(jiǎn)單的方法就是用窗函數(shù)(window function),利用既有或自制的窗函數(shù),將訊號(hào)做簡(jiǎn)單的convolution就可以改變訊號(hào)的波形,創(chuàng)造出不同的音色。 4.倍頻:通常音樂(lè)的訊號(hào)不是單一頻率的訊號(hào),而是由基頻,以及其泛音(基頻的整數(shù)倍,倍頻)所組成,因此若自制電子音樂(lè)時(shí),必須注意倍頻對(duì)聲音飽和度產(chǎn)生的影響。下圖將音樂(lè)訊號(hào)經(jīng)過(guò)頻率分析后,可以看到除了在 f 0 = 330 H z {\displaystyle f_{0}=330Hz} 左右的基頻外,在 2 f 0 {\displaystyle 2f_{0}} 、 3 f 0 {\displaystyle 3f_{0}} 的部分也會(huì)有較大的分量。
音樂(lè)訊號(hào)會(huì)由基頻、泛音所組成,經(jīng)過(guò)頻率分析后,分量在基頻倍數(shù)的地方有較大的值。
5.端點(diǎn)偵測(cè):端點(diǎn)偵測(cè)的目的是使訊號(hào)處理的范圍更精確,方法很簡(jiǎn)單,只要設(shè)定一個(gè)音量閾值,若訊號(hào)小于閾值,則將其視為沒(méi)訊號(hào),但是若噪聲過(guò)高,則會(huì)產(chǎn)生誤差。
MATLAB聲音信號(hào)處理指令
[y, fs] = audioread(檔名):y是聲音訊號(hào)的向量,fs是取樣頻率。
audioinfo(檔名):回傳各種聲音檔案的相關(guān)資訊,像是取樣頻率、通道數(shù)量、聲音分辨率...等。
sound(y, fs):以fs的頻率播放聲音訊號(hào)y。
wavewrite(y, fs, filename):將y訊號(hào),以取樣速率fs,寫到filename.wav之中。
Y = fft(y):將時(shí)間軸上的訊號(hào)y,轉(zhuǎn)換為頻率軸上的訊號(hào)Y。
參考資料
http://djj.ee.ntu.edu.tw/ADSP7.pdf
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}