宮曉梅
摘要本文主要研究由人聲無線控制小車的動作與狀態(tài),當收到預置指令后,自行分辨聲音并自動執(zhí)行相應預設定動作,來實現人聲控制小車的目的。
關鍵詞聲音控制語音識別 DTW方法
本文所研究的聲音控制自動化小車的具體內容是:采用無線麥克,應用無線信號處理技術,基于嵌入式芯片,制作可辨別人聲,并執(zhí)行相應指令的車子,實現人聲控制車子前、后、左、右、啟動、停止、加速等等指令。具體功能實現如下。
1聲音的采集
將聲音信號送入計算機,本文利用了聲卡錄音的低層操作技術,即對winmm.lib進行API調用。具體編程時這一部分被寫在一個類中(Soundin類)。
在構造函數中設定包括最大采樣率(11025),數據緩存(作為程序一次性讀入的數據,2048),聲卡本身所帶的一些影響采樣數據等的各種參數;
調用API函數waveInGetNumDevs(返回UNIT,參數為空)檢察并打開聲音輸入設備,即聲卡;并進而使用waveInGetDevCaps得到聲卡的容量(在waveInCaps中存有該數據,對其進行地址引用,從DWORD dwFormats得到最大采樣率、聲道數和采樣位);
創(chuàng)建一個叫WaveInThreadEvent的事件對象,并賦予一個Handle,叫m_WaveInEvent,開始利用線程指針m_WaveInThread調用自定義的線程WaveInThreadProc;
對結構WAVEFORMATEX中WaveInOpen開始提供錄音設備。注意設備句柄的得到是通過對HWAVEIN 型數據m_WaveIn的引用。
由于通過這種方式進行錄音的文件格式是.wav,所以要先設置錄音長度,以及對頭文件進行一些設置:包括buffer的地址為InputBuffer的初始地址,大小為錄音長度的兩倍,類型。使用waveInPrepareHeader為錄音設備準備buffer。然后使用waveInAddBuffer函數為錄音設備送出一個輸入buffer。最后使用waveInStart(m_WaveIn)打開設備。
2聲音的預處理:
聲音信息的預處理主要包括音頭和音尾的判斷,聲音的預加重,分幀處理和窗化處理。
1)音頭音尾的判斷與提?。?/p>
對聲音信號的提取,主就是確定音頭、音尾的位置。常用的方法有過零率和短時距能量等幾種。本文就采用了過零率這個方法。首先對噪聲取樣,從這些噪聲樣本中得到噪聲的上下限,將實時信號與這個門限進行比較,得到過零率。
利用過零率的大小來判斷是否有聲音信號進入,若
( 為預設的過零率值),則表示有聲音信號進入,就找到了音頭。在找到音頭的情況下,若 ,則表示聲音結束,也就找到了音尾。音頭和音尾之間的部分就是本文用以作為識別用的聲音指令信號了。由于一般情況下人們所發(fā)出的單音都有一定的時間長度,故爾再對所得到的聲音指令信號做一次篩選,若得到的聲音信號的長度小于預設值,就認為不是本文所要的聲音信號,舍棄之。實驗表明,利用過零率和預設長度相結合起來提取聲音指令信號的方法很有效的。
2)語音信號的預加重:
本文所采用的預加重的方法是較為常用的網絡:
傳遞函數為 ;得到的信號為:
預加重的目的是為了補償語音譜的固有衰落,消除唇輻射的影響。
經過實驗發(fā)現,預加重對以后數據的處理有很大的影響。
3)分幀處理
在計算各個系數之前要先將語音信號作分幀處理。語音信號是瞬時變化的,但在10~20ms內是相對穩(wěn)定的,而本文設定的采樣頻率為11025所以本文對預處理后的語音信號S1(n)以300點為一幀進行處理,幀移為100個采樣點。
4)窗化處理
為了避免矩形窗化時對LPC系數在端點的誤差,本文采用了漢明窗函數來進行窗化。即:
其中:
3語音數據的特征提取
語音信號的特征有多種度量標準,基于比賽的各種要求選用比較有效的倒譜特征。
倒譜特征的實質就是將信號作適當的同態(tài)濾波,將信號中的卷積關系變?yōu)槌朔e關系,隨之作對數處理使之化為可分離的相加成分。
本文所選取的計算倒譜的方法是利用信號的LPC系數來計算其倒譜系數。
語音信號經過預處理,它的每個樣值均可由過去若干個樣值的線性組合來逼近,同時可以采用使實際語音抽樣與線性預測抽樣之間的均方差最小的方式,來解出一組預測的系數。這就是LPC所提取出來的信號的初始特征。綜合考慮識別誤差和識別速度的影響,本文在計算LPC 時,Q值取為8,而在計算倒譜時P值取為12。
4動態(tài)時間歸整DTW 方法的實現與改進
DTW主要是應用在孤立詞識別的算法,用來識別一些特定的指令比較好用,這個算法是基于DP(動態(tài)規(guī)劃)的算法基礎上發(fā)展而來的。由于本文預先設定是進行孤立字控制,所以本文選取了簡單易行的動態(tài)時間歸整DTW方法。
同一個人在發(fā)同一個音的總體和瞬時速度都常會在一定的范圍內所變動,所以本文希望建立待識別樣和各模板時間軸的一種變換關系,應用于識別系統中來消除它們作匹配時由于相應時間上的差異所造成的同類音距離偏大的現象。
由于聲控過程中對語音識別速度的要求是很高的,而DTW是識別過程中時間消耗的主要部分,本文的創(chuàng)新之處在于聲音控制部分,擁有低延遲,多人語音兼容,能夠實現95%以上的聲音指令,可擴展性非常廣。
參考文獻
[1]張曉林,崔迎煒.嵌入式系統設計與實踐[M].北京:北京航空航天大學出版社,2006
[2]王炳錫,屈丹.實用語音識別基礎北京國防工業(yè)出版社出版,2005