読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



Juliusで連続音声認識

音声認識

大語彙連続音声認識エンジンJuliusで遊んでみました。動作環境はMac OS X Mountain Lionです。

準備

コンパイラはXcodeでインストールしたgcc(2013/1/13)を使用しました。

また、Macで動かす場合はPortAudioというライブラリも必要みたいなので、macportsであらかじめインストールしておきました(というか何か別のプロジェクトでインストール済みだった)。

% port installed portaudio
The following ports are currently installed:
  portaudio @19.20111121_4 (active)

julius本体のインストール

Juliusのプロジェクトページからjulius-4.2.3.tar.gzをダウンロードします。サイトの右の方のQUICK DOWNLOADからダウンロードできます。インストールは普通に

% tar xvzf julius-4.2.3.tar.gz
% ./configure
% make
% sudo make install

でできました。/usr/local/binにjuliusのコマンド群がインストールされます。juliusはmacportsにも登録されているのでここからインストールしてもよいかもしれません。

% port search julius
julius @4.2.3 (audio, japanese)
  Large Vocabulary Continuous Speech Recognition (LVCSR) Engine

ディクテーションキットのインストール

次にjuliusの設定ファイルや言語モデル・音響モデルが含まれるディクテーションキットをダウンロードします。

% tar xvzf dictation-kit-v4.2.3.tar.gz

binの中にコンパイル済みのjuliusコマンドがありますが、Linux用なのでMacでは使えないです。代わりに先ほど自分でコンパイルしたコマンドを使います。ディクテーションキットで使うのは、fast.jconf、light.jconfという二つの設定ファイルとmodelディレクトリ以下の言語モデル、音響モデルだけです。

マイクの設定

Macbook Airだと左の方に内蔵マイクがあるようです。ただ、そのままだと顔を近づけないとなかなか認識できませんでした。そのためマイクかヘッドセットが必要なのですがそんなものは家にない!いろいろ調べていたらiPhone5に付属のイヤホンが外部マイクになるという情報を発見。

さっそくMacbook Airにイヤホンを差して、設定のサウンドを見てみると外部マイクとして認識されました。

f:id:aidiary:20130706155039p:plain

環境ノイズリダクションを使用のチェックを外しておかないと音声認識の精度ががた落ちします。ついでに入力音量もあげておきました。これでイヤホンを耳にはめて普通にしゃべるだけで音声認識できます。

音声認識を試してみる

juliusコマンドの-Cオプションで設定ファイルを指定して起動します。ターミナルの文字コードがUTF-8なのでデフォルトのEUC-JPから変換しないと文字化けします。

% julius -C fast.jconf -charconv EUC-JP UTF-8

で起動するとドバーっと設定が出力された後にplease speakと表示されてからしゃべると音声認識できます。

<<< please speak >>>Warning: strip: sample 0-191 has zero value, stripped
pass1_best:  こんにちは 。
sentence1:  こんにちは 。
pass1_best:  音声認識 の テスト で 。
sentence1:  音声認識 の テスト です 。
ass1_best:  今日 は 、 七月 六日 です 。
sentence1:  今日 は 、 七月 六日 です 。
pass1_best:  とても 暑い です
sentence1:  とても 暑い です 。
pass1_best:  さようなら 。
sentence1:  さようなら 。

最初に変なWarningが出てくるけど特に問題はないみたい。pass1_bestが途中認識結果、sentence1というのが最終認識結果のようです。はっきりしゃべればそれなりに認識するといった感じかな。

連続音声認識なので単語だけでなく、文章もちゃんと認識してくれる。ディクテーションキットについてくる音響モデルは不特定話者モデルらしく、誰の声でもそれなりに認識してくれるみたいだが認識精度が少し厳しい印象。自分の声で訓練(話者適応)とかできるのかな?資料や論文をもう少し詳しく調べてみようと思います。