Google Cloud Speech API の使い方

Google Cloud Speech API とは

  • Googleの音声認識エンジン
  • Speech Recognition API の Cloud サービスみたいなやつ

特徴として

  • 機械学習して精度があがってく
  • 80か国語対応
  • 雑音に強い
  • デバイス非依存
  • リアルタイム(ストリーム)と録音済みファイル両対応
    • non-streaming mode
    • streaming mode
  • デモ

Google API の利用にあたり

Google Cloud Platformでもろもろ準備が必要

プロジェクトの作成

利用するAPIの有効化)

認証情報の作成

  • Speech API ではサービスアカウントキーが必要
  • 秘密鍵が含まれたサービスアカウントキーファイルがダウンロードできるので保存しておく

課金設定

Cloud SDKとは

  • Google のサービスにコマンドラインからアクセスできるツールセット
  • gcloud、gsutil、bq といったコマンドが利用可能になる

インストール

$ curl https://sdk.cloud.google.com | bash

音声認識させる音声の準備

  • 音声の録音

    $ brew install sox
    $ rec --bits 16 --channels 1 --rate 16000 sample.wav
    
  • flac形式に変換

    brew install flac
    flac -V sample.wav
    

音声ファイルをアップロードしておく

  • コマンドラインでファイルの存在を確認
$ gsutil ls -R gs://cyoko-bucket
gs://cyoko-bucket/sample.flac

音声ファイルの指定

  • sync-request.jsonに音声ファイルの情報を設定する
{
  "config": {
      "encoding":"FLAC",
      "sampleRate": 16000,
      "languageCode": "ja-JP"

  },
  "audio": {
      "uri":"gs://cyoko-bucket/sample.flac"
  }
}

音声ファイルをアップロードしない方法

  • base64に変化して
$ base64 source_audio_file > dest_audio_file
  • contentに指定する
{
      "config": {
          "encoding":"FLAC",
          "sampleRate": 16000,
          "languageCode": "ja-JP"
      },
      "audio": {
          "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv...""
      }
    }

認証してアクセストークンを得る

  • --key-fileにはサービスアカウントキーファイルのファイル名を指定する
$ gcloud auth activate-service-account --key-file="<サービスアカウントキーファイル名>"
Activated service account credentials for: [xxxxxxxxxxx-compute@developer.gserviceaccount.com]

$ gcloud auth print-access-token
<アクセストークンが表示される>

音声認識させる

  • アクセストークンの指定
  • 入力音声の指定(Request bodyにsync-request.jsonを指定)
$ curl -s -k -H "Content-Type: application/json" \
    -H "Authorization: Bearer <アクセストークン>" \
    https://speech.googleapis.com/v1beta1/speech:syncrecognize \
    -d @sync-request.json

認識結果

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "google cloud speech api では使いやすい api で高度な ニュートラルネットワーク
モデルを適用し音声をテキストに変換できます",
          "confidence": 0.8266666
        }
      ]
    }
  ]
}

ストリームによる音声認識

Google Cloud Speech gRPC API を使ってストリーム音声認識をしたい!(簡易VAD付けた) - Qiita