Pythonで学ぶ音声認識
python ml asrPythonで学ぶ音声認識を読んでいるので、分かったところをメモする。
用語 / 記号の定義
- \(x\) : 観測値の系列。具体的には、音声の波形から計算される特徴量
- \(p\) : 音素の系列。詳しいことは知らないけど、要は、発音記号の並び・・だと思う
GMM-HMMについて
GMM-HMMは、\(\mathrm{P}(x\|p)\)を隠れマルコフモデルでモデル化する。状態が与えられたもとでの観測値の分布に混合正規分布(Gaussian Mixture Model)を使うので、GMM-HMMと呼んでいる。
状態遷移の部分は、次のようにモデル化される。
- 各音素ごとに、3種類(開始、中間、終了)の状態を持つ
- 各状態にとどまる確率は0.7。「次」の状態に移る確率は0.3。
- 音素の中での状態遷移は、必ず、この3状態をこの順番でたどる。後戻りしたりスキップしたりしない
- なので、各状態からは、自分自身に留まる(ループ)か次の状態に進むか、の2本の矢印しか出てないマルコフ過程
- ある音素の終了状態→次の音素の開始状態への遷移確率がどう定義されているのかは不明
観測の部分は、各音素の各状態ごとに、個別のGMMを仮定する。
そうすると、各フレーム(時間ステップのこと。音声認識では、各ステップは現実の1時点ではなく、前後のデータも含めて扱うのでフレームと言う、多分)において、
- どの音素か
- その音素の何番目の状態か
- その状態から発生する混合正規分布の、どのクラスタか
という変数が観測できない隠れ変数になる。GMM-HMMでは、このモデルをEMアルゴリズムで解く。計算が大変そう
テキストの式5.44を見ると、音素間の遷移確率も、単純に「0.3」と置いてそうな感じがする。そうすると、そこの遷移確率の総和が1にならないけど実害がないから気にしないという立場なんだろうか。 しかし、予測の計算のときに困るんでは・・と思ったけど、最終状態で「次に移動」という場合は、次の音素がどれかは一様分布にして、次のフレームの観測値の尤度だけで選べば良いのかもしれない。 本文中の説明でも、「音素ごとのHMM」と言ってたりするので、音素間の推移確率は、あんまり気にしてなさそう。
memo: 5.5節の「単峰正規分布を用いたHMMの学習」の前まで読んだぞ [2022-08-03 21:14:03]