今回は、juliusというモジュールで音声認識を行てみたいと思います。Raspberry Piではマイク端子がないので、USB接続のマイクが必要になります。
オーディオモジュールの優先順位の確認
まず、usbオーディオアダプタ(snd_usb_audio)の優先順位を確認します。内部オーディオデバイス(snd_bcm2835)の優先順位が高くなっている場合は、優先順位を変更します。下記のコマンドで現在の状態がわかります。
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
下記のファイルを新規作成して、優先順位の変更を行います。
$ sudo nano /etc/modprobe.d/alsa-base.conf
下記の内容を新規作成したファイルに記載します。
options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1
再起動後、もう一度、cat /proc/asound/modules コマンドを実行して、
1 snd_usb_audio
1 snd_bcm2835
になっていることを確認してください。
snd-pcm-ossモジュールの起動
juliusで使用するsnd-pcm-ossモジュールを起動時に毎回起動するように設定します。
$ sudo sh -c "echo snd-pcm-oss >> /etc/modules"
Juliusのインストール
下記のコマンドでファイルをダウンロードし、インストールを行ってください。今回バージョンは4.4.2になります。(現在のカレントフォルダにファイルがダウンロードされます。)
wget --trust-server-names https://ja.osdn.net/projects/julius/downloads/66547/julius-4.4.2.tar.gz
tar xvzf julius-4.4.2.tar.gz
cd ./julius-4.4.2
./configure
make
sudo make install
ディクテーション実行キット、記述文法音声認識キットのダウンロード
音声認識には汎用的なディクテーションキットと文法を定義して使う記述文法音声認識キットの2つがあります。ディクテーション実行キットと記述文法音声認識キットの両方を下記のコマンドでダウンロードします。
ホームディレクトリにjulius-kitsというフォルダを作ってそのフォルダにダウンロードし、解凍します。
mkdir ~/julius-kits
cd ~/julius-kits
wget --trust-server-names https://osdn.net/projects/julius/downloads/66544/dictation-kit-v4.4.zip
unzip dictation-kit-v4.4.zip
wget https://github.com/julius-speech/grammar-kit/archive/v4.3.1.zip
unzip v4.3.1.zip
ディクテーションキットを使用して音声認識
ディクテーションキットは、汎用言語モデルになります。処理速度は遅く、精度もあまりよくないですが、これだけで音声認識をすることができます。下記コマンドを実行してください。何か話すとその言葉が表示されます。
cd julius-kits/dictation-kit-v4.3.1-linux
julius -C main.jconf -C am-gmm.jconf -demo
記述文法音声認識キットを使用して音声認識
記述文法音声認識は自分で辞書と文法ファイルを作成して、音声認識を行います。これにより、認識精度を上げることができ、処理速度も速くなります。
◆辞書ファイルの作成方法
新規ファイル(ファイル名:tenki.yomi)を作成し、下記のように単語を記載します。単語間はタブ区切りで、最終行は改行が入らないようにします。
天気 てんき
は は
晴れ はれ
曇り くもり
雨 あめ
です です
下記のコマンドを実行し、dicファイルを生成します。
sudo iconv -f utf-8 -t eucjp ./tenki.yomi | yomi2voca.pl | iconv -f eucjp -t utf8 > ./tenki.dic
次に生成されたtenki.dicをコピーしてtenki.vocaファイルを作ります。
tenki.vocaファイルを以下のように編集します。
% TENKI
天気 t e N k i
% WA
は h a
% TENKOU
晴れ h a r e
曇り k u m o r i
雨 a m e
% DESU
です d e s u
% NS_B
[s] silB
% NS_E
[/s] silE
文法ファイルの作成方法
新規ファイル(ファイル名:tenki.grammar)を生成し、下記のように記載します。
S : NS_B TENKI WA TENKOUDESU NS_E
TENKOUDESU : TENKOU
TENKOUDESU : TENKOU DESU
下記のコマンドで、辞書、文法ファイルをコンパイルします。
成功するとtenki.dfa,dict,termファイルが生成されます。
mkdafa.pl tenki
grammaerキットの起動、動作確認
julius -C /home/otani/julius-kits/grammar-kit-4.3.1/hmm_mono.jconf -input mic -gram tenki -nostrip
これで文法として登録した言葉を優先的に認識してくれます。"天気は晴れです"、"天気は雨"等と話して、正しく認識されるか確認してください。