トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS

JuliusとJulian/音響モデルと言語モデルを差し替える の変更点

Top / JuliusとJulian / 音響モデルと言語モデルを差し替える

#freeze
*音響モデルと言語モデル [#y7f775c7]

-Julius の音響モデルと言語モデルを、日本語話し言葉コーパス(CSJ)が提供しているものに置き換えてみます。
--[[CSJのモデルの仕様(音声認識のための音響モデルと言語モデルの仕様):http://www.kokken.go.jp/katsudo/seika/corpus/public/manuals/asr.pdf]]
--B3のM君の報告書に基づいています。ありがとう!

***ファイルの所在 [#f8803127]
-以下の「.gz」ファイルは圧縮されているので、[[Lhaplus:http://www.forest.impress.co.jp/lib/arc/archive/archiver/lhaplus.html]] 等を使って解凍しておきます。
-音響モデルは 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:http://shower.human.waseda.ac.jp/~m-kouki/pass/htkbook.pdf]] の 31ページ以降をチェック(monophoneの例)

-言語モデルは 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: 
 ...

-以上のファイルをすべて、julius/CSJ_models ディレクトリ内に入れておきます。

***エラー対処 [#ta62a94c]
-[[M君のエラー対処ログ:http://shower.human.waseda.ac.jp/~m-kouki/pass/mi0708riken.txt]] を参考に、以下の修正を加えます。

-トライフォン音素リスト model/phone-m/logicalTri を編集
--logicalTri 中に「dy」が存在する行をすべて削除する
---CSJ音響モデル hmmdefs の中に、音素「dy」が存在しないため
---[[CSJ 分節音ラベルのフォーマット:http://www.kokken.go.jp/katsudo/seika/corpus/csj_report/06.pdf#page=2]] にはdyがあるけれど、[[CSJ 付属の音響モデルのフォーマット:http://www.kokken.go.jp/katsudo/seika/corpus/public/manuals/asr.pdf#page=5]] にはdyがない。
---「dy」を「d」に置き換えるやり方だと、重複しています(duplicated)エラーが出る。
--[[deleteLogicalTri.pl:http://shower.human.waseda.ac.jp/~m-kouki/pg_public/deleteLogicalTri.pl.txt]] を logicalTri と同じディレクトリに入れて、実行します。
---dy が削除された logicalTri_2 ができます。これもjulius/CSJ_models ディレクトリ内に入れておきましょう。
---削除する音素の変更は、ソースを直接書き換えてください。

-続いて、発音辞書 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

-続いて、発音辞書の文頭、文末単語表記を修正
--fast.jconf では、以下のように設定されている。
 ## 文頭単語の名前 (単語辞書では無音の読みを付与する)
 -silhead '<s>'
 
 ## 文末単語の名前 (同上)
 -siltail '</s>'
---しかし発音辞書 csj.htkdic には、<s></s>タグが定義されていないので、[[Julius Book 言語モデル:http://julius.sourceforge.jp/juliusbook/ja/desc_lm.html]] にしたがって、csj.htkdic の以下を修正する。
 (1行目以降)
 <s>	[<sil>]	silB
 </s>	[<sil>]	silE

***差し替えて認識実験 [#s5df6cff]
-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
--CSJの音響モデル、言語モデルで認識ができている。
&ref(http://shower.human.waseda.ac.jp/~m-kouki/images/julius_2.jpg);~

***音響モデルパラメータ最適化 [#a88c798b]
-[[参考:http://www.ar.media.kyoto-u.ac.jp/lab/bib/report/KAW-orc04.pdf]]