コンピュータは言葉を聴き分けるか?
ホタル族の私は、ベランダで食後の一服をしてたら、昨日までは無かった蜘蛛の巣が 張られていた。こんな所に網を張って、獲物を捕獲できるのだろうか?
お客さんが来るまで、じっと我慢の子してないといけないので、よく立地条件を 検討したんだろうか? 彼らにしてみれば、見立てが悪いと死活問題だから、コンサルタント を雇うのだろうか? それとも、親から子に教育が施されるのだろうか?
普段なら、さっと巣を取り払ってしまう所だけど、そんな事を考えていたら、巣を壊すのを 躊躇ってしまった。せいぜい、蚊やらぶよがトラップされて、蜘蛛さん満腹、私は安眠の win-win関係になれる様、祈ってますよ。
対称性の乱れは成立するか?
昨日までは、音声合成と言う事で、Windows や FreeBSDでも、英語を喋らせることに成功 した。Windowsの場合、日本語を喋る人は、Office 2002 以降に付属してるそうな。話かける のは、文房具の範疇ですか。そうですか。
壊れた、テープレコーダーみたいに、EXCELが喋り始めたら、パソコン毎、外に放り投げたく なるぞ。そうでなくても、いらいらが募って、血圧が上昇しそう。よく、市かなにかの パソコン教室が開かれていて、年寄りに人気らしいけど、いらいらが募って、心臓発作とか おこさないんでしょうか? 人事ながら、心配になります。
対称性の乱れを発見して、ノーベル賞を頂いた人がいました。音声合成の対称になるのが 音声認識。果たして、手軽に使えるものがあるかどうか 。。。
見つかったら、プチ嬉しいぞ。で、いきがかり上探してみました友。
Julius
汎用大語彙連続音声認識エンジン いかめしい 名前のものが見つかりました。オープンソースで公開されてて、Unix,Windowsでも動くと 説明されてます。これはもう、試してみる鹿。
こちらから、キットになっている dictation-kit-v3.2.tar.gz を頂いてきました。辞書内蔵なので、たっぷりと30Mはあります。 入れるターゲットは、FreeBSD 7.2 on VMWARE です。Windowsの場合も、MinGWと言うのが いいですね。上から下まで、オープンソース大賛成です。
動くまでの道のり
展開すると、binとかが出てきて、Linuxの人は、すぐに動かせそうです。FreeBSDでも、多分 Linuxのエミュレーションモードにすれば動くでしょうが、それじゃ、ちょいとOSSっぽく無い。 ここは意地でも、ソースからです。
srcへ移動すると、tar玉になってました。展開します。
[sakae@nil ~/dictation-kit-v3.2/src/julius-3.5.3]$ ./configure --prefix=/home/sa kae/mine loading cache ./config.cache checking host system type... i386-unknown-freebsd7.2 ..... checking for sleep... (cached) yes checking for microphone type... no configure: error: mictype not supported, or specified type not exist configure: error: ./configure failed for libsent
メインはLinuxで開発されているらしく、ハードの部分がFreeBSDと違うんですねぇ。マニュアルを 読んでみたら、FreeBSD 3.2の時代には、オプション指定してたと。。
[sakae@nil ~/dictation-kit-v3.2/src/julius-3.5.3]$ ./configure --prefix=/home/sa kae/mine --with-mictype=oss ..... **************************************************************** Julius/Julian libsent library rev.3.5.3: - Audio I/O mic device API : oss (Open Sound System compatible) supported audio format : RAW and WAV only NetAudio support : no - Language Modeling class N-gram support : yes - Libraries file decompression by : zlib library charset conversion by : built-in libjcode (Japanese codes only) - Process management use POSIX thread : yes fork on adinnet input : no Note: compilation time flags are now stored in "libsent-config". If you link this library, please add output of "libsent-config --cflags" to CFLAGS and "libsent-config --libs" to LIBS. ****************************************************************
以後、make install まで、無問題で走り過ぎました。素晴らしいですねぇ。
後は、Linux用のbin/の下にある、fast.jconf と light.jconf それに、model/ を、BSD用の binの下にコピーして準備完了です。binの下は
[sakae@nil ~/mine/bin]$ ls -l total 2470 -rwxr-xr-x 1 sakae kuma 173127 7 9 13:19 accept_check* -rwxr-xr-x 1 sakae kuma 111776 7 9 13:19 adinrec* -rwxr-xr-x 1 sakae kuma 122399 7 9 13:19 adintool* -rwxr-xr-x 1 sakae kuma 69624 7 9 13:19 dfa_determinize* -rwxr-xr-x 1 sakae kuma 68637 7 9 13:19 dfa_minimize* -rw-r--r-- 1 sakae kuma 12889 7 9 13:40 fast.jconf -rwxr-xr-x 1 sakae kuma 178053 7 9 13:19 generate* -rwxr-xr-x 1 sakae kuma 9355 7 9 13:19 gram2sapixml.pl* -rwxr-xr-x 1 sakae kuma 24711 7 9 13:19 jcontrol* -rwxr-xr-x 1 sakae kuma 870597 7 9 13:19 julius* -rw-r--r-- 1 sakae kuma 12898 7 9 13:40 light.jconf -rwxr-xr-x 1 sakae kuma 118117 7 9 13:19 mkbingram* -rwxr-xr-x 1 sakae kuma 268847 7 9 13:19 mkbinhmm* -rwxr-xr-x 1 sakae kuma 5223 7 9 13:19 mkdfa.pl* -rwxr-xr-x 1 sakae kuma 88422 7 9 13:19 mkfa* -rwxr-xr-x 1 sakae kuma 1713 7 9 13:19 mkgshmm* -rwxr-xr-x 1 sakae kuma 128256 7 9 13:19 mkss* drwxr-xr-x 4 sakae kuma 512 7 9 13:43 model/ -rwxr-xr-x 1 sakae kuma 186441 7 9 13:19 nextword* -rwxr-xr-x 1 sakae kuma 2856 7 9 13:19 yomi2voca.pl*
資料はこちらにあります。
実験開始
文字コードは、EUC-JPになってますので、端末をそれに合わせておきます。
[sakae@nil ~/mine/bin]$ ./julius -C light.jconf include config: light.jconf Reading in HMM definition...(binary)...finished ..... System I/O configuration: speech input source = microphone sampling freq. = 16000 Hz threaded A/D-in = supported, on zero frames stripping = on silence cutting = on level thres = 2000 / 32767 zerocross thres = 60 / sec. head margin = 300 msec. tail margin = 400 msec. remove DC offset = on (frame-wise) (will compute from first 3.0 sec) reject short input = < 800 msec short pause segmentation= off result output to = tty (standard out) progout interval = 300 msec output charset conv. = disabled ------------- System Info end ------------- ************************************************************* * NOTICE: The first input may not be recognized, since * * no initial CMN parameter is available on startup. * ************************************************************* pass1_best: 今日 は 、 モップ 四 P です 。 sentence1: 今日 は 木曜日 です 。 <--- 正解です pass1_best: カメラ 吭 。 sentence1: 雨 が 降る 。 <--- 雨よ降れ が正解 pass1_best: ルーム 朝食 は 、 納得 し た 。 sentence1: ルーム 朝食 は 、 学校 でし た 。 <-- 今日の朝食は、納豆でした。 pass1_best: 救急 食べ まし た 。 sentence1: ケーキ を 食べ まし た 。 <--- 正解です pass1_best: アトラス パソコン を 買い たい 。 sentence1: 新しい パソコン を 買い たい <--- 正解です
素晴らしい!!
後は、たっぷりある資料を読んで秘密に迫ろう。