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で指定可能なパラメタは以下を参照。
コードを以下に示す。
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())