
語音的基本概念
語音是一個復(fù)雜的現(xiàn)象。我們基本上不知道它是如何產(chǎn)生和被感知的。我們最基礎(chǔ)的認(rèn)識就是語音是由單詞來構(gòu)成的,然后每個單詞是由音素來構(gòu)成的。但事實與我們的理解大相徑庭。語音是一個動態(tài)過程,不存在很明顯的部分劃分。通過音頻編輯軟件去查看一個語音的錄音對于理解語音是一個比較有效的方法。下面就是一個錄音在音頻編輯器里的顯示的例子。

目前關(guān)于語音的所有描述說明從某種程度上面講都是基于概率的(基于頻譜?)。這意味著在語音單元或者單詞之間并沒有確定的邊界。語音識別技術(shù)沒辦法到達100%的準(zhǔn)確率。這個概念對于軟件開發(fā)者來說有點不可思議,因為他們所研究的系統(tǒng)通常都是確定性的。另外,對于語音技術(shù)來說,它會產(chǎn)生很多和語言相關(guān)的特定的問題。
語音的構(gòu)成
在本文中,我們是按照以下方式去理解語音的構(gòu)成的:
語音是一個連續(xù)的音頻流,它是由大部分的穩(wěn)定態(tài)和部分動態(tài)改變的狀態(tài)混合構(gòu)成。
一個單詞的發(fā)聲(波形)實際上取決于很多因素,而不僅僅是音素,例如音素上下文、說話者、語音風(fēng)格等;
協(xié)同發(fā)音(指的是一個音受前后相鄰音的影響而發(fā)生變化,從發(fā)聲機理上看就是人的發(fā)聲器官在一個音轉(zhuǎn)向另一個音時其特性只能漸變,從而使得后一個音的頻譜與其他條件下的頻譜產(chǎn)生差異。)的存在使得音素的感知與標(biāo)準(zhǔn)不一樣,所以我們需要根據(jù)上下文來辨別音素。將一個音素劃分為幾個亞音素單元。如:數(shù)字“three”,音素的第一部分與在它之前的音素存在關(guān)聯(lián),中間部分是穩(wěn)定的部分,而最后一部分則與下一個音素存在關(guān)聯(lián),這就是為什么在用HMM模型做語音識別時,選擇音素的三狀態(tài)HMM模型。(上下文相關(guān)建模方法在建模時考慮了這一影響,從而使模型能更準(zhǔn)確地描述語音,只考慮前一音的影響的稱為Bi-Phone,考慮前一音和后一音的影響的稱為 Tri-Phone。)
有時候,音素會被放在上下文中考慮,這樣就形成了三元音素或者多元音素。但它與亞音素不同,他們在波形中匹配時長度還是和單一音素一樣。只是名字上的不同而已,所以我們更傾向于將這樣的多元音素稱為senone。一個senone的上下文依賴比單純的左右上下文復(fù)雜得多,它是一個可以被決策樹或者其他方式來定義的復(fù)雜函數(shù)。(英語的上下文相關(guān)建模通常以音素為基元,由于有些音素對其后音素的影響是相似的,因而可以通過音素解碼狀態(tài)的聚類進行模型參數(shù)的共享。聚類的結(jié)果稱為senone。決策樹用來實現(xiàn)高效的triphone對senone的對應(yīng),通過回答一系列前后音所屬類別(元/輔音、清/濁音等等)的問題,最終確定其HMM狀態(tài)應(yīng)使用哪個senone。分類回歸樹CART模型用以進行詞到音素的發(fā)音標(biāo)注。)
音素phones構(gòu)成亞單詞單元,也就是音節(jié)syllables。音節(jié)是一個比較穩(wěn)定的實體,因為當(dāng)語音變得比較快的時候,音素往往會發(fā)生改變,但是音節(jié)卻不變。音節(jié)與節(jié)奏語調(diào)的輪廓有關(guān)。有幾種方式去產(chǎn)生音節(jié):基于形態(tài)學(xué)或者基于語音學(xué)。音節(jié)經(jīng)常在詞匯語音識別中使用。
亞單詞單元(音節(jié))構(gòu)成單詞。單詞在語音識別中很重要,因為單詞約束了音素的組合。假如共有40個音素,然后每個單詞平均有7個音素,那么就會存在40^7個單詞,但幸運的是就算一個受過優(yōu)等教育的人也很少使用過20k個單詞,這就使識別變得可行。
單詞和一些非語言學(xué)聲音構(gòu)成了話語utterances,我們把非語言學(xué)聲音稱為fillers填充物,例如呼吸,um,uh,咳嗽等,它們在音頻中是以停頓做分離的。所以它們更多只是語義上面的概念,不算是一個句子。
語音識別過程
語音識別一般的方法是:錄制語音波形,再把波形通過靜音silences分割為多個utterances,然后去識別每個utterance所表達的意思。為了達到這個目的,我們需要用單詞的所有可能組合去匹配這段音頻,然后選擇匹配度最高的組合。
在匹配中有幾個關(guān)鍵的概念需要了解的:
特征:
由于描述一個語音,需要的參數(shù)個數(shù)非常多,這樣對處理速度的要求就很高(而且也沒必要處理那么多的信息,我們只需要處理對識別有幫助的就行),所以我們需要做優(yōu)化,進行降維。我們用幀frames去分割語音波形,每幀大概10ms,然后每幀提取可以代表該幀語音的39個數(shù)字,這39個數(shù)字也就是該幀語音的特征,用特征向量來表示。而如何提取特征向量是當(dāng)下熱門的研究課題,但這些提取方法都是由頻譜衍生出來的。