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

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

Last-modified: 2012-06-09 (土) 01:30:12
Top / JuliusとJulian / 音響モデルと言語モデルを差し替える

音響モデルと言語モデル

ファイルの所在

  • 以下の「.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の例)
  • 言語モデルは 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 ディレクトリ内に入れておきます。

エラー対処

  • トライフォン音素リスト model/phone-m/logicalTri を編集
    • logicalTri 中に「dy」が存在する行をすべて削除する
    • deleteLogicalTri.pl を 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 言語モデル にしたがって、csj.htkdic の以下を修正する。
        (1行目以降)
        <s>	[<sil>]	silB
        </s>	[<sil>]	silE

差し替えて認識実験

  • 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の音響モデル、言語モデルで認識ができている。 julius_2.jpg

音響モデルパラメータ最適化