2008年10月9日木曜日

Bluetoothヘッドセットで音声認識

フリーの音声認識ソフトウェアである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月1日水曜日

EeePCのSSD

今日、バッファローから、EeePC用のSSDを発売するとの発表があった。
今までは、MLCだったが、今度は高速タイプのSLC。
セカンドロットの私のEeePCの強化には、最適。10月中旬に発売だが、3万円弱とは、ちょっと高いかな?

Blurtoothハンドセットで音声認識

前回は、LinuxでBluetoothハンドセットが使えるようになった。
これを使って、音声認識をやってみた。音声認識ソフトは、フリーで提供されているJulius。
Juliusは、気がつけばすでに4.0にメジャーバージョンがあがっていた。

早速、公式HPからダウンロードして、動作を確認しようとする。ここでJuliusは、音声の入力は、16Bit 16KHzであると
書いてある。Bluetoothのハンドセットは、マイク互換デバイスではないし、8KHzでしか入力できないので、少し困った。
結局、arecord で音声をファイルにおとし、オフラインで認識をやってみる。
やっぱり、音声タイプライタとしては、使えるれべるでない。それに、オンラインでできないし。

まずは、adinnet でできるように、arecordの改良を行おう。その後音響モデルの対応をやることにする。