1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Cloud Text-to-SpeechをPythonで試す

Last updated at Posted at 2025-03-03

Google Cloud Text-to-Speechを試したくて情報収集していてえらく苦労した.

Google Cloudのサービスを使う際には,Googleのコマンドラインツールを入れるだの,それを認証させるだの,いろいろとややこしい.自分の手元のPCにあんまりいろんなツールを入れるのいやだったので,何とかなんないかな~,と調べまくった.

最終的に一番簡単な方法はこれだろう,というのにたどりついたので,そのメモ書き.
(すでに登録してしまってから書いているので,イチから登録するときにはもしかしたら違ってるかもしれません・・・)

Google Cloudへの登録

「無料で開始」から,アカウント登録.
名前とか住所とか支払い情報とかごちゃごちゃ入力.

Google Cloud Text-to-Speechを有効化

「有効化」をクリック

API Keyの取得

右上に「コンソール」というものがあるはずなのでそこをクリック.

コンソール画面に遷移したら,上に検索ボックスがあるので,そこに/認証情報と入力.

するとトップに「API」というアイコンのついた以下のような項目があるのでクリック.
image.png

すると,こんな画面がでてきます.

image.png

この「+認証情報を作成」とクリック.選択肢が3つ出てくるが,「APIキー」を選択すると,APIキーが発行される.

なお,発行直後のAPIキーは有効化されているあらゆるGoogle Cloud APIサービスにアクセスできるキーになっているので,使えるAPIを制限したい場合には作ったキーをクリックする.すると,以下のような画面が現れ,「キーを制限」を選ぶと,使うAPIを選択することができる.

image.png

REST APIで使う(Python)

APIキーが取得できたら,あとはGoogle Cloud Text-to-SpeechのREST APIにキーを含めて叩けばOK.
具体的には以下のような感じ

import requests
import json

# APIキーをここに入れる
API_KEY = "********************************"

# APIエンドポイント
url = f"https://texttospeech.googleapis.com/v1/text:synthesize?key={API_KEY}"

# 音声合成のリクエストデータ
data = {
    "input": {"text": "こんにちは、Google Cloud Text-to-Speechです。"},
    "voice": {
        "languageCode": "ja-JP",
        "name": "ja-JP-Wavenet-D",  # 男性の自然な声
        "ssmlGender": "MALE"
    },
    "audioConfig": {
        "audioEncoding": "MP3"
    }
}

# リクエスト送信
response = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(data))

# 結果を取得
if response.status_code == 200:
    audio_content = json.loads(response.text)["audioContent"]
    with open("output.mp3", "wb") as audio_file:
        audio_file.write(bytearray(audio_content, "utf-8"))
    print("音声ファイル 'output.mp3' が作成されました。")
else:
    print("エラー:", response.text)

あるいは,ファイルにするのではなく,python上で直接再生させたい場合には以下のような感じ.

import requests
import json
import io
from pydub import AudioSegment
from pydub.playback import play
import base64

# APIキーをここに入れる
API_KEY = "********************************"

# APIエンドポイント
url = f"https://texttospeech.googleapis.com/v1/text:synthesize?key={API_KEY}"

# 音声合成のリクエストデータ
data = {
    "input": {"text": "こんにちは、Google Cloud Text-to-Speechです。"},
    "voice": {
        "languageCode": "ja-JP",
        "name": "ja-JP-Wavenet-D",  # 男性の自然な声
        "ssmlGender": "MALE"
    },
    "audioConfig": {
        "audioEncoding": "MP3"
    }
}

# リクエスト送信
response = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(data))

# 結果を取得
if response.status_code == 200:
    # Base64エンコードされた音声データをデコード
    audio_content = json.loads(response.text)["audioContent"]
    audio_data = base64.b64decode(audio_content)
    
    # バイナリデータを pydub の AudioSegment に変換
    audio = AudioSegment.from_file(io.BytesIO(audio_data), format="mp3")

    # Python 上で直接再生
    play(audio)

else:
    print("エラー:", response.text)


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?