第5章 音声区間検出・入力棄却

目次

音声区間検出
振幅と零交差に基づく入力検知
GMMによる音声区間検出
デコーダベースの音声区間検出
入力棄却
GMMに基づく入力棄却
平均パワーによる棄却

Julius では,入力音声ストリームから音声が発話された区間を検出する音声区間検出(voice activity detection: VAD)の機構をいくつか持っている. デフォルトでは,音声波形の振幅と零交差に基づく入力検知のみを行う.この方法は雑音の大きい(SNRの低い)環境ではうまく動作しない傾向にあるため, より頑健な方法として,混合ガウス分布モデル (Gaussian mixture model; GMM) に基づくフレーム単位の音声・非音声識別に基づく区間検出,およびデコーダの認識中の仮説情報をもとに区間検出を行うデコーダベースVADが実装されている.また,音声認識処理の後処理として,入力区間全体を認識した後に,入力の棄却を判定する入力棄却も備えている.

これらの方法は,マイク入力のみならず音声ファイル入力に対しても行うことができる.

以下,Juliusにおける音声区間検出および入力棄却について述べる.

音声区間検出

一般に,音声区間検出は,入力ストリームに対して短時間ごとの特徴から音声区間の開始・終了を検出し,それを元に認識単位の切り出しおよび発話単位の区切りを行う方法である.以下,Julius で用いている方法について解説する.

振幅と零交差に基づく入力検知

音声信号の振幅と零交差数に基づいて,音入力の開始と終了を検出する方法である.一定のレベルを越える振幅について零交差数が一定数を越えたとき,音声始端として認識処理を開始する.そして,値が一定以下になったときに,音声の終端としてそこで入力を区切って1発話分の認識を終了する.

この方法は最も基本的な方法であり,計算量が少ないという利点がある.ただし,入力の振幅は実行環境(録音ボリューム,マイクと発話者の距離等)に大きく左右され,実行環境ごとにしきい値の調整が必要である.また,SN 比が低い環境では性能が著しく悪化する.

この振幅と零交差に基づく入力検知は,デフォルトではマイクロフォン等の直接入力に対して ON, ファイル入力に対して OFF となっている.これはオプション -cutsilence で ONに, -nocutsilence で OFF に明示的に切り替えできる.ファイル入力では,通常は1ファイル全体を1つの発話として認識が行われるが,ON にすることでマイクと同様の切り出しを行うこともできる.

振幅の検出レベルは -lv, 零交差数は -zc で指定する. 切り出しの性能は,これらのしきい値に大きく依存する.

また,Julius では開始部や末尾の減衰部分を区間に確実に含めるために,検出した区間の前後にマージンを設けて切り出している.区間前後のマージン長はそれぞれ-headmargin, -tailmargin で指定できる.

GMMによる音声区間検出

ガウス混合分布モデル (Gaussian mixture model; GMM) に基づく音声区間検出が行える.音声と非音声のGMMを定義し,入力短時間フレームごとに特徴量抽出から各 GMM の尤度計算を行い,音声GMMと非音声GMMの尤度比から,音声区間の開始・終了を判別する.

この試験的な機能は,デフォルトでは無効化されており,ソースからコンパイルする際に configure--enable-gmm-vad を指定することで有効となる.なお, 有効にした場合,あとで述べる GMM に基づく入力棄却は無効となる.

この処理は,前節の,振幅と零交差によって検知された音声波形に対して後処理として行われる.

GMMは,3状態(出力状態が1つのみ)のHMMとして, HTK形式の定義ファイルとして作成し,これを -gmm で与える.モデル内では音声のGMM, 非音声のGMM をそれぞれ複数定義できる. 棄却したい非音声GMMの名前を -gmmreject で与える (複数ある場合はカンマで区切って与える)

GMM用の特徴量抽出パラメータは,同時に使用する音響モデルと異なる特徴量を別途指定することも可能であり,同じ特徴量ベクトルを共有することもできる.別途指定する場合は,インスタンス宣言オプション -AM_GMM のあとに音響モデルと同じ要領で指定する.音響モデルと同様の任意の特徴量設定ができるが,サンプリング周波数,フレームサイズ,フレームシフト幅の3つのみ,同時に使う音響モデルと同一である必要がある(同一でない場合エラーとなる).なお,-AM_GMM の指定がない場合は,GMM の特徴量は,最初に指定された音響モデルと同じであると仮定して処理される.

デコーダベースの音声区間検出

実験的機能として,認識途中の部分文仮説の状態に基づいて認識の中断や再開, 無音区間のスキップを行うデコーダベースの音声区間検出が行える.認識処理を常に行いながら,有効な候補が現れた区間のみ認識結果を出力する.手法についての詳細は,探索アルゴリズムの章の「認識処理に基づく入力区切り」の節を参照のこと.

デコーダに基づく VAD は,デフォルトでは無効化されており,使用するにはコンパイル時に configure オプションで --enable-decoder-vad を指定し,実行時に -spsegmentを指定する.

入力棄却

入力処理の終了後に,事後的に入力を棄却することができる.認識後の後処理として,その区間全体の第1パスの認識情報や認識結果をもとに,その入力の棄却を判定する.棄却時,第2パスは実行されない.

GMMに基づく入力棄却

GMMの入力区間全体での累積尤度から,入力棄却が行える.入力終了後にその入力区間全体がどのモデルに最も近いかを識別し,非音声だった場合に, その入力を棄却する.

GMMは,3状態(出力状態が1つのみ)のHMMとして定義する.形式はHTK形式で与える.形式や使用できる特徴量の制限は音響モデルと同じである.GMMで用いるMFCC特徴量の設定は,-AM_GMMのあとに音響モデルと同様に指定する.この特徴量設定は音響モデルと別に,明示的に指定する必要があることに注意が必要である.(アルゴリズムの解説)

平均パワーによる棄却

この試験的な機能は,デフォルトでは無効化されており,ソースからコンパイルする際に configure--enable-power-reject を指定することで有効となる. リアルタイム認識時のみ用いることが出来る.なお,特徴量抽出でパワー項を用いていない場合は使用できない.