HARA-JP.COM >> Cloud音声認識
Cloud音声認識
最近は、いろいろなところで音声認識にCloudサーバーがあります。そこで、いくつかのCloudサーバーに対応したクライアントライブラリを作成しています。
現在実装したものは、
- Google Speech PrivateAPI
- RECAUIS(東芝デジタルソリューションズ)
- Julius(独自にクラウドサービス化)
です。
このライブラリは、Github(JapaneseSpeechRecognition)に公開しております。
これらのプログラムを利用することで、簡単にクラウド音声認識サービスを利用することが可能です。
ROSの音声認識でよく使われているrospeexへの対応も簡単だと思います。
Cloud音声認識RTC
上記のCloud音声認識ライブラリを使ってRTコンポーネントを作成しています。
RTコンポーネントは、OpenHRIVoiceの一部として公開しておりますので、プログラムは、Github(OpenHRIVoice)からダウンロードをお願いいたします。
このRTコンポーネントでは、Cloud音声認識のための共通クラスとして CloudSpeechRecogBaseというクラスを実装しています。このクラスの中では、writeメソッド内で内部バッファに音声データを追加し、音声区間の検出を行って audio_segmentsという配列に音声データを格納しています。
音声区間の検出には、pydubというオーディオデータを処理するライブラリを使用しています。しかしながら、RTコンポーネントにした場合に、オーディオデータの一部の欠如が起こる場合があり、その時にpydubの内部処理のバグのためにエラーを生じることがあります。
このエラーを修正するには、pydub/audio_segment.py を直接下記のように修正する必要がありますのでご注意ください。
262行目:誤
silence = audioop.mul(data[:self.frame_width],
262行目:正
silence = audioop.mul(str(bytearray(data[:self.frame_width])),
Juliusのクラウドサービス化
Juliusは、オープンソースで開発されている大語彙音声認識プログラムです。基本的に単独のプログラムで動作させますが、プログラムの設定項目が非常にたくさんあり、誰でも単に使うということができません。
そこで、Juliusを使って音声認識のクラウドサービス化を行ってみました。
Juliusのクラウドサービス化にあたっては、Google Speech Private APIと同様にPOSTメソッドで音声データを送信すると音声認識結果をJSON形式で返します。
Juliusのクラウドサービス化を行うプログラムのリポジトリは、Github(CloudJuliusServer)にあります。
CloudJuliusServerの使用方法
Juliusのクラウドサービス化のためには、Python2.7の実行環境とJulius-dictation-kit-v4.4が必要です。また、daemonとして動作させるためには、LinuxOSで動作させる必要があります。(Windowsのサービスへは未対応です)
以下では、Ubuntu16.04を例に説明していきます。
まずは、JuliusのオフィシャルサイトまたはGithubからdictation-kitをダウンロードします。Githubからダウンロードする場合には、git-lfs (Git Large File Storage) が必要になりますので、Zipで入手の方が簡単です。
次に、入手した dictation-kit-v4.4.zip を展開します。
# sudo unzip dictation-kit-v4.4.zip -d /usr/local/share
最後に、CloudJuliusServer をGithubから入手し、jconf/dication-dnn.jconfをdictation-kitのディレクトリにコピーします。
# git clone https://github.com/haraisao/CloudJuliusServer
# sudo cp CloudJuliusServer/jconf/dictation-kit.jconf /usr/local/share/dictation-kit-v4.4
以上でJuliusクラウドサーバー化の準備は終了です。
Daemonで起動する場合には、
# cd CloudJuliusServer
# sudo python server.py
とすれば、バックグラウンドでJuliusクラウドサーバーが起動します。JuliusクラウドサーバーのPIDは、 /var/run/julius_server.pid に格納さえています。
Juliusクラウドサーバーを終了させる場合には、
# sudo kill `cat /var/run/julius_server.pid`
を実行します。
CloudJuliusServerを使った音声認識
Juliusクラウドサーバーを使って音声認識させる場合には、上述のJapaneseSpeechRecognitionにあるJulius_cli.pyを使用します。
JapaneseSpeechRecognitionを入手後、
# python julius_cli.py <hostname> sample/voice20171013_144026.wav
を実行してみてください。
#1:今日は天気がいいですね。(0.83075) #2:きょうは天気がいいですね。(0.728625) #3:要は天気がいいですね。(0.722125) #4:昨日は天気がいいですね。(0.721875) #5:ようは天気がいいですね。(0.721875)
と出力されれば、正常に動作しています。