本文主要受參考自: 以及:
最近看essen原始碼,感覺對於asr 的一下之前的比較基礎的演算法很生疏, 在知乎上看到這個鏈結,感覺講的比較通俗易懂,拿來再理解一下。
decoder是根據字典, 聲學模型和語音模型,將輸入的語音特徵失量序列轉化為字串行。
聲學模型是對聲學、語音學、環境的變數、說話人性別、 口音等的差異的知識表示, 而語言模型是對一組字序列構成的知識表示。
聲學模型用lstm+ctc訓練,得到語音特徵到音素的對映; 語言模型用srilm工具做lm 的訓練得到 3-gram and 4-gram, 是詞與詞、詞與句子的對映, 字典是字詞對應的音素index集合,是字詞 和 音素之間的對映
haibing注: 所謂聲學模型就是把語音的聲學特徵分類對應到(解碼)音素或字詞這樣的單元 語言模型接著把字詞解碼成乙個完整的句子
先說語言模型:
語言模型表示某一字序列發生的概率,一般採用鏈式法則,把乙個句子的概率拆解成器中的每個詞的概率之積。設w是由w1, w2,...,wn組成的,則p(w)可以拆成(由條件概率公式和乘法公式):
p(w) = p(w1)p(w2/w1)p(w3/w1,w2)...p(wn/w1,w2,..wn-1), 每一項都是在之前所有詞的概率條件下,當前詞的概率。
由馬爾卡夫模型的思想,最常見的做法就是用n-元文法,即假定某乙個字的輸出只與前面n-1個字出現的概率有關係, 這種語言模型叫做 n-gram模型(一般n取3, 即t rigram), 這時候我們就可以這麼表示:
p(w) = p(w1)p(w2|w1)p(w3|w1,w2)p(w4| w1,w2,w3)...p(wn/wn-1,wn-2,...,w1) #條件太長的時候,概率就不好估計了,三元文法只取前兩個詞
= p(w1)p(w2|w1)p(w3|w1,w2)p(w4| w2,w3)...p(wn/wn-1,wn-2)
對於其中的每一項條件概率都可以用貝葉斯公式求出, 在所有的語料中統計出相鄰的字發生的概率,再統計出單個字出現的概率, 代入即可。
wang yun ( )注:
做一下解釋, 這個地方的n-gram是根據字串序列建立的,所以乙個n-gram就相當於片語, 必然會有 一些片語沒有出現過,但是也存在發生的概率,所以需要演算法生成這些生僻片語的概率。
直觀的將: n大了之後主要的問題是許多n-gram在訓練資料中沒有出現過。如果乙個n-gram整體沒有出現過,但去掉乙個詞後得到的(n-1)-gram出現過,那麼估計出的概率就是0;如果連這個(n-1)-gram都沒有出現過,那麼概率就無法估計了。常用的解決的辦法就是:smoothing(eg: good-turing smoothing)和 fall back to lower-order n-grams(採用更小的n-gram)。 見《數學之美》
』『』再說聲學模型:
聲學模型的任務是計算p(x/w), 即給定文字之後發出這段語音的概率(最後利用貝葉斯,求p(x/w)是使用)。 首先第一問題: 怎麼才能知道每個單詞發什麼音呢? 這就需要另外乙個模組,叫做詞典,看eesen的原始碼在資料準備階段就是先求出詞對應音素的dict, 它的作用就是把單詞串轉化成音素串,然後再求的語言模型和 訓練聲學模型(用lstm+ctc 訓練聲學模型).
有了dict的幫助,聲學模型就知道給定的文字串該依次發哪些音了。不過為了計算語音跟音素串的匹配程度,還需要知道每個音素的起止時間。 這是利用動歸來進行的,可以高效的找到音素的分界點,使得沒一段語音與音素的匹配程度(用概率表示)之積最大。實際使用的演算法稱為viterbi演算法,它不僅僅考慮了每一段語音和音素的匹配程度,還考慮了各個音素之間轉換的概率**換概率通過hmm估計) 實際中使用的比音素更小的單位,原理一樣(不是很確定,值得是一幀資料(25ms)嗎,一幀不到不到乙個音素的長度?)
在求音素分界點的過程中,以及在有了分界點後計算
整體思路:
具體來說就是輸入一段語音頻號,要找到乙個文字序列(由字或者詞組成),是的它與語音頻號的匹配程度最高。這個匹配程度,一般都是用概率來表示的,用x表示語音頻號,用w表示文字序列,則要解的是下面這個問題:
但是一般語音是由文字產生的,已知文字才能發出語音,所以對於上面的條件概率公式我們想要已知結果求該條件下發生概率,這時候自然而然就想到貝葉斯公式:
由上邊的步驟來看,求文字串、計算語言模型概率、求音素串、求音素分界點、計算聲學模型概率幾個步驟似乎是依次進行的。其實不然,
在實際編碼過程中,因為文字串、音素分界點都有非常多種可能,列舉是不現實的。實際中,這幾個步驟同時進行並互相制約,隨時砍掉不夠優的可能,最終在可接受的時間內求出最優解:
w* = argmaxp(w|x)。
語音識別 之 語言模型,聲學模型
聲學模型是對聲學 語音學 環境的變數 說話人性別 口音等的差異的知識表示,語言模型是對一組字序列構成的知識表示。語言模型表示某一字序列發生的概率,一般採用鏈式法則,把乙個句子的概率拆解成器中的每個詞的概率之積。設w是由w1,w2,wn組成的,則p w 可以拆成 由條件概率公式和乘法公式 p w p ...
語音識別 聲學模型(GMM HMM)
本文主要講解一下gmm hmm演算法聲學模型的大概思路!聲學模型的目的是將經mfcc提取的所有幀的特徵向量轉化為有序的音素輸出。概述如下 我們都知道hmm模型裡面有隱含狀態概念。我們需要弄明白音素hmm模型的隱含狀態與乙個音素之間的關係,通常乙個音素含有3到5個狀態,如果乙個包含代表乙個音素的hmm...
語音情感識別常見的聲學特徵
1.韻律特徵 基於基音頻率的特徵,包含jitter,基音頻率的包絡,基音頻率的線性 係數。共振峰特徵,包含一階共振峰,二階共振峰,以及共振峰的頻寬等。基於能量的特徵,包含 shimmer,4 階legendre 引數等。時間特徵,包含說話部分和不說話部分的比值,最長說話的時間等。發音清晰程度的特徵。...