首先,我們知道聲音實際上是一種波。常見的mp3、wmv等格式都是壓縮格式,必須轉成非壓縮的純波形文件來處理,比如Windows PCM文件,也就是俗稱的wav文件。wav文件裡存儲的除了一個文件頭以外,就是聲音波形的一個個點了。
在開始語音識别之前,有時需要把首尾端的靜音切除,降低對後續步驟造成的幹擾。這個靜音切除的操作一般稱為VAD,需要用到信号處理的一些技術。要對聲音進行分析,需要對聲音分幀,也就是把聲音切開成一小段一小段,每小段稱為一幀。分幀操作一般不是簡單的切開,而是使用移動窗函數來實現,這裡不詳述。幀與幀之間一般是有交疊的。
每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。
分幀後,語音就變成了很多小段。但波形在時域上幾乎沒有描述能力,因此必須将波形作變換。常見的一種變換方法是提取MFCC特征,根據人耳的生理特性,把每一幀波形變成一個多維向量,可以簡單地理解為這個向量包含了這幀語音的内容信息。這個過程叫做聲學特征提取。實際應用中,這一步有很多細節,聲學特征也不止有MFCC這一種,具體這裡不講。
至此,聲音就成了一個12行(假設聲學特征是12維)、N列的一個矩陣,稱之為觀察序列,這裡N為總幀數。觀察序列如下圖所示,圖中,每一幀都用一個12維的向量表示,色塊的顔色深淺表示向量值的大小。
接下來就要介紹怎樣把這個矩陣變成文本了。首先要介紹兩個概念:音素:單詞的發音由音素構成。對英語,一種常用的音素集是卡内基梅隆大學的一套由39個音素構成的音素集,參見The CMU Pronouncing Dictionary。漢語一般直接用全部聲母和韻母作為音素集,另外漢語識别還分有調無調,不詳述。狀态:這裡理解成比音素更細緻的語音單位就行啦。通常把一個音素劃分成3個狀态。
語音識别是怎麼工作的呢?實際上一點都不神秘,無非是:第一步,把幀識别成狀态(難點);第二步,把狀态組合成音素;第三步,把音素組合成單詞。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!