Julianで音声コマンダ for Squeak(linux)

Juliusという音声認識ソフトウェアを使ってSqueakで遊ぶための準備をメモる。対象は単語なのでjulianである。

コンパイル

./configure --enable-julian
make

音声キャプチャにOSSでなくALSAを使いたい場合はこちら

./configure --with-mictype=alsa --enable-julian
make

Ubuntu 6.10でOSS版にて動かそうと,2日程苦労したが、サウンドレコーダから音量調整ツールを開いて、デバイスの変更で'OSS Mixer'を選択したらうまくマイク入力ができた。

単語認識の準備

grammarファイル(.grammer)ファイルの作成

http://julius.sourceforge.jp/grammar.html を参考にgrammarファイル(.grammer)ファイルを作成する。

S       :  NS_B TARGET OP NS_E
# ターゲット
TARGET :  APPLI
TARGET :  OBJECT
# 動作(OP)
OP  :  OPEN
OP  :  MOVE_UP
OP  :  MOVE_DOWN
OP  :  MOVE_LEFT
OP  :  MOVE_DOWN
vocaファイル(.voca)ファイルの作成

ひらがなから音素列表記へ変換する perl スクリプト "yomi2voca.pl"はEUC-JPなのでUbuntu標準UTF-8では正しく動かないので、"yomi2voca.pl"をUTF-8で保存して動かす。

../julian-kit-v3.1/bin/yomi2voca-utf.pl < Smalltalk.pre.voca > Smalltalk.voca

vocaファイルの例

% APPLI
Workspace	わーくすぺーす
Browser		ぶらうざ

% OBJECT
EYE_LEFT	ひだりめ
EYE_RIGHT	みぎめ
NOSE		はな
MOUTH		くち
EYEBROW_LEFT	ひだりまゆげ
EYEBROW_RIGHT	みぎまゆげ

% OPEN
open		おーぷん

% MOVE_UP
up		うえ

% MOVE_DOWN
down		した

% MOVE_LEFT
left		ひだり

% MOVE_RIGHT
right		みぎ

% NS_B
<s>            silB
% NS_E
</s>           silE
Julian形式への変換
../julian-kit-v3.1/bin/mkdfa.pl Smalltalk
Smalltalk.grammar has 8 rules
Smalltalk.voca    has 9 categories and 15 words
---
Now parsing grammar file
Now modifying grammar to minimize states[-1]
Now parsing vocabulary file
Now making nondeterministic finite automaton[5/5]
Now making deterministic finite automaton[5/5] 
Now making triplet list[5/5]
---
-rw-r--r-- 1 kawa90 kawa90 102 2007-01-02 00:52 Smalltalk.dfa
-rw-r--r-- 1 kawa90 kawa90 345 2007-01-02 00:52 Smalltalk.dict
-rw-r--r-- 1 kawa90 kawa90  85 2007-01-02 00:52 Smalltalk.term

実行

マイク入力で音声認識を実行してみる。

./julius/julian -quiet -C k.jconf 

pass1_best: <s> Browser open </s>
pass1_best_score: -3920.888916

sentence1: <s> Browser open </s>

認識結果は逐次標準出力に出てくる。Squeakからはこの標準出力をOSProcessで得て、処理を行うようにすればいい。