Wave-DNN-Likelihood

概要

音声認識エンジンJuliusのディクテーションキットに含まれるDNN-HMMモデルを利用して対数尤度を計算するpythonを作ってみた。

github repository

使い方

1.DNNのmodelの準備

Juliusのディクテーションキットversion 4.4を下記よりダウンロードする。
http://julius.osdn.jp/index.php?q=dictation-kit.html
model/以下を展開する。

2.各プログラムの説明

python calcu_likelihood.py

下記は対数尤度の計算例です。

対数尤度の計算例

Juliusの設定で -salign (認識結果のHMM状態ごとのアラインメント結果を出力) を利用して TriphoneとそのHMMの状態の時系列を得ることができます。


python calcu_max_likelihood.py

下記は最大対数尤度の計算例です。

最大対数尤度の計算例

DNNの出力のサンプルの、「はい」「第」「プレイ」の3個のTriphoneの時系列についての最大対数尤度(am_score=値)を計算しています。

「第」は27.36と高いのですが、Juliusの認識結果は最終的には22.069の単独音の「はい。」と判定されました。実際の発話の「プレイ」は、発話区間が無音(sp_S)にアサインされ、-46.86と低い値になっています。


3.各データの説明

以下のデータは、Juliusディクテーションキットversion 4.4に含まれるデータを利用して作成しています。

python read_binhmm.py

で作成できます。

DNNの出力の求め方については Wave-DNN を参照してください。

ライセンス

以下のライセンス文を参照のこと。


LICENSE-Julius Dictation Kit.txt
LICENSE-Julius.txt