フリーの音声認識ソフトウェアであるjuliusをbluetoothヘッドセットを使って動かそうといろいろ試していた。
bluetoothのドライバであるbluez(http://www.bluez.org)は、ALSAに対応していると言うことなので簡単に
動くかと思えば、最初はうまくいかなかった。
起動すると、音声入力のスレッドがすぐに終わっていた。結局、ソースコードをみることにした。
ALSAの入力のところで、EAGAINの処理を書いていないのが原因のようだ。
ALSAの1.0以降は、snd_pcm_readi の返り値で、本来読み込みエラーで、EAGAINは、入力の準備が整っていないだけなので、0を返すのが正しい処理のようだ。
特にBluetoothのヘッドセットは、SCOなので読み込みに多少の時間がかかる。
juliusの alsa対応の入力では、NONBLOCKINGなのに、EAGAINの処理をしていなかった。
ここにちょっと条件分岐をいれて、再コンパイルすれば出来上がり。
ヘッドセットは、8kHzの入力しかできないので、音響モデルを8kHzのものにする必要があるが何とかなりそう。
ちなみに、telephonyの音響モデルを使っても、大語彙音声認識では、ぼろぼろだった。
10回に1回くらいは、正解だったのだが。。。。
2008年10月9日木曜日
2008年10月1日水曜日
Blurtoothハンドセットで音声認識
前回は、LinuxでBluetoothハンドセットが使えるようになった。
これを使って、音声認識をやってみた。音声認識ソフトは、フリーで提供されているJulius。
Juliusは、気がつけばすでに4.0にメジャーバージョンがあがっていた。
早速、公式HPからダウンロードして、動作を確認しようとする。ここでJuliusは、音声の入力は、16Bit 16KHzであると
書いてある。Bluetoothのハンドセットは、マイク互換デバイスではないし、8KHzでしか入力できないので、少し困った。
結局、arecord で音声をファイルにおとし、オフラインで認識をやってみる。
やっぱり、音声タイプライタとしては、使えるれべるでない。それに、オンラインでできないし。
まずは、adinnet でできるように、arecordの改良を行おう。その後音響モデルの対応をやることにする。
これを使って、音声認識をやってみた。音声認識ソフトは、フリーで提供されているJulius。
Juliusは、気がつけばすでに4.0にメジャーバージョンがあがっていた。
早速、公式HPからダウンロードして、動作を確認しようとする。ここでJuliusは、音声の入力は、16Bit 16KHzであると
書いてある。Bluetoothのハンドセットは、マイク互換デバイスではないし、8KHzでしか入力できないので、少し困った。
結局、arecord で音声をファイルにおとし、オフラインで認識をやってみる。
やっぱり、音声タイプライタとしては、使えるれべるでない。それに、オンラインでできないし。
まずは、adinnet でできるように、arecordの改良を行おう。その後音響モデルの対応をやることにする。
登録:
投稿 (Atom)