2017年1月14日土曜日

Nodejs で Google Cloud Speech API を使ってみた

概要

Google の音声認識サービス Google Cloud Speech API が公開されたので Nodejs から使ってみました
今回は gcloud コマンドによる OAuth 認証による使用ではなく API をコールしてみました

環境

  • Mac OS X 10.11.6
  • Nodejs 5.9.1
  • npm 3.7.3

Google Cloud Speech API の登録

Google Cloud Speech API はクラウドサービスになるので Google Cloud Platform に申し込む必要があります

Google Cloud Platform の登録にはクレジットカードが必要になります
Google Cloud Platform の申し込みがない状態で API をコールすると

Project your-test-pj (#111111111111) has billing disabled. Please enable it.

というエラーが出て Cloud Speech API をコールすることができません
ちなみに Google Cloud Platform に初回申し込みすると $300 のクレジットがついてきます

プロジェクトの作成と認証情報の設定

Google Cloud Platform の申し込みができたらプロジェクトを作成します
APIs Manager にアクセスしてください

プロジェクトを作成したらプロジェクトにライブラリを追加します
追加するライブラリは「Google Cloud Speech API」になります
以下のような感じで作成できれば OK です
(今回は「speech-api-test-pj」というプロジェクト名にしています)
try_gcsapi_added_project.png

追加したら認証情報を登録します
認証情報は「サービスアカウントキー」を作成してください
「API キー」ではなく認証用の Json ファイルが必要になります
try_gcsapi_adding_authinfo.png

すると Json ファイルが自動でダウンロードされます
「speech-api-test-pj-c00e9027a29d.json」みたいなファイル名の Json が取得できれば OK です

サンプルスクリプトの準備

では Nodejs のサンプルスクリプトを準備します
公式で用意しているサンプルがあるのでそれを使います
まず、サンプルスクリプトをダウンロードして認証用の Json ファイル移動します
次に npm install でライブラリをインストールして環境変数を設定します
あとは node で実行すれば OK です

  • git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
  • cd nodejs-docs-samples/speecha
  • mv /path/to/Downloads/speech-api-test-pj-c00e9027a29d.json .
  • npm install
  • export GCLOUD_PROJECT=speech-api-test-pj && export GOOGLE_APPLICATION_CREDENTIALS=./speech-api-test-pj-4c0433834b8f.json && node recognize.js resources/audio.raw

成功すると以下のような Json の結果を取得することができます

result: {
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

APIs Manager のダッシュボードを確認すると API がコールされていることが確認できると思います

最後に

Google Cloud Speech API を Nodejs からコールしてみました
基本的には音声ファイルをインプットにしてそれを解析する感じです

プログラムとうまく組み合わせればリアルタイムでの解析もできなくはないと思います
Google Cloud Speech API 側の機能にもストリーム機能があるみたいです

あとはマイク等から拾った音声データを入力にすることができればオリジナル Siri 的なことができると思います

Tips

もし日本語の音声ファイルを解析したい場合は recognize.js の 62 行目 payload を以下のように変更してください

var payload = {
  config: {
    encoding: 'LINEAR16',
    sampleRate: 16000,
    languageCode: 'ja-JP'
  },
  audio: {
    content: encoded
  }
};

参考サイト

0 件のコメント:

コメントを投稿