コンピュータは言葉を聴き分けるか?

ホタル族の私は、ベランダで食後の一服をしてたら、昨日までは無かった蜘蛛の巣が 張られていた。こんな所に網を張って、獲物を捕獲できるのだろうか?

お客さんが来るまで、じっと我慢の子してないといけないので、よく立地条件を 検討したんだろうか? 彼らにしてみれば、見立てが悪いと死活問題だから、コンサルタント を雇うのだろうか? それとも、親から子に教育が施されるのだろうか?

普段なら、さっと巣を取り払ってしまう所だけど、そんな事を考えていたら、巣を壊すのを 躊躇ってしまった。せいぜい、蚊やらぶよがトラップされて、蜘蛛さん満腹、私は安眠の 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:  新しい パソコン を 買い たい         <--- 正解です

素晴らしい!!

後は、たっぷりある資料を読んで秘密に迫ろう。