next up previous
次へ: 計算量およびメモリ量を削減した文音声認識アルゴリズム 上へ: main1 戻る: まえがき

単語のtrigram modelを使用した文音声認識システム

言語情報として単語のtrigramを用いた場合の求める解は、文候 補 $ l(w_1,w_2,..,w_N)$を以下のように定式化して、これを最大 にする文(単語列) $ w_1,w_2,...,w_N$ を選び出すことである。

$ \sum \log (P_a(w_i)) + \alpha \times \sum
\log(P(w_{i}\vert w_{i-2},w_{i-1})) \ \ \ 1) $

ここで$P_a(w_i)$は単語$w_i$の音響尤度、 $P(w_i\vert w_{i-2},w_{i-1})$は単語$w_{i-2}$の次に単語$w_{i-1}$が現 れたときに$w_i$に遷移する確率、$\alpha $は音響尤度と単語 の尤度を結びつける結合定数である。

従来、連続単語認識のためのアルゴリズムとして知られている Viterbiサーチ(one-pass DP)は各単語のHMMの最後の状態と単語の 最初の状態の遷移においてtrigramの確率を掛けることによって 1)式を満たす最尤の単語列の候補を計算することができる。ただ し、 trigramは2つ前の単語から現在の単語に遷移する確率値で あるため、認識アルゴリズムでは、現在の単語と 1つ前の単語の最大累積尤度を、つねに保持する必要がある。そ のためbigramと比較すると、必要なメモリ量が大幅に増加する。 認識単位を単語とした場合のアルゴリズムを表  2 に示す。

図 1 に、このアルゴリズムの簡略図を 示す。この図では、認識語彙数を$w_1$$w_2$の2単語で、単語の HMMは 4-state 3-loop で、状態は0から2までとする。縦軸はHMMの 状態で、横軸は時間で、奥行きは語彙を示している。

図中○ 1から○ 7は表 1 に示され る状態までの最大累積尤度であるとする。



表 1: 図中の状態
番号 時間 前の単語 現在の単語 現在の状態
1 $t-1$ $w_2$ $w_2$ 0
2 $t-1$ $w_2$ $w_2$ 1
3 $t $ $w_2$ $w_2$ 1
4 $t-1$ $w_2$ $w_2$ 2
5 $t-1$ $w_1$ $w_2$ 2
6 $t-1$ $w_2$ $w_1$ 0
7 $t $ $w_2$ $w_1$ 0


単語の最初の状態以外は、前時刻の同一状態と前時刻の1つ前の最 大累積尤度の2遷移のうち、最大累積尤度の高い方を選択する。例 えば、○ 3は○ 1の遷移と○ 2から遷移の最大累積尤 度の高い方を選択する。しかし、単語の最初の状態は、前時刻の最 初の同一の最大累積尤度と各認識単語の最後の最大累積尤度に現在 の単語に遷移するtrigramの連鎖確率値を掛けたものから遷移の最 大累積尤度の高い方を選択する。例えば、○ 7は ○ 4にtrigramの値( $p(w_1\vert w_2,w_2) ^ \alpha $) を掛けたものと ○ 5にtrigramの値( $p(w_1\vert w_1,w_2) ^ \alpha $)と○ 6の遷移の尤 度の高い方を選択する。これを全状態に対して計算を行なう。

図 1: 単語のtrigramを用いたViterbiサーチの略図
\begin{figure}\fbox{ \epsfile{file=figure1.eps,width=70mm}}\end{figure}




表 2: 単語のtrigramを用いたViterbiサーチのアルゴリズム
[定義]
$ l_w $:単語$w$における状態数
$ a^w_{ij}$:単語$w$における状態$s_i$から状態$s_j$への遷移確率
$b^w_j(v)$:単語$w$の状態$s_j$におけるベクトル$v$の出力確率
$P(w_0\vert(w_2,w_1))$ 単語$w_2,w_1$が出現したときに
$w_0$に遷移する確率
$Q$:語彙数
$T$:入力フレーム数
$O(t)$:フレーム$t $における観測ベクトル
$G_t(w_1,w_0,i)$:前単語$w_1$,単語$w_0$,状態$i$での
フレーム$t $までの最大累積尤度
$\alpha $ :音響尤度と言語の連鎖確率の結合値
[初期化]
$w_0=0,...,Q-1$においてstep1を実行
1) $G_0(start,w_0,0) = P(w_0\vert start,start) ^ \alpha $
$start$は文頭を意味
[ Viterbiサーチ]
$t=0,1,..,T-1$においてstep2,step6を実行
2) $ w_1=0,...,Q-1 $においてstep3を実行
3) $w_0=0,...,Q-1$においてstep4を実行
4) $ i=0,1,...,l_{w_0}-2 $においてstep5を実行
5) $G_t(w_1,w_0,i)=$
$ \max( G_{t-1}(w_1,w_0,i) \times a^{w_0}_{i,i} \times b^{w_0}_i(O_t),$
$ G_{t-1}(w_1,w_0,i-1) \times a^{w_0}_{i-1,i} \times b^{w_0}_{i-1}(O_t)) $
[単語境界の計算]
6) $ w_1=0,1,...,Q-1 $ においてstep7を実行
7) $ w_0=0,1,...,Q-1 $ においてstep8を実行
8) $ \Delta = \mathop{\rm max}_{ 0\leq w_2 \leq Q-1 } ( G_{t-1}(w_2,w_1,l_{w_1}-2) $
$ \times a^{w_1}_{l_{w_1}-2,l_{w_1}-1} \times b^{w_1}_{l_{w_1}-1}(O_t) \times P(w_0\vert w_2,w_1) ^ \alpha $
もし $\Delta \geq G_t(w_1,w_0,0) $ ならば $G_t(w_1,w_0,0)=\Delta$


next up previous
次へ: 計算量およびメモリ量を削減した文音声認識アルゴリズム 上へ: main1 戻る: まえがき
Jin'ichi Murakami 平成13年10月4日