語(yǔ)音識(shí)別(ASR)--語(yǔ)音轉(zhuǎn)文字

語(yǔ)音識(shí)別(Automatic Speech Recognition)是以語(yǔ)音為研究對(duì)象,通過(guò)語(yǔ)音信號(hào)處理和模式識(shí)別讓機(jī)器自動(dòng)識(shí)別和理解人類(lèi)口述的語(yǔ)。語(yǔ)音識(shí)別技術(shù)就是讓機(jī)器通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù)。語(yǔ)音識(shí)別是一門(mén)涉及面很廣的交叉學(xué)科,它與聲學(xué)、語(yǔ)音學(xué)、語(yǔ)言學(xué)、信息理論、模式識(shí)別理論以及神經(jīng)生物學(xué)等學(xué)科都有非常密切的關(guān)系。

語(yǔ)音識(shí)別的基本原理

語(yǔ)音識(shí)別系統(tǒng)本質(zhì)上是一種模式識(shí)別系統(tǒng),包括特征提取、模式匹配、參考模式庫(kù)等三個(gè)基本單元,它的基本結(jié)構(gòu)如下圖所示:

上面這個(gè)圖其實(shí)很好理解,就是把語(yǔ)音輸入,我們首先就是要對(duì)輸入的語(yǔ)音進(jìn)行預(yù)處理,然后提取語(yǔ)音的特征,在此基礎(chǔ)上建立語(yǔ)音識(shí)別所需的模板。而計(jì)算機(jī)在識(shí)別過(guò)程中要根據(jù)語(yǔ)音識(shí)別的模型,將計(jì)算機(jī)中存放的語(yǔ)音模板與輸入的語(yǔ)音信號(hào)的特征進(jìn)行比較,根據(jù)一定的搜索和匹配策略,找出一系列最優(yōu)的與輸入語(yǔ)音匹配的模板。然后根據(jù)此模板的定義,通過(guò)查表就可以給出計(jì)算機(jī)的識(shí)別結(jié)果。顯然,這種最優(yōu)的結(jié)果與特征的選擇、語(yǔ)音模型的好壞、模板是否準(zhǔn)確都有直接的關(guān)系。

語(yǔ)音識(shí)別系統(tǒng)構(gòu)建過(guò)程整體上包括兩大部分:訓(xùn)練和識(shí)別訓(xùn)練通常是離線完成的,對(duì)預(yù)先收集好的海量語(yǔ)音、語(yǔ)言數(shù)據(jù)庫(kù)進(jìn)行信號(hào)處理和知識(shí)挖掘獲取語(yǔ)音識(shí)別系統(tǒng)所需要的“聲學(xué)模型”和“語(yǔ)言模型”;而識(shí)別過(guò)程通常是在線完成的,對(duì)用戶(hù)實(shí)時(shí)的語(yǔ)音進(jìn)行自動(dòng)識(shí)別識(shí)別過(guò)程通常又可以分為“前端”和“后端”兩大模塊:“前端”模塊主要的作用是進(jìn)行端點(diǎn)檢測(cè)(去除多余的靜音和非說(shuō)話聲)、降噪、特征提取等;“后端”模塊的作用是利用訓(xùn)練好的“聲學(xué)模型”和“語(yǔ)言模型”對(duì)用戶(hù)說(shuō)話的特征向量進(jìn)行統(tǒng)計(jì)模式識(shí)別(又稱(chēng)“解碼”),得到其包含的文字信息,此外,后端模塊還存在一個(gè)“自適應(yīng)”的反饋模塊,可以對(duì)用戶(hù)的語(yǔ)音進(jìn)行自學(xué)習(xí),從而對(duì)“聲學(xué)模型”和“語(yǔ)音模型”進(jìn)行必要的“校正”,進(jìn)一步提高識(shí)別的準(zhǔn)確率。


語(yǔ)音識(shí)別的技術(shù)原理

首先,我們知道聲音實(shí)際上是一種波。常見(jiàn)的mp3等格式都是壓縮格式,必須轉(zhuǎn)成非壓縮的純波形文件來(lái)處理,比如Windows PCM文件,也就是俗稱(chēng)的wav文件。wav文件里存儲(chǔ)的除了一個(gè)文件頭以外,就是聲音波形的一個(gè)個(gè)點(diǎn)了。下圖是一個(gè)波形的示例。

聲音波形圖

其實(shí)語(yǔ)音識(shí)別的聲音預(yù)處理與聲紋識(shí)別的聲音預(yù)處理有很大一部分是相似的(前面我有介紹:【自主學(xué)習(xí)】聲紋識(shí)別.2 - 簡(jiǎn)書(shū))。在開(kāi)始語(yǔ)音識(shí)別之前,有時(shí)需要把首尾端的靜音切除,降低對(duì)后續(xù)步驟造成的干擾。這個(gè)靜音切除的操作一般稱(chēng)為 VAD(【自主學(xué)習(xí)】聲紋識(shí)別.2 - 簡(jiǎn)書(shū))。

要對(duì)聲音進(jìn)行分析,需要對(duì)聲音分幀,也就是把聲音切開(kāi)一小段一小段,每小段稱(chēng)為一幀。分幀操作一般不是簡(jiǎn)單的切開(kāi),而是使用移動(dòng)窗函數(shù)(【自主學(xué)習(xí)】聲紋識(shí)別.2 - 簡(jiǎn)書(shū))來(lái)實(shí)現(xiàn)。幀與幀之間一般是有交疊的,就像下圖:

圖中,每幀的長(zhǎng)度為25毫秒,每?jī)蓭g有25-10=15毫秒的交疊。我們稱(chēng)為以幀長(zhǎng)25ms、幀移10ms分幀。

分幀后,語(yǔ)音就變成了很多小段。但波形在時(shí)域上幾乎沒(méi)有描述能力,因此必須將波形作變換。常見(jiàn)的一種變換方法是提取MFCC特征(【自主學(xué)習(xí)】聲紋識(shí)別.2 - 簡(jiǎn)書(shū))。

至此,聲音就成了一個(gè)12行(假設(shè)聲學(xué)特征是12維)、N列的一個(gè)矩陣,稱(chēng)之為觀察序列,這里N為總幀數(shù)。觀察序列如下圖所示,圖中,每一幀都用一個(gè)12維的向量表示,色塊的顏色深淺表示向量值的大小。

接下來(lái)就要把這個(gè)矩陣變成文本了。首先要介紹兩個(gè)概念:

音素:?jiǎn)卧~的發(fā)音由音素構(gòu)成。對(duì)英語(yǔ),一種常用的音素集是卡內(nèi)基梅隆大學(xué)的一套由39個(gè)音素構(gòu)成的音素集,參見(jiàn)The CMU Pronouncing Dictionary。漢語(yǔ)一般直接用全部聲母和韻母作為音素集,另外漢語(yǔ)識(shí)別還分有調(diào)無(wú)調(diào)等等,有興趣的可以自己去了解一下哈。

狀態(tài):這里理解成比音素更細(xì)致的語(yǔ)音單位就行啦。通常把一個(gè)音素劃分成3個(gè)狀態(tài)

下面我們來(lái)看看語(yǔ)音識(shí)別的工作流程:?

第一步,把幀識(shí)別成狀態(tài)(難點(diǎn))。

第二步,把狀態(tài)組合成音素。

第三步,把音素組合成單詞。

如下圖:

在上圖中,每個(gè)小豎條代表一幀若干幀語(yǔ)音對(duì)應(yīng)一個(gè)狀態(tài),每三個(gè)狀態(tài)組合成一個(gè)音素,若干個(gè)音素組合成一個(gè)單詞。也就是說(shuō),只要知道每幀語(yǔ)音對(duì)應(yīng)哪個(gè)狀態(tài),語(yǔ)音識(shí)別的結(jié)果就出來(lái)了。

那每幀音素對(duì)應(yīng)哪個(gè)狀態(tài)呢?有個(gè)容易想到的辦法,看某幀對(duì)應(yīng)哪個(gè)狀態(tài)的概率最大,那這幀就屬于哪個(gè)狀態(tài)。比如下面的示意圖,這幀在狀態(tài)S3上的條件概率最大,因此就猜這幀屬于狀態(tài)S3。

那這些用到的概率從哪里讀取呢?有個(gè)叫“聲學(xué)模型”的東西,里面存了一大堆參數(shù),通過(guò)這些參數(shù),就可以知道幀和狀態(tài)對(duì)應(yīng)的概率。獲取這一大堆參數(shù)的方法叫做“訓(xùn)練”,需要使用巨大數(shù)量的語(yǔ)音數(shù)據(jù),訓(xùn)練的方法比較繁瑣,現(xiàn)在有很多訓(xùn)練模型的工具(如:CMUSphinx Open Source Speech Recognition?,Kaldi ASR)。

但這樣做有一個(gè)問(wèn)題:每一幀都會(huì)得到一個(gè)狀態(tài)號(hào),最后整個(gè)語(yǔ)音就會(huì)得到一堆亂七八糟的狀態(tài)號(hào),相鄰兩幀間的狀態(tài)號(hào)基本都不相同。假設(shè)語(yǔ)音有1000幀,每幀對(duì)應(yīng)1個(gè)狀態(tài),每3個(gè)狀態(tài)組合成一個(gè)音素,那么大概會(huì)組合成300個(gè)音素,但這段語(yǔ)音其實(shí)根本沒(méi)有這么多音素。如果真這么做,得到的狀態(tài)號(hào)可能根本無(wú)法組合成音素。實(shí)際上,相鄰幀的狀態(tài)應(yīng)該大多數(shù)都是相同的才合理,因?yàn)槊繋芏獭?/p>

解決這個(gè)問(wèn)題的常用方法就是使用隱馬爾可夫模型(Hidden Markov Model,HMM)。這東西聽(tīng)起來(lái)好像很高深的樣子,實(shí)際上用起來(lái)很簡(jiǎn)單:首先構(gòu)建一個(gè)狀態(tài)網(wǎng)絡(luò),然后從狀態(tài)網(wǎng)絡(luò)中尋找與聲音最匹配的路徑。

這樣就把結(jié)果限制在預(yù)先設(shè)定的網(wǎng)絡(luò)中,避免了剛才說(shuō)到的問(wèn)題,當(dāng)然也帶來(lái)一個(gè)局限,比如你設(shè)定的網(wǎng)絡(luò)里只包含了“今天晴天”和“今天下雨”兩個(gè)句子的狀態(tài)路徑,那么不管說(shuō)些什么,識(shí)別出的結(jié)果必然是這兩個(gè)句子中的一句。那如果想識(shí)別任意文本呢?把這個(gè)網(wǎng)絡(luò)搭得足夠大,包含任意文本的路徑就可以了。但這個(gè)網(wǎng)絡(luò)越大,想要達(dá)到比較好的識(shí)別準(zhǔn)確率就越難。所以要根據(jù)實(shí)際任務(wù)的需求,合理選擇網(wǎng)絡(luò)大小和結(jié)構(gòu)

搭建狀態(tài)網(wǎng)絡(luò),是由單詞級(jí)網(wǎng)絡(luò)展開(kāi)成音素網(wǎng)絡(luò),再展開(kāi)成狀態(tài)網(wǎng)絡(luò)。語(yǔ)音識(shí)別過(guò)程其實(shí)就是在狀態(tài)網(wǎng)絡(luò)中搜索一條最佳路徑,語(yǔ)音對(duì)應(yīng)這條路徑的累積概率最大,這稱(chēng)之為“解碼”。路徑搜索的算法是一種動(dòng)態(tài)規(guī)劃剪枝的算法,稱(chēng)之為Viterbi算法,用于尋找全局最優(yōu)路徑。

這里所說(shuō)的累積概率,由三部分構(gòu)成,分別是:

觀察概率:每幀和每個(gè)狀態(tài)對(duì)應(yīng)的概率

轉(zhuǎn)移概率:每個(gè)狀態(tài)轉(zhuǎn)移到自身或轉(zhuǎn)移到下個(gè)狀態(tài)的概率

語(yǔ)言概率:根據(jù)語(yǔ)言統(tǒng)計(jì)規(guī)律得到的概率

其中,前兩種概率從聲學(xué)模型中獲取,最后一種概率從語(yǔ)言模型中獲取。語(yǔ)言模型是使用大量的文本訓(xùn)練出來(lái)的,可以利用某門(mén)語(yǔ)言本身的統(tǒng)計(jì)規(guī)律來(lái)幫助提升識(shí)別正確率。語(yǔ)言模型很重要,如果不使用語(yǔ)言模型,當(dāng)狀態(tài)網(wǎng)絡(luò)較大時(shí),識(shí)別出的結(jié)果基本是一團(tuán)亂麻。


語(yǔ)音識(shí)別的工作流程

語(yǔ)義識(shí)別流程圖

預(yù)處理:

1.?首尾端的靜音切除,降低干擾,靜音切除的操作一般稱(chēng)為VAD。??????????????

2.?聲音分幀,也就是把聲音切開(kāi)成一小段一小段,每小段稱(chēng)為一幀,使用移動(dòng)窗函數(shù)來(lái)實(shí)現(xiàn),不是簡(jiǎn)單的切開(kāi),各幀之間一般是有交疊的。

特征提取:主要算法有線性預(yù)測(cè)倒譜系數(shù)(LPCC)和Mel?倒譜系數(shù)(MFCC),目的是把每一幀波形變成一個(gè)包含聲音信息的多維向量;

聲學(xué)模型(AM):通過(guò)對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行訓(xùn)練獲得,輸入是特征向量,輸出為音素信息;

字典:字或者詞與音素的對(duì)應(yīng), 簡(jiǎn)單來(lái)說(shuō), 中文就是拼音和漢字的對(duì)應(yīng),英文就是音標(biāo)與單詞的對(duì)應(yīng);

語(yǔ)言模型(LM):通過(guò)對(duì)大量文本信息進(jìn)行訓(xùn)練,得到單個(gè)字或者詞相互關(guān)聯(lián)的概率;

解碼:就是通過(guò)聲學(xué)模型,字典,語(yǔ)言模型對(duì)提取特征后的音頻數(shù)據(jù)進(jìn)行文字輸出;

語(yǔ)音識(shí)別流程的舉例(只是形象表述,不是真實(shí)數(shù)據(jù)和過(guò)程):

1、語(yǔ)音信號(hào):我是機(jī)器人

2、特征提取:我是機(jī)器人\rightarrow [1 2 3 4 5 6.....]

3、聲學(xué)模型: [1 2 3 4 5 6.....]\rightarrow w o s i j i q i r n

4、字典:窩:w o;我:w o; 是:s i; 機(jī):j i; 器:q i; 人:r n;級(jí):j i;忍:r n;

5、語(yǔ)言模型(給出概率):我:0.0786, 是: 0.0546,我是:0.0898,機(jī)器:0.0967,機(jī)器人:0.6785;

?6、 輸出文字:我是機(jī)器人;


有什么問(wèn)題盡管提出來(lái)哈!


參考:

語(yǔ)音識(shí)別技術(shù)基礎(chǔ)理解 - 簡(jiǎn)書(shū)

語(yǔ)音識(shí)別的技術(shù)原理是什么? - 知乎

語(yǔ)音識(shí)別基本流程 - nsh119的博客 - CSDN博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,202評(píng)論 3 426
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,742評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,580評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,297評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,688評(píng)論 1 327
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,875評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,438評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,183評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,384評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,612評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,022評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,297評(píng)論 1 292
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,093評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,330評(píng)論 2 377

推薦閱讀更多精彩內(nèi)容