
語(yǔ)音識別技術(shù),也被稱(chēng)為自動(dòng)語(yǔ)音識別Automatic Speech Recognition (ASR),其目標是將人類(lèi)語(yǔ)音中的詞匯內容轉換為計算機可讀的輸入,例如按鍵、二進(jìn)制編碼或者字符序列。與說(shuō)話(huà)人識別及說(shuō)話(huà)人確認不同,后者嘗試識別或確認發(fā)出語(yǔ)音的說(shuō)話(huà)人而非其中所包含的詞匯內容。

智能硬件行業(yè)的不斷發(fā)展,對計算機深度學(xué)習能力提出了更大的挑戰。為了滿(mǎn)足人工智能技術(shù)快速產(chǎn)品化的訴求,進(jìn)一步提升用戶(hù)體驗,未來(lái)的智能終端必須具備出色的與人交流、溝通的能力。人工智能產(chǎn)品這種交互功能的實(shí)現是與語(yǔ)音解碼器技術(shù)密切相關(guān)的。本期“大牛講堂”主講潘復平博士將為我們科普“語(yǔ)音識別專(zhuān)題”之語(yǔ)音解碼技術(shù)。

什么是語(yǔ)音識別解碼器技術(shù)?地平線(xiàn)潘大牛帶你飛
當前主流的語(yǔ)音識別系統多基于統計理論的貝葉斯準則。其典型框架一般包含前端處理、聲學(xué)模型、語(yǔ)言模型、解碼器和后處理等五個(gè)基本模塊。解碼器模塊主要完成的工作包括:給定輸入特征序列

(1.1)
通過(guò)貝葉斯公式,公式(1.1)可以改寫(xiě)為:
(1.2)
其中,分母項


其中

公式(1.3)中,已經(jīng)引入了Viterbi最大近似假設,這個(gè)假設會(huì )帶來(lái)一定的精度損失,但是其運算量卻大大降低了。在解碼過(guò)程中,各種解碼器的具體實(shí)現可以是不同的。按搜索空間的構成方式來(lái)分,有動(dòng)態(tài)編譯和靜態(tài)編譯兩種方式。關(guān)于靜態(tài)編譯,是把所有知識源統一編譯在一個(gè)狀態(tài)網(wǎng)絡(luò )中,在解碼過(guò)程中,根據節點(diǎn)間的轉移權重獲得概率信息。
由AT&T提出的Weighted Finite State Transducer(WFST)方法是一種有效編譯搜索空間并消除冗余信息的方法。就動(dòng)態(tài)編譯而言,只是預先將發(fā)音詞典編譯成狀態(tài)網(wǎng)絡(luò )構成搜索空間,其他知識源在解碼過(guò)程中根據活躍路徑上攜帶的歷史信息動(dòng)態(tài)集成。
按搜索算法的時(shí)間模式來(lái)分,有異步與同步兩種方式。時(shí)間異步的搜索算法通過(guò)棧解碼器(Stack Decoder)來(lái)實(shí)現。時(shí)間同步的方法就是常說(shuō)的Viterbi解碼?;跇?shù)拷貝的幀同步解碼器是目前比較流行的方法。下面將針對搜索空間的兩種構成方式與幀同步解碼算法作進(jìn)一步詳細介紹。
動(dòng)態(tài)解碼網(wǎng)絡(luò )僅僅把詞典編譯為狀態(tài)網(wǎng)絡(luò ),構成搜索空間。編譯的一般流程為:首先把詞典中的所有單詞并聯(lián)構成并聯(lián)網(wǎng)絡(luò );然后把單詞替換為音素串;接著(zhù)把每個(gè)音素根據上下文拆分為狀態(tài)序列;最后把狀態(tài)網(wǎng)絡(luò )的首尾根據音素上下文一致的原則進(jìn)行連接,構成回環(huán)。這樣編譯出來(lái)的網(wǎng)絡(luò )一般稱(chēng)為線(xiàn)性詞典(Linear Lexicon)(如圖2 - 1),它的特點(diǎn)是每個(gè)單詞的狀態(tài)序列保持嚴格獨立,不同單詞的狀態(tài)之間沒(méi)有節點(diǎn)共享,因此內存占用比較大,解碼過(guò)程中的重復計算比較多。
為了克服這些缺點(diǎn),一般把單詞首尾發(fā)音相同的部分進(jìn)行合并,稱(chēng)為樹(shù)型詞典(Tree Lexicon)(如圖2 - 2)。由于大量相同狀態(tài)的節點(diǎn)被合并在一起,因此可以顯著(zhù)降低搜索空間的規模,減少解碼過(guò)程的運算量。
圖2-1 線(xiàn)性詞典示例
圖2-2 樹(shù)形詞典示例
在樹(shù)形詞典構成的搜索空間中進(jìn)行動(dòng)態(tài)解碼,如果使用N-Gram語(yǔ)言模型,當前詞


基于樹(shù)拷貝的解碼搜索需要用到動(dòng)態(tài)規劃(Dynamic Programming,DP)算法。動(dòng)態(tài)規劃的主要意圖是把一個(gè)全局最優(yōu)問(wèn)題的求解分解為小的局部問(wèn)題并且形成遞歸聯(lián)系。下面首先引入兩個(gè)變量的定義:
·
·

(3-1)&(3-2)
這里

在詞的邊界,我們需要為每個(gè)單詞w找到它的最佳前驅詞v。為此我們定義:
(3-3)
這里

(3-4)&(3-5)
算法的流程見(jiàn)表3-1。從表中可以看出,DP遞歸包含兩個(gè)層次:
聲學(xué)層,主要是處理詞內部一些假設的重新組合;
詞對層,處理Bigram語(yǔ)言模型的使用。
該搜索過(guò)程是一個(gè)時(shí)間同步寬度有限的搜索策略。為了降低存儲量的需要,可以引入一個(gè)回溯數組用于記錄在每一個(gè)時(shí)間幀的詞邊界(v, w)和它們的開(kāi)始時(shí)間。在句子的結束處,通過(guò)對回溯數組的一些查找操作可以很輕松地獲得識別出來(lái)的單詞序列。
對于大詞表連續語(yǔ)音識別中的完全DP搜索,在每個(gè)時(shí)間幀,DP遞歸程序面臨巨大數目的HMM狀態(tài)。如果采用一定的剪枝策略,則可以把計算量降低,同時(shí)保證識別率基本不下降。常用的剪枝操作主要從如下三個(gè)方面進(jìn)行:
· 全局累計概率剪枝
根據搜索空間中所有活躍路徑累計概率的最大值,設定一個(gè)門(mén)限,把累計概率小于該門(mén)限的那些路徑裁剪掉。
· 語(yǔ)言模型剪枝
當活躍路徑到達單詞末尾后,可以取得單詞ID,同時(shí)在累計概率中加入語(yǔ)言模型得分。由于語(yǔ)言模型概率的加入,增大了不同路徑間的概率區分性,因此可以把到達詞尾的路徑歸集在一起,根據累計概率最大值設置門(mén)限,把累計概率小于門(mén)限的那些路徑裁剪掉。
· 直方圖剪枝
這種剪枝方法是繪制活躍路徑累計概率的直方圖分布,然后根據事先設定的最大允許活躍路徑數量上限,算出合適的累計概率門(mén)限,把小于門(mén)限的活躍路徑裁剪掉,以避免路徑數量的爆炸性增長(cháng)。
大詞表連續語(yǔ)音識別所常用的四類(lèi)模型:HMM、跨詞三音子模型、詞典以及語(yǔ)言模型實(shí)際上是在不同粒度上描述了可能的搜索空間:
1. HMM 模型定義了每個(gè)三音子所對應的HMM狀態(tài)序列。語(yǔ)音識別時(shí),通過(guò)對每一幀所對應的狀態(tài)進(jìn)行假設,可以在HMM的狀態(tài)序列上進(jìn)行搜索,從而產(chǎn)生可能的三音子序列;
2. 跨詞三音子模型定義了從三音子到音素的對應關(guān)系。根據HMM模型產(chǎn)生的三音子序列,可以得到可能的音素序列;
3. 詞典定義了音素序列所表示的詞。根據跨詞三音子模型產(chǎn)生的可能的音素序列,可以得到相應的詞序列;
4. 語(yǔ)言模型定義了詞序列出現的概率。根據詞典產(chǎn)生的詞序列,可以得到該序列的概率得分;
上述過(guò)程是非常復雜的,系統需要同時(shí)考慮4類(lèi)模型以及模型之間的約束關(guān)系,以完成“從可能的狀態(tài)序列到可能的詞序列之間的轉換”。
20世紀90年代末期,美國電話(huà)電報公司(AT&T)的Mohri率先提出了以加權有限狀態(tài)轉換器(Weighted Finite-state Transducer: WFST)對語(yǔ)音識別過(guò)程中所使用的各種模型進(jìn)行描述。此后,相關(guān)的研究紛紛出現。與傳統動(dòng)態(tài)網(wǎng)絡(luò )解碼相比,基于 WFST的識別系統在識別之前利用上述模型產(chǎn)生語(yǔ)音識別用的靜態(tài)解碼網(wǎng)絡(luò ),這個(gè)網(wǎng)絡(luò )包含了所有可能的搜索空間。
在此基礎上進(jìn)行語(yǔ)音識別時(shí),系統只需要將這個(gè)識別網(wǎng)絡(luò )(WFST網(wǎng)絡(luò ))讀入內存,然后基于聲學(xué)模型就可以在這個(gè)網(wǎng)絡(luò )上完成解碼,不需要像原有系統那樣同時(shí)考慮聲學(xué)模型、詞典、語(yǔ)言模型等。這樣簡(jiǎn)化了語(yǔ)音識別系統的設計與實(shí)現。實(shí)驗表明,用WFST構建的語(yǔ)音識別系統具有識別速度快,識別效果好的特性。
所謂靜態(tài)網(wǎng)絡(luò )就是根據已知的模型,將它們代表的搜索空間進(jìn)行組合,從而得到一個(gè)統一的識別網(wǎng)絡(luò ):從輸入HMM狀態(tài)序列,直接得到詞序列及其相關(guān)得分?;赪FST構建靜態(tài)解碼網(wǎng)絡(luò )是一個(gè)相對復雜的過(guò)程。構建網(wǎng)絡(luò )的第一步是將上述四類(lèi)模型轉換成WFST表示。然后再依次進(jìn)行WFST網(wǎng)絡(luò )的合并和壓縮,從而得到完整的語(yǔ)音識別靜態(tài)搜索空間。
我們用H、C、L、G分別表示上述HMM模型、三音子模型、字典和語(yǔ)言模型的WFST形式。不難看出,這四個(gè)模型在語(yǔ)音識別中相當于4個(gè)串聯(lián)的子系統。每一個(gè)子系統的輸出是下一個(gè)子系統的輸入。使用WFST的合成操作可以實(shí)現將上述串聯(lián)系統組合成一個(gè) WFST。使用HMM的狀態(tài)序列作為這個(gè) WFST的輸入時(shí),系統將直接輸出詞序列以及相應的得分。
但是,直接求

(5.1)
其中的det表示確定化算法;min表示最小化算法;為 ε-Removal 算法。式(5-1) 在逐步引入信息的同時(shí)采用確定化算法對網(wǎng)絡(luò )結構進(jìn)行優(yōu)化。而在將所有信息引入后,需要采用WFST的最小化算法以及ε-Removal算法完成進(jìn)一步的優(yōu)化,使得形成的識別網(wǎng)絡(luò )較小。
基于靜態(tài)解碼網(wǎng)絡(luò )的搜索算法與基于動(dòng)態(tài)網(wǎng)絡(luò )的動(dòng)態(tài)規劃搜索算法類(lèi)似,也是采用了迭代計算,讓概率信息在網(wǎng)絡(luò )節點(diǎn)間傳遞更新。不同之處在于,由于靜態(tài)網(wǎng)絡(luò )已經(jīng)把搜索空間全部展開(kāi),所以它不需要根據解碼路徑的前驅詞構造搜索空間副本,也不需要在詞尾節點(diǎn)根據歷史信息查詢(xún)語(yǔ)言模型概率,它只需要根據節點(diǎn)間的轉移權重計算聲學(xué)概率和累計概率即可,因此解碼速度非???。
聯(lián)系客服