概要
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」というプロジェクト名にしています)
追加したら認証情報を登録します
認証情報は「サービスアカウントキー」を作成してください
「API キー」ではなく認証用の Json ファイルが必要になります
すると 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 件のコメント:
コメントを投稿