語音訊號的前置處理並求取語音的參數,將聲音做『數位信號處理(Digit Signal Processing.DSP)』將類比訊號轉為數位,方便電腦的讀取。
因為每個人輸入的聲音大小不同。為了使聲音大小都在同一範圍內做比較,所以將聲音 做『標準化(Normalize)』,使信號的取樣值都落在同一範圍內。
切『音框』:因為聲音屬於時變的訊號,不過在『短時間』內的變化是緩慢的 ,所以若 將整段語音做切割的動作,使語音變成一小段、一小段,那麼就可以擷取到語音的所有 特性,這種每一小段稱為『音框(frame)』。取音框時,音框彼此可以重疉,取樣點數 也可自訂,我們這邊取10ms 為一音框長度。
聲音輸入的過程中,因為種種因素造成語音的前後會有靜音出現。這些靜音對於語音的 辨識不但沒有幫助,而且也會增加許多不需要的計算,使得辨識速度變慢,所以我們使 用『能量偵測法』來切除靜音的部份,藉以得到有效的資料值。
圖 1: 切取音框示意圖
『端點偵測』(End-Point Detection):聲音輸入的過程中,因為種種因素造成語音的 前後會有靜音出現。這些靜音對於語音的辨識不但沒有幫助,而且也會增加許多不需要 的計算,使得辨識速度變慢,所以我們必須要切除不需要的部分藉以得到有效的資料 值。我捫利用語音的特性來做端點的偵測的模擬。由「音量」與「音高」著手,使用「能 量偵測法」為主「越零率」為輔的方法,來切除靜音的部份,藉以得到有效的資料值。
以下是我們的分析比較:
音量,代表聲音的強度、能量(Energy),可以由音框內的訊號振幅大小來表示。如圖2。
圖 2:原始聲音訊號
一般而言,語音的特性,有聲音的音量大於氣音的音量,而氣音的音量又大於雜訊 的音量。我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測。訂「門檻」
來做有聲和無聲的區隔,當一音框能量大於門檻值為「有聲訊號」,反之則為「氣音」
或「雜訊」。
圖 3:MATLAB/Simulink 方塊圖
越零率(Zero Crossing Rate),指在每個音框中,音訊通過零點的次數,可以代表聲 音的頻率。如下圖,越零率=8。
圖 4:越零率=8
一般而言,語音的特性,雜訊及氣音的越零率均大於有聲語音。我捫利用這個語音 特性來設計「越零率」的端點偵測。也是利用門檻值的方法來做有聲無聲的區隔。當一 音框的越零率低於門檻值為「有聲訊號」,反之則為「氣音」或「雜訊」。而在模擬軟體 matlab/simulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5。
圖 5::MATLAB/Simulink 方塊圖
『預強調(pre-emphasis)』。因為根據研究聲音從嘴巴說出來後會有高頻的損失,
所以使用遇強調來還原語音。
『加窗』。將切出來的全部音框做加窗動作,也就是每個音框都乘上一個視窗函數,
乘上函數後,每一個音框在頻譜上的能量會更集中,語音的特徵也能更明顯,我們使用 的是『漢明視窗』。下圖6 為語音訊號前處理的流程圖。
圖 6:前置處理流程圖
完成上述1~6 處理的工作後,就可以開始求取『特徵參數』 我們將對四種求取的 方法(線性預估編碼(LPC)、線性預估編碼導出的倒頻譜參數(LPCC)、梅爾倒頻譜 參數(MFCC)和共振峰(Formant)做比較,選出較好的參數來進行後續辯識的工作。
倒頻譜(cepstrum)顧名思義,就是將頻譜(spectrum)的英文前四個字母反過來
線性預估編碼(linear predictive coding-LPC)
「線性預估編碼」在語音辨識上,已經被研究多年,從人的發聲構造入手,認為聲道模
際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小,即可得到線性預估係
梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)
梅爾頻率倒頻譜是倒頻譜的一種應用,梅爾頻率倒頻譜常應用在聲音訊號處理,對於聲
圖11:MFCC 模擬方塊圖 共振峰參數(Formant)
「共振峰」一般語音訊號的母音部分,都會出現重複性很高的基本週期,在一個基本週 期內的波形,就是代表語音的內容或音色。一般來說,頻譜能量的個數仍然太多,因此 一個簡單的方式,是採用頻譜能量圖的局部最大點,稱為共振峰(Formants),來作為語 音特徵。下圖12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形。
圖12:本人單音「1」共振峰的頻段 f1 f2 f3 分布圖