1

Juliusの辞書が作れない

こうなってしまう

book.grammar has 4 rules
book.voca has 5 categories and 7 words
---
---
no .dfa or .dict file generated
エラーもでない。
juliusのBBSで事例を探すと”—“の間にエラーが表示されるらしいけど何も書かれない。
mkdfa.plをprintfデバッグしたら、どうやら同じディレクトリにあるmkfaが正常に終了していないらしい。


また、mkfaを直接実行すると
zsh: そのようなファイルやディレクトリはありません: /home/sho/tmp/src/grammar-kit-v4.1/bin/mkfa
になってしまう。もちろんmkfaは存在する。


■手順
を見ながら文法と発音を作る。
本を探す簡単な文法「(書誌名)をください」もしくは「(書誌名)ください」を認識する辞書を作りたい。


book.grammar
S      : NS_B BOOK_ PLEASE NS_E
BOOK_ : BOOK
BOOK_ : BOOK WO
PLEASE : KUDASAI

book.voca
% BOOK
インターフェース i N t a a f e e s u
マンガ m a N g a
雑誌 z a s sh i
% WO
を o
% KUDASAI
ください k u d a s a i
% NS_B
<s> silB
% NS_E
<s> silE

Julius記述文法音声認識実行キットのLinux版をダウンロードしてきて、Ubuntu11.04でtarを展開。
辞書作成する
perl ~/tmp/src/grammar-kit-v4.1/bin/mkdfa.pl book
するとこうなる
/tmpbook.grammar has 4 rules
book.voca has 5 categories and 7 words
---
---
no .dfa or .dict file generated
book.termだけ生成される。

■試したこと
  • 記述文法音声認識実行キットに付いているサンプル辞書は実行できた
  • キットに付いているサンプルのgrammarとvocaファイルから辞書を生成しようとすると、やはり”no .dfa or .dict file generated”になる
  • 文法や発音ファイルをshift_jisやeuc-jpで保存しなおしたが変化なし
  • mkdfa.plをprintfデバッグしたら、mkfaがエラー(1)を返していた
  • mkdfa.plが生成する中間ファイルを使って自分でmkfaを呼び出すと、mkfaが存在しないと言われる
  • zshと相性が悪いのかもしれないので、bashで試しても同様にmkfaが存在しないと言われる

0

Juliusで音声認識したのだが、精度が低い

Julius動かしてみたけど、なんだか認識精度が低くてどうしょうもないのですが、何か間違っているのでしょうか・・?


■まずMacにインストールした

sudo port install julius
homebrewにはパッケージはない。


http://julius.sourceforge.jp/からソース持ってきてコンパイルしても使えるらしいが、juliusは32bitでしか動かないし、Lionではcoreaudioではなくportaudioを使わなければならないらしいのでportaudioも32bitでインストールして・・と色々面倒だ。
homebrewのportaudioをuniversal binaryでインストールできなかったので、自分でjuliusをビルドしてインストールはあきらめた。


音声認識する
which julius_demo
julius_demo
でしばらく待つと、
<<< please speak >>>
となってMacのマイクから音声認識できる。
でも大体間違ってる。


wavファイルから認識してみる。
QuickTimePlayerで[ファイル]→[新規オーディオ収録]で録音できる。
m4aで保存されるので、juliusが認識できるフォーマット(モノラル16kHzのwav)にffmpegで変換した。
ffmpeg -i test.m4a -ac 1 -ar 16000 test.wav

julius_demo -input stdin < test.wav
wav入れたらテキストになってでてきた。でもやっぱりあまりうまく認識してくれない・・


julius_demoの中身はshell scriptだった。
#!/bin/sh
/opt/local/bin/julius -C /opt/local/lib/julius/fast.jconf "$@"


■Ubuntuにもインストールした
sudo apt-get install julius libjulius-dev

ディクテーションキットが別に必要になる。
ダウンロードする。
mkdir ~/tmp
cd ~/tmp
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fjulius%2F51158%2Fdictation-kit-v4.1.tar.gz"
tar -zxvf dictation-kit-v4.1.tar.gz


さっき録音したファイルを認識させる
julius -C ~/tmp/dictation-kit-v4.1/fast.jconf -charconv EUC-JP UTF-8 -input stdin < test.wav
やっぱり精度が悪い・・どうすれば・・・


-moduleを付けて起動するとTCP port 10050でサーバーが起動する。