ラベル Julius の投稿を表示しています。 すべての投稿を表示
ラベル Julius の投稿を表示しています。 すべての投稿を表示

2014/11/22

Juliusのmkdfa.plをwindowsで動かせるようにした

まとめ:mkdfa.plの上の方にある$thisdirあたりを修正すれば動く

*Win版Julius dictation-kit-v.4.3.1で動作を確認しています。

Juliusで文法を自分で書くときに、
mkdfa.plというperlのスクリプトを使ってgrammar+voca -> dfaの変換をすると思うのですが、

windowsでそれをすると

fruit.grammar has 6 rules
fruit.voca    has 9 categories and 20 words
---
sh: mkfa: command not found
sh: dfa_minimize: command not found
---
no .dfa or .dict file generated

とかでてきて死にたくなります。

同じディレクトリにmkfa.exeとかdfa_minimize.exeとかあるのにnot foundとはこれいかに。

ということで、mkdfa.plをprintfデバッグします。
そうすると上の方にある$thisdirが空になっていることがわかりました。

要するにカレントディレクトリがとれてないという事になります。

ということで、上の方をちょちょいと書き換えます。

そうすると、

fruit.grammar has 6 rules
fruit.voca    has 9 categories and 20 words
---
Now parsing grammar file
Now modifying grammar to minimize states[0]
Now parsing vocabulary file
Now making nondeterministic finite automaton[8/8]
Now making deterministic finite automaton[8/8]
Now making triplet list[8/8]
9 categories, 8 nodes, 10 arcs
-> minimized: 8 nodes, 10 arcs
---
generated: fruit.dfa fruit.term fruit.dict

となって、動きます。

2014/05/29

Juliusで強制アライメントするときのオプション

日本語音声認識システム Juliusで
強制アライメントをかけるときのオプションをいつも忘れるので、メモ。

(想定)
・音声入力に対して、正解テキストがわかっているときにその出現時間を推定する。
・音響モデルはデフォルトのものを使う。(言語モデルは強制アライメントなのでいらない)
ex)台本の決まったセリフの音声と台本を入力として、各音素(単語)の出現時間を調べる。

この想定だと大体こんな感じ
julius.exe -C main.jconf -filelist list.txt -gram grammer -outfile -palign

それぞれ
-C: jconf(設定ファイル)を読み込む
-filelist: 音声ファイルのパス(複数の場合)
-gram: 文法ファイル等(hoge.grammar)の読み込み。拡張子は不要。
          テキストの長さが短い場合は-wのほうが簡単。
-outfile: 認識結果を外部ファイルに出力する。
           出力場所とファイル名は指定できない(音声ファイル.outになる)。
-palign:認識結果に各音素の開始・終了時間を追記する。
    上記想定と例の場合、これがないと開始時間がわからないので、悲しいことになる。

ちなみに、jconfについては
・jconfの中の-inputの行はrawfileだけコメントをはずす必要がある。
 そうしないとマイク入力を認識し始めて悲しい。
・-gramを使う場合はjconf側で単語辞書と文法ファイルのオプションをコメントアウトする。
 そうしないとmultiple LM errorみたいなエラーがでる。
・逆に-gramrを使わない場合はコメントアウトするとLM not found みたいなエラーがでる。

そのうち、grammarファイルとかdictファイルの作り方とまとめて、
「juliusで強制アライメント!」みたいな記事作るかもしれません。