語音辨識的原理

 

宜接相異度比較法

誠如前面所說的,如果以10KHz的取樣頻率對聲音作取樣,在聲音緩衝區中每秒鐘有10Kbytes,假設每次唸入電腦的語音長度都是1.2秒,那麼每段語音都有12Kbytes,我們可以把這4Kbytes存在電腦記憶體中,當作一個參考樣本(Reference Template),要辨識這聲音,只須把事先存在記憶體內的個個參考樣本拿來比對,即可知此次所唸的聲音為何。舉例來說,如果要辨識10個詞囊,那就是先把這10個字囊的聲音唸入電腦中,存成10個參考樣本,辨識時,只要把本次所唸的聲音(稱為測試樣本(Test Pattern)與事先存好的10個參考樣本一一比對,找出與測試樣本最像的參考樣本,即可把測試樣本辨識出來;衡量測試樣本與參考樣本之間相像的程度稱為相異度(Distortion),求取相異度最好的方法是把測試樣本的所有取樣值與參考樣本的所有取樣職兩兩相減,並求取其平方和,如下所示:

  由於測試樣本與每個參考樣本間都可求出相異度D[i],因此,找出最小相異度所屬的那個參數辨識辨識結果,譬如:第3個參數樣本與測試樣本間的相異度D[3]最小,而第3個參考樣本所存在的聲音是“芝麻開門”,那麼我們便知道剛剛所唸的測試樣本是“芝麻開門”。

  然而以上假設的情況與事實情形相差甚大。第一點:每次唸入電腦的語音長度並非正好都是1.2秒 ,有些聲音長,有些聲音短是語音的自然特性;第二點:上面所假設的情形必須建構在每次唸入聲音緩衝區的聲音都“長”的差不多,這樣求相異度才有意義,否則求相異度絕不能用這種一對一相減求平方和的方式進行。而且我們曾提過,語音是一種時變的訊號,儘管每次都唸相同的聲音,但波形卻不盡相同,如果在一個有雜音的環境中,那情況就更糟了,所以上面所做的假設是不成立的。

  在訊號辨識中,最常用的特徵參數是訊號在頻譜(Spectrum)上的能量值,譬如:高頻訊號只在高頻部分有較大的能量值,低頻訊號在低頻的能量較大,這些在頻譜上的能量值便可稱為一種特徵值。一種稱為傅立葉轉換(Fourier Transform)的方法便可以幫我們把時間軸上的訊號轉換到頻譜上來處理。然而,對語音訊號而言,另一種稱為倒頻譜的參數卻更能代表語音訊號的特性,而使辨識率提高。當然這也是經過長久以來研究語音辨識專家們所做的結果。

 

anarrow.gif (1450 bytes)下一頁  replay.gif (15720 bytes)回首頁