Cloud音声認識
Simple Wiki Based Contents Management System
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)
と出力されれば、正常に動作しています。