JuliusとJulian/音響モデルと言語モデルを差し替える
Last-modified: 2012-06-09 (土) 01:30:12
Top / JuliusとJulian / 音響モデルと言語モデルを差し替える
音響モデルと言語モデル †
- Julius の音響モデルと言語モデルを、日本語話し言葉コーパス(CSJ)が提供しているものに置き換えてみます。
- CSJのモデルの仕様(音声認識のための音響モデルと言語モデルの仕様)
- B3のM君の報告書に基づいています。ありがとう!
ファイルの所在 †
- 以下の「.gz」ファイルは圧縮されているので、Lhaplus 等を使って解凍しておきます。
- 音響モデルは CSJのdisc01/AM/CSJ-APS,SPS/hmmdefs.gz(学会講演・模擬講演混合モデル)を使います。
- hmmdefs.gzの例(解凍済みhmmdefs)
~o <HMMSETID> Cgid.s3km16.rg64 <STREAMINFO> 1 25 <VECSIZE> 25<NULLD><MFCC_E_D_N_Z> ~t "T_u:" <TRANSP> 5 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.792249e-01 3.207751e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 7.520196e-01 2.479804e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.776612e-01 3.223388e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... ~v "varFloor1" <VARIANCE> 25 3.339929e-01 2.451791e-01 2.975297e-01 3.267247e-01 3.486297e-01 3.032226e-01 ... ~r "rtree_64" <REGTREE> 64 <NODE> 1 2 3 <NODE> 2 6 7 ...
- 音響モデルファイルの仕様はHTK Book の 31ページ以降をチェック(monophoneの例)
- hmmdefs.gzの例(解凍済みhmmdefs)
- 言語モデルは CSJのdisc01/LM/csj.2gram.gz(順向き2gram)もしくはcsj.3gram.gz(逆向き3gram)を使います。
- 今回は3gramモデルを使ってみます。
- csj.3gram.gzの例(解凍済み 3gram.rev.gt3)
... This is a 3-gram language model, based on a vocabulary of 25299 words, which begins "<sil>", "<sp>", ".+名詞"... ... \1-grams: p_1 wd_1 bo_wt_1 \2-grams: p_2 wd_1 wd_2 bo_wt_2 \3-grams: p_3 wd_1 wd_2 wd_3 ... \1-grams: -2.0203 <UNK> -0.2804 -1.7676 <sil> -0.6200 -1.0445 <sp> -0.4112 -3.5229 .+名詞 -1.8886 -4.7400 ・+記号 -0.6363 -5.7274 ・+接尾辞 -0.4714 -5.4756 ・+動詞 -0.3582 -6.2715 10dB+名詞/数詞 -0.2525 -6.2715 16PPS+名詞/数詞 -0.3458 ...
- 言語モデルの発音辞書は CSJのdisc01/LM/csj.htkdic を使います。
- csj.htkdicの例
<sil> [<sil>] silB <sil> [<sil>] silE <sp> [<sp>] sp .+名詞 [.] t e N 10dB+名詞/数詞 [10dB] j u: d e: b i: 16PPS+名詞/数詞 [16PPS] j u: r o k u p i: p i: e s u 16PPS+名詞/数詞 [16PPS] j u: r o k u p i: p i e s u 1A+名詞 [1A] w a N w e: ...
- csj.htkdicの例
- 以上のファイルをすべて、julius/CSJ_models ディレクトリ内に入れておきます。
エラー対処 †
- M君のエラー対処ログ を参考に、以下の修正を加えます。
- トライフォン音素リスト model/phone-m/logicalTri を編集
- logicalTri 中に「dy」が存在する行をすべて削除する
- CSJ音響モデル hmmdefs の中に、音素「dy」が存在しないため
- CSJ 分節音ラベルのフォーマット にはdyがあるけれど、CSJ 付属の音響モデルのフォーマット にはdyがない。
- 「dy」を「d」に置き換えるやり方だと、重複しています(duplicated)エラーが出る。
- deleteLogicalTri.pl を logicalTri と同じディレクトリに入れて、実行します。
- dy が削除された logicalTri_2 ができます。これもjulius/CSJ_models ディレクトリ内に入れておきましょう。
- 削除する音素の変更は、ソースを直接書き換えてください。
- logicalTri 中に「dy」が存在する行をすべて削除する
- 続いて、発音辞書 csj.htkdic を修正
- M君の報告どおり、エラーが出た辞書の次の部分を修正
<csj.htkdic> L433 KADS+名詞 [KADS] k a: z u L1200 いっい+言い直し [いっい] i: i L1430 えっえー+フィラー [えっえー] e: e: L7311 ディリクレ+名詞 [ディリクレ] d i r e k u r e b u N p u L7885 バッギング+名詞 [バッギング] b a: g i N g u L8041 パッキング+名詞 [パッキング] p a q k i N g u
- M君の報告どおり、エラーが出た辞書の次の部分を修正
- 続いて、発音辞書の文頭、文末単語表記を修正
- fast.jconf では、以下のように設定されている。
## 文頭単語の名前 (単語辞書では無音の読みを付与する) -silhead '<s>' ## 文末単語の名前 (同上) -siltail '</s>'
- しかし発音辞書 csj.htkdic には、<s></s>タグが定義されていないので、Julius Book 言語モデル にしたがって、csj.htkdic の以下を修正する。
(1行目以降) <s> [<sil>] silB </s> [<sil>] silE
- しかし発音辞書 csj.htkdic には、<s></s>タグが定義されていないので、Julius Book 言語モデル にしたがって、csj.htkdic の以下を修正する。
- fast.jconf では、以下のように設定されている。
差し替えて認識実験 †
- julius ディクテーションキット付属の fast.jconf の、以下の記述を書き換える。
- 音響モデルを差し替える。
(35行目以降) ## 音響HMM定義ファイル ## # asciiフォーマット,もしくは "mkbinhmmで" 作成したバイナリ形式 # (自動判別される) #-h model/phone_m/hmmdefs_ptm_gid.binhmm -h ../CSJ_models/hmmdefs ## triphoneモデルの場合,さらに ## 論理的に出現しうる triphone -> 定義されている triphone ## の対応を指定した「HMMListファイル」が必要です. #-hlist model/phone_m/logicalTri -hlist ../CSJ_models/logicalTri_2
- 音響モデルを差し替える。
- 言語モデルを差し替える。
(20行目以降) ## 単語2-gram,3-gramファイル ## # ARPA標準形式 #-nlr /cdrom/lang_m/20k/MNP.111.20k.1.arpa.gz # 2-gram #-nrl /cdrom/lang_m/20k/MNP.111.20k.rev.1-1.10p.arpa.gz # 逆向き 3-gram -nrl ../CSJ_models/3gram.rev.gt3 # CSJの逆向き3gramモデル # もしくは # mkbingramで作成したバイナリ形式 #-d model/lang_m/web.60k.8-8.bingramv4.gz ## ## 単語辞書ファイル ## #-v model/lang_m/web.60k.htkdic -v ../CSJ_models/csj.htkdic
- これで、juliusを実行する
cd JULIUS\julius-4.1.2-win32bin bin\julius.exe -C fast.jconf