JuliusとJulian/音響モデルと言語モデルを差し替える の変更点
Top / JuliusとJulian / 音響モデルと言語モデルを差し替える
- 追加された行はこの色です。
- 削除された行はこの色です。
- 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]]