APIで音声認識を実現しよう音声操作にも。中津川篤司TwitterFacebookはてブ1Pocket4LINE音声はキーボード、マウスに続く入力インタフェースとして注目されています。Assistantといったボイスアシスタント機能が組み込まれていますが、自分で開発するアプリから自由に使える訳ではありません。アプリではマイクを使って録音し、そのデータを音声認識APIに渡します。デバイスやOSのバージョン、使用するアプリの種類によって録音データの音声フォーマットや周波数が異なるため、検証環境を以下に示します。異なる環境では後述する「ファイル読み込み完了時の処理」の変更が必要になる場合があります。音声レコーダーピュアAndroidにはプリインストールされている録音アプリがないため、ストアからアプリをインストールしています。上記以外の録音アプリでは、今回作成するアプリからの呼び出しができない可能性があります。APIは音声認識技術をAPI化したものです。音声ファイルをアップロードすると、各国語のテキストに変換してくれます。日本語にも対応しています。適当な音声をAPIに投げると、次のようなレスポンスが返ってきます。keyは後述する管理画面で取得できるキーに書き換えます。0.8484849}]}]}見て分かりますが、テキストに変換されたtranscriptが返ってきます。confidenceは信頼性を表し、1に近いほど認識精度の高いデータと言うことになります。APIの場合、このalternativesが複数返却され、信頼性がそれぞれ異なります。APIの場合は筆者が試した限りでは常に一つしか返ってこないので、気にする必要はなさそうです。APIを有効にします。必要に応じてアクセス制限を設けてください。Minimumをベースにします。プロジェクトを作ったら、Cordovaプラグインとしてcordova-plugin-media-captureをインストールします。これはアプリでマイクを使った音声キャプチャを実現するためのプラグインです。Ajaxを実行する関係上、JS/CSSコンポーネントの追加と削除よりjQueryをインストールしておきます。HTMLを作る今回のHTMLは次のようになります。タグを追加しています。class="textarea"></textarea></section></ons-page>実際の画面は次のようになります。ボタンを押してキャプチャしたら、テキストエリアに結果が返ってくるようにします。JavaScriptを作るでは具体的な処理を見ていきます。ボタンを押した際にキャプチャを実行します。{limit:15});});一つ目の引数が処理成功時のコールバック、次が失敗時のコールバック、最後はキャプチャ設定です。APIには、音声ファイルの長さは1分までという制限があります。長いデータは処理に時間がかかりますので注意してください。次にキャプチャ完了後の処理を行うappオブジェクトを定義します。全体像は次のようになります。error);}};});キャプチャ成功時の処理キャプチャが成功したら、FileReaderを使って音声ファイルを読み込みます。タグに対してパスを設定することで、その場で再生できるようにしてあります。コールバックされ、音声データがBase64の文字列で取得できます。WAV、周波数が44100になります。音声レコーダーアプリを呼び出して録音した場合は、音声フォーマットがAMR、周波数が8000になります。APIに渡すJSONの設定を変更しています。指定することができます。音声認識処理を実行する後はAjaxを使ってPOSTメソッドでデータを送るだけです。JSON形式でデータを送って、返却された結果をテキストエリア内に表示しています。指定して同期処理していますが、ストリーミングによる認識にも対応しているようです。JSON.stringify(error));});},実際に試すと喋った日本語が高い精度でテキスト化されます。ここで見て欲しいのはmonacaがちゃんと英語のスペルになっている点です。食べ物で認識されるとカタカナのモナカになります。文脈を理解した上でテキスト化されているのが分かります。APIを使えば音声入力によってアプリを操作したり、入力を代行するのが簡単になります。皆さんのアプリにも組み込んでみてください。今回のコードはmoongift/monaca_voice_recognitionにアップしてありますので、実装の参考にしてください。中津川篤司プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。mobil...2018年4月9日Monacaアプリにグラフを表示しよう。