音頻訊號處理,又稱音訊處理,音樂訊號處理等,可以用來調整音樂訊號的震幅、頻率、波形等資訊。
利用一些簡單的加減乘除,升降頻,及窗函式(window function),就可以做出各式的聲音訊號,創造屬於自己的電子音樂。
基本介紹
- 中文名:音頻信號處理
- 外文名:Audio signal processing
簡介
音訊的來源
- 當物體產生震動時,就會產生聲音,舉例來說:當用力揮動手掌時,就會產生聲音,以及蚊子翅膀快速震動時,所發出的擾人聲音。
- 但是,在上述例子中,所聽到的聲音是來自於空氣震動,而不是因為手掌擺動,
- 原因是人耳可以聽到的聲音頻率介於20Hz到20000Hz之間,所以我們可以聽到空氣振動產生的聲音,卻聽不到手掌擺動產生的聲音,因為擺動的頻率不夠快。
音訊的資訊
- 聲音訊號是一種力學波,因此在傳播過程中是一種類比連續的訊號,然而由於人耳是天然的傅立葉轉換器,因此音訊經過人耳後會變成數位訊號。在這些訊號中,有三個特徵是處理時經常考慮的部分,可以參考下圖:
- 音量:從訊號來看,音量代表的是訊號的震幅,訊號振幅越大,所發出的音量也越大。
- 音頻:訊號的頻率,就是所謂的音頻,也就是聲音震動的頻率。其代表的是音調的高低,頻率越高,音調就越高。除此之外,樂器所產生的聲音訊號,並非是單一頻率的訊號,而是有基頻和泛音(倍頻)的存在。
- 音色:每一個人或樂器所發出的音色都不一樣,從訊號上來看,音色就是訊號的波形,因此只要利用波形分析,就可以判斷出聲音的來源,從下圖可以看到小提琴跟鋼琴的音色差異非常大。
音訊的檔案
- 取樣頻率:在訊號處理中,取樣頻率所代表的是聲音的品質,取樣的頻率越高,數位訊號的波形越接近類比訊號的波形,因此聲音的品質也越好。而在做取樣時,必須遵守奈奎斯特頻率,簡單來說,頻率在取樣時至少要大於原訊號頻率的2倍,才可以得到有意義的訊號,也能還原成原本的訊號。
- 聲音解析度:存取訊號資料點所用的位元數,即代表其解析度。所使用的位元數越大,每個資料點的數值就越精確,聲音的解析度也越好。比較16bit與8bit兩種存取位元,16bit可以存取到較精確的數值,但是也會花比較大的硬體儲存空間。
- 聲道:聲道就是聲音的來源數,常聽到的單聲道及雙聲道,代表的是聲音是否有立體感。利用兩個喇叭,撥放單聲道的聲音,左右兩個喇叭發出的聲音完全相同,因此會感覺聲音是來自兩個喇叭中間,但若是雙聲道聲音,左右兩個喇叭發出的聲音會有一定差異,因此會覺得聲音聽起來有立體感。
- 舉例來說,藉由MATLAB輸入指令audioinfo(音訊檔案名稱),可以得到音訊檔案的相關資訊如下圖:
- 因為檔案格式是*.wav,所以是無壓縮(uncompressed)。
- 聲道(NumChannels): 1
- 取樣頻率(SampleRate): 44100Hz
- 聲音解析度(BitsPerSample): 16
MATLAB聲音信號處理指令
- [y, fs] = audioread(檔名):y是聲音訊號的向量,fs是取樣頻率。
- audioinfo(檔名):回傳各種聲音檔案的相關資訊,像是取樣頻率、通道數量、聲音解析度...等。
- sound(y, fs):以fs的頻率播放聲音訊號y。
- wavwrite(y, fs, filename):將y訊號,以取樣速率fs,寫到filename.wav之中。
- Y = fft(y):將時間軸上的訊號y,轉換為頻率軸上的訊號Y。