摘要:語音轉寫文字ASR技術的基本概念與數學原理簡介。
本文分享自華爲雲社區《新手語音入門(三): 語音識別ASR算法初探 | 編碼與解碼 | 聲學模型與語音模型 | 貝葉斯公式 | 音素》,作者:黃辣雞 。
語音識別技術的發展已有數十年發展歷史,大體來看可以分成傳統的識別的方法和基於深度學習網絡的端到端的方法。
無論哪種方法,都會遵循“輸入-編碼-解碼-輸出”的過程。
圖1 語音識別過程
編碼過程:
語音識別的輸入是聲音,屬於計算機無法直接處理的信號,所以需要編碼過程將其轉變爲數字信息,並提取其中的特徵進行處理。編碼時一般會將聲音信號按照很短的時間間隔,切成小段,成爲幀。對於每一幀,可以通過某種規則(例如MFCC特徵)提取信號中的特徵,將其變成一個多維向量。向量中的每個維度都是這幀信號的一個特徵。
圖2 語音識別編碼過程
解碼過程:
解碼過程則是將編碼得到的向量變成文字的過程,需要經過兩個模型的處理,一個模型是聲學模型,一個模型是語言模型。聲學模型通過處理編碼得到的向量,將相鄰的幀組合起來變成音素,如中文拼音中的聲母和韻母,再組合起來變成單個單詞或漢字。語言模型用來調整聲學模型所得到的不合邏輯的字詞,使識別結果變得通順。兩者都需要大量數據用來訓練。
圖3 語言模型處理過程
已知一段音頻信號,處理成聲學特徵向量Acoustic Feature Vector後表示爲X=[x1,x2,x3,…]X=[x1,x2,x3,…],其中x_ixi表示一幀特徵向量;可能的文本序列表示爲W=[w1,w2,w3,…]W=[w1,w2,w3,…],其中wi表示一個詞,求W∗=argmaxwP(W∣X),這便是語音識別的基本出發點。並且由貝葉斯公式可知:
其中,P(X|W)P(X∣W)稱之爲聲學模型(Acoustic Model, AM), P(W)P(W)稱之爲語言模型(Language Model, LM),由於P(W)P(W)一般是一個不變量,可以省去不算。
目前許多研究將語音識別問題看做聲學模型與語音模型兩部分,分別求取P(X|W)P(X∣W)和P(W)P(W)。後來,基於深度學習和大數據的端對端(End-to-End)方法發展起來,直接計算P(W|X)P(W∣X),把聲學模型和語言模型融爲了一體。
語音識別的問題可以看做是語音到文本的對應關係,語音識別問題大體可以歸結爲文本基本組成單位的選擇上。單位不同,則建模力度也隨之改變。
圖4 語音識別的基本途徑
根據圖中文本基本組成單位從大到小分別是:
- 整句文本,如“Hello
World”,對應的語音建模尺度爲整條語音。 - 詞,如孤立詞“Good”、“World”、對應的語音建模尺度大約爲每個詞的發音範圍。
- 音素,如將“world”進一步表示爲“/wɘrld//wɘrld/”,其中的每個音標作爲基本單位,對應的語音建模尺度則縮減爲每個音素的發音範圍。
- 三音素,即考慮上下文的音素,如將音素“/d//d/”進一步表示爲“{/l-d-sil, /u-d-l/,…}/l−d−sil,/u−d−l/,…”,對應的語音建模尺度是每個三音素的發音範圍,長度與單音素差不多。
- 隱馬爾可夫模型狀態,即將每個三因素都用一個三狀態隱馬爾可夫模型表示,並用每個狀態作爲建模粒度,對應的語音建模尺度將進一步縮短。
上面每種實現方法都對應着不同的建模粒度,大體可以分爲以隱馬爾可夫模型結構和端對端的結構。後面兩期博文將詳細介紹基於兩種結構的語音識別算法設計。
參考
- 語音識別基本法 - 清華大學語音和語言技術中心[PDF]