李宏毅語音識別課程摘要

語音識別Overview

  1. 語音識別輸出的數據類型(Token)分類
  • Phoneme:發音的基本單位(類似於音標)
    需要一個lexicon記錄word與phonemes的對應關係:
    在這裏插入圖片描述

  • Grapheme:書寫的基本單位
    中文:一個字
    英文:26個英文單詞
    無需lexicon的映射關係

  • word:詞
    不同語言的詞彙都非常的多

-morpheme:有意義的基本單位(長度在word和grapheme之間)
例如unbreakable的morepheme可以拆分成:「un」 「break」 「able」 三個morepheme
但是morpheme的獲得比較麻煩,需要語言學家或者統計的方式獲得

目前這四種輸出的佔比爲:可以看出用grapheme和phoneme的佔據了70%以上
在這裏插入圖片描述
2. 語音識別的輸入
通常語音識別的輸入可以看成長度是T,維度是d的向量集合。
如下圖:
在這裏插入圖片描述
對於一段聲音信號:首先會經過一個window(25ms)得到一個向量,再經過採樣、(39-dim)MFCC或者(80-dim)fbank:
在這裏插入圖片描述

  1. ASR深度學習模型介紹
  • LAS(listen、attend、spell)
  • CTC(Connectionist Temporal Classification)
  • RNN-T(RNN Transducer)

LAS

LAS:由三個部分組成Listen、Attend、Spell

  • Listen相當於一個編碼器,編碼器可以由RNN、CNN、Self attention組成。
    通常還有有一些下采樣的手段,比如Truncated self-attention是在一個範圍內進行attention。
    在這裏插入圖片描述
  • Attend:
    這裏的attention與之前用的attention並沒有什麼區別,
    在這裏插入圖片描述
    match的方式常見的有Dot-product:
    h,z分別經過一個矩陣進行transform在進行dot product得到一個a。
    在這裏插入圖片描述
    對於不同的h經過match後的結果,在經過一個softmax得到c,c就是decoder的輸入。
    在這裏插入圖片描述
  • Spell:
    根據attention得到的c作爲輸入,再經過一個RNN網絡進行譯碼:
    在這裏插入圖片描述
  • 訓練過程:
    在這裏插入圖片描述
    這裏的訓練過程大體與分類問題一致,將預測的結果通過交叉熵之後再進行反向傳播。其中的一個trick是Teacher Forcing, 因爲decoder在預測一個輸出的時候需要上一個的結果,因此必須保證上一個預測結果是正確的,才能保證此輸出是正常的,因此引入了一個Teacher Forcing,強制輸入的是上一個的正確輸出。

CTC

因爲一個窗口的語音信號非常的短(10ms),很有可能這段acoustic features包含的信息非常少,因此ctc加入了一個空符號代表一個不知道該輸出什麼。
目前CTC通常用在decoder中,其主要解決的問題是輸入的音頻特徵與輸出token的對齊問題alignment。
在這裏插入圖片描述
CTC的問題:CTC的decoder的每個輸出是獨立地,並且只輸入了一個向量。
在這裏插入圖片描述
解決CTC出現的兩個問題,提出了RNA模型,其實就是將decode的output用RNN連接起來,添加了輸出與輸出之間的依賴性。
在這裏插入圖片描述

RNN-T

與RNA最大的不同就是,可以當輸入一個h的時候可以持續的輸出output直到結束。
例如「th」就只有一個發音但是卻有兩個字母。
在這裏插入圖片描述
此外爲了方便訓練RNN-T在output之上又加入了一層RNN,去忽略產生爲空的output
在這裏插入圖片描述

一些ASR網絡的總結

在這裏插入圖片描述