Cloud Speech API を使用すると、80 以上の言語で音声ファイルの音声をテキストに変換できます。

このラボでは、音声ファイルを録音し、それを Cloud Speech API に送信して変換します。

学習すること

必要になるもの

チュートリアルの使用目的を教えてください

通読のみ 通読して、演習を行う

Google Cloud Platform の使用経験を教えてください

初心者 中級者 上級者

自分のペースで進める環境のセットアップ

まだ Google Account(Gmail または Google Apps)をお持ちでない場合は、アカウントを作成する必要があります。Google Cloud Platform Console(console.cloud.google.com)にサインインして、新規プロジェクトを作成します。

プロジェクト ID を覚えておいてください。この ID は、すべての Google Cloud プロジェクトに使用する一意の名前です(上記の名前は既に使用されているので、実際には使用できません)。

このコードラボの演習を進めても、課金額は数セント程度です。ただし、ストレージの使用料を増やす場合やご自分のオブジェクトを削除しない場合は、それ以上の金額が課金される可能性があります。Google Cloud Storage の料金はこちらでご覧いただけます。

Google Cloud Platform の新規ユーザーには$300 相当の無料トライアルが付与されます。

画面の左上にあるメニューアイコンをクリックします。

ドロップダウンで [API Manager] を選択します。

[API を有効にする] をクリックします。

次に、検索ボックスで [speech] を検索し、[Google Cloud Speech API] をクリックします。

[有効にする] をクリックして、Cloud Speech API を有効にします。

有効になるまで数秒待ちます。有効になると、以下のように表示されます。

Google Cloud はラップトップからリモートで操作できるため、本コードラボでは、Cloud で動作するコマンドライン環境である Google Cloud Shell を使用します。この Debian ベース仮想マシンには、必要なすべての開発ツール (docker、gcloud、kubectl など) がロードされています。それは、永続的な 5GB ホームディレクトリを提供し、Google Cloud で動作し、ネットワーク性能と認証を大幅に改善します。そのため、本コードラボに必要なものは、ブラウザのみです (本コードラボは Chromebook でも動作します)

Google Cloud Shell をアクティブにするには、開発者コンソールで右上のボタンをクリックするだけです (プロビジョニングと環境への接続には数分しかかかりません)。

クラウド シェルに接続すると、すでに認証済みであり、プロジェクトがすでに PROJECT_ID に設定されていることが分かります。

$ gcloud auth list
認定済みアカウント:
 - <myaccount>@<mydomain>.com (アクティブ)
$ gcloud config list project
[core]
project = <PROJECT_ID>

何かしらの理由でプロジェクトが設定されていない場合、次のコマンドを発行してください。

$ gcloud config set project <PROJECT_ID>

PROJECT_ID が分かりませんか?セットアップステップでどの ID を使用したかを確認するか、コンソール ダッシュボードで検索してください。

Speech API には curl を使用してリクエストを送信することになります。そこで、リクエスト URL 内で渡すための API キーを生成する必要がでてきます。API キーを作成するために、プロジェクト ダッシュボードの [API Manager] セクションに移動します。

次に、[認証情報] タブを選択して、[認証情報を作成] をクリックします。

ドロップダウン メニューで [API キー] を選択します。

次に、生成されたキーをコピーします。

これで API キーが手に入りました。リクエストするたびに API キーの値を挿入しなくてすむように、生成した API キーを環境変数に保存します。キーの保存は Cloud Shell で行えます。以下の <your_api_key> を、先ほどコピーしたキーに置き換えてください。

export API_KEY=<YOUR_API_KEY>

Speech API へのリクエストは request.json ファイル内で作れます。最初に、このファイルを Cloud Shell で作成します。

touch request.json

次に、作成したファイルを任意のコマンドライン エディター(nanovimemacs)で開きます。ご自分の request.json ファイルに以下の行を加えます。このとき、 uri の値をご自分の生音声ファイルの uri に置き換えてください。

request.json

{
  "config": {
      "encoding":"FLAC",
      "sample_rate": 16000,
      "language_code": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

リクエスト本文には configaudio のオブジェクトがあります。config では、リクエストの処理方法を Speech API に指定します。encoding のパラメーターでは、API に送信する音声ファイルで使用されている音声エンコーディングのタイプを API に指定します。FLAC は .raw ファイル用のエンコーディング タイプです(エンコーディング タイプの詳細については、ドキュメントをご覧ください)。sample_rate は、API に送信する音声データのレート(単位:ヘルツ)です。config オブジェクトに追加できるパラメーターは他にもありますが、encodingsample_rate に追加できるパラメーターはありません。

audio オブジェクトでは、Cloud Storage にある音声ファイルの uri を API に渡します。これで Speech API をコールする準備が整いました。

ここからは、以下の curl コマンドを使用して、前の手順で保存しておいた API キー環境変数と一緒に、リクエスト本文を Speech API に渡します(すべてを 1 つのコマンドラインにします)。

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json \
"https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=${API_KEY}"

次のようなレスポンスが返されます。

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

transcript の値には、Speech API によって変換された音声ファイルのテキストが返されます。confidence の値には、API による音声変換の信頼度値が示されます。

前述のリクエストをご覧いただくと、syncrecognize メソッドを呼び出したことがわかります。Speech API は、synchronous (同期音声) と asynchronous (非同期音声) のどちらの音声もテキストに変換できます。今回の例では完全な音声ファイルを送信しましたが、syncrecognize メソッドを使用すれば、ユーザーが話している最中のストリーミング音声をテキストに変換することもできます。

多言語の対応についてご説明します。Speech API は 80 以上の言語を認識し、音声をテキストに変換できます。多言語対応は、request.json ファイルの language_code パラメーターを変更することによって行います。対応している言語のリストについては、こちらでご確認いただけます。.

たとえば、スペイン語の音声ファイルがある場合、request.json ファイルの language_code 属性を以下のように設定できます。

request.json

 {
  "config": {
      "encoding":"FLAC",
      "sample_rate": 16000,
      "language_code": "es-ES"
  },
  "audio": {
      "uri":"gs://.../..."
  }
}

このコードラボでは、Speech API で音声をテキストに変換する方法を学びました。今回の例では、音声ファイルの Google Cloud Storage URI を API に渡しましたが、音声コンテンツの base64 エンコードの文字列を渡すこともできます。

学習したこと

次のステップ