GCP の Cloud Speech API を利用して音声データのテキスト起こししてみた

経緯

  • 先日、Google Cloud On Board - 入門編トレーニング に参加してきました
  • 機械学習API が紹介されていた
  • かねてからテキスト起こしに興味があった(議事録作成が面倒だった)ので、GCP の 無料トライアル で試してみた
  • 音声素材は hbSAKABA#0 での自分の自己紹介 (2:42〜3:08)

今回、利用したもの

(事前準備)

  • GCP の利用登録 (無料トライアル)
  • 音声ファイルを用意 (モノラルで!)

流れ

  1. GCPのプロジェクトを作成
  2. Cloud Speech-to-Text API を有効化
  3. APIキー作成
  4. テキスト起しの対象となるオーディオファイルを Clound Storege にアップロード
    • Cloud Speech API はオーディオファイルの指定方法として Google Cloud Storage URIs をサポート
  5. Cloud Speech-to-Text API で テキスト起こし

作業ログ

  1. GCPのプロジェクト作成 f:id:dev_dub:20190223191032p:plain f:id:dev_dub:20190223191049p:plain

  2. Cloud Speech-to-Text API を有効化 f:id:dev_dub:20190223191157p:plain f:id:dev_dub:20190223191214p:plain f:id:dev_dub:20190223191230p:plain

  3. APIキー作成 f:id:dev_dub:20190223191358p:plain

  4. オーディオファイルを Clound Storege にアップロード f:id:dev_dub:20190223191631p:plain f:id:dev_dub:20190223191655p:plain f:id:dev_dub:20190223191710p:plain f:id:dev_dub:20190223191731p:plain

  5. Cloud Speech-to-Text API で テキスト起こし実行

$ curl -H "Content-Type: application/json" -d '{"config": {"languageCode": "ja-JP"},"audio": {"uri": "gs://self-introduction-20190223/self-introduction-mono.wav"}}' https://speech.googleapis.com/v1/speech:recognize?key={APIキー}

テキスト起こし結果

$ curl -H "Content-Type: application/json" -d '{"config": {"languageCode": "ja-JP"},"audio": {"uri": "gs://self-introduction-20190223/self-introduction-mono.wav"}}' https://speech.googleapis.com/v1/speech:recognize?key={APIキー}
{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "冷凍店と申しますえーと私は去年の9月にですねハートビーツニンジンさせていただきましてはたくさんの主たる事業としていますと2の開発とリアクトネイティブを使ってフロントの開発をしています",
          "confidence": 0.9203033
        }
      ]
    }
  ]
}
  • レスポンス(文字起こし結果)を得る事はできた!
  • 手軽にすぐトレーニング済みの AI を使えた

  • テキスト起こしの結果

    • バッチリだった部分もあり、
      • リアクトネイティブを使ってフロントの開発をしています
    • 面白い結果になってしまった部分もあった
      • タムラと申します => 冷凍点と申します
      • にジョイン => 人参
    • 今回はオーディオファイルの質(滑舌)が良くなかった
  • 利用方法の誤りや、結果を改善できる方法があれば、ご教示いただければありがたいです

つまいずいたところ

  • The request is missing a valid API key.

    • APIキー をつけてなかった
    • ?key={APIキー}APIキーをつける
  • Invalid JSON payload received. Unexpected token.\nrequest_body.json\n

    • -d {JSONファイル名} がうまく行かなかった
      • $ curl -H "Content-Type: application/json; charset=UTF-8" -d request_body.json https://speech.googleapis.com/v1/speech:recognize?key={APIキー}
    • コマンドに JSON を直接書くとうまく行った
      • $curl -H "Content-Type: application/json" -d '{"config": {"languageCode": "ja-JP"},"audio": {"uri": "gs://self-introduction-20190223/self-introduction.wav"}}' https://speech.googleapis.com/v1/speech:recognizekey={APIキー}
    • 原因を正しく把握できていないが、utf-8JSONファイル の渡しかたに問題がありそう
  • Invalid JSON payload received. Unexpected token.\nrequest_body.json\n

    • Cloud Storage のオブジェクトを 公開 にしていなかった場合もこのエラーになった
  • Must use single channel (mono) audio, but WAV header indicates 2 channels.

    • ステレオのオーディオファイルはサポートされてないので、モノラルのデータを用意する
    • tips

補足: Cloud Speech-to-Text API vs Cloud Machine Learning Engine