Connectionist Temporal Classification(CTC)、音識別模型小型綜述和一個簡易的語音識別模型的tensorflow實現
CTC是一種端到端的語音識別技術,他避免了需要字或者音素級別的標註,只需要句子級別的標註就可以進行訓練,感覺非常巧妙,也很符合神經網路浪潮人們的習慣。特別是LSTM+CTC相較於之前的DNN+HMM,LSTM能夠更好的捕捉輸入中的重要的點(LSTM隨著狀態數目增加引數呈線性增加,而HMM會平方增加),CTC打破了隱馬爾科夫的假設,把整個模型從靜態分類變成了序列分類。
語音識別的評價指標
在語音識別中,在資料集 上評價模型 的好壞一般用標籤錯誤率(Label Error Rate): , 表示 和 兩個序列的編輯距離。
語音識別模型
在語音識別中,提取語音訊號的MFCC特徵 ,經過神經網路或者GMM處理後經過一個softmax層得到一個每個音素的後驗概率 , 的類別有 種, 是可能出現的字元,加1為建個符。定義 為簡單的壓縮變換,把路徑 (路徑就是一種音素出現的路線)中相鄰相同的音素合併,空音素去掉,再特徵 下定序列 出現的條件概率為:
前向後向演算法(Forward-Backward Algorithm)
定義符號 表示符號序列KaTeX parse error: Expected '}', got 'EOF' at end of input: …..l_{q-1},l_{q},容易得知,要想使得路徑 滿足一定的 , 路線上的狀態跳轉需要滿組 的先後順序,不同的符號之間可以插入blank。
定義前向變數 :
可以遞推的用 計算。
為了方便起見,我們在 相鄰標籤之間插入了空白(blank),在開始和末尾也加入了空白,這樣我們用 表示這個新的標記, 的長度就為 。在計算 字首的概率中,我們允許空白和非空白標籤之間轉移,那麼我麼有動態規劃的初始條件:
表示序列 。
遞迴算式:
KaTeX parse error: Double subscript at position 19: …pha(t,u)=y_{t'}_̲{l'_u}^t\sum_{i…
KaTeX parse error: Expected group after '\right' at end of input: …nd{array}\right
簡單地說就是現在如果狀態是blank,那麼上一個狀態有可能是blank或者是上一個字元,如果現在的狀態是字元,那他上一個狀態可能是相同的字元,可能是blank,也可能是上一個非blank字元,但如果現在的字元與上一個非空字元相同,那意味著現在的狀態不能直接從上一個非空字元跳過來,必須隔一個blank,所以只能從blank和相同的字元跳過來。
相似的定義後向變數 :