どすえのブログ

ソフトウェア開発ブログ

PythonでGoogle SpeechToText REST API を呼び出す

Pythonで Google Cloud SpeechToText を使用する場合、SpeechToTextクライアントライブラリを使うのが一般的だと思うが、REST API から呼び出す機会があったのでメモ。

REST API の公式仕様はこちらに載っている。 cloud.google.com

準備として、APIキーの取得が必要。 こちらの記事などを参考に取得してください。

音声認識を行う手順は

  • ファイルをバイナリで読み込む
  • base64で文字列に変換する
  • リクエストボディに渡す
  • speech:recognizeエンドポイントにPOSTリクエスト

少しはまった点で、バイナリはbase64.b64encodeでエンコードしただけではダメで、.decode("utf-8")を作用させる必要があった。

configで指定可能なパラメタは以下を参照。

cloud.google.com

コードを以下に示す。

import base64
import json

import requests

API_KEY = "[YOUR API KEY]"


if __name__ == "__main__":
    recognize_url = "https://speech.googleapis.com/v1p1beta1/speech:recognize"
    url = recognize_url + "?key=%s" % (API_KEY)
    filepath = "[path to dir]/something.wav"
    config = {
        "encoding": "LINEAR16",
        "languageCode": "ja-JP",
        "model": "default",
        "maxAlternatives": 5,
        "enableWordConfidence": True,
        "enableWordTimeOffsets": True,
        "enableAutomaticPunctuation": True,
    }
    with open(filepath, "rb") as f:
        content = base64.b64encode(f.read()).decode("utf-8")
        payload = {"audio": {"content": content}, "config": config}
        headers = {"content-type": "application/json"}
        response = requests.post(url, headers=headers, data=json.dumps(payload))

    print(response.json())