見出し画像

GCP 入門 (2) - Text-to-Speech

「GCP」(Google Cloud Platform)の「Text-to-Speech」で文字読み上げを作る方法をまとめました。

・macOS 10.15.7
・Python 3.6

前回

1. Text-to-Speech

「Text-to-Speech」は、テキストを音声に変換するAPIです。

主なタスクは、次のとおりです。

音声ファイルの作成
テキスト・SSMLを音声ファイルに変換。

料金は、次のとおりです。

APIは「REST」と「RPC」が提供されています。

REST
RPC

2. プロジェクトの作成とAPIの有効化

(1) GCPの「Cloud Console」を開く。
(2) トップ画面上端の「プロジェクト名」から新規プロジェクトを作成。
(3) トップ画面上端の「検索ボックス」で「Text-to-Speech」を検索し、「有効にする」ボタンを押す。

3. サービスアカウントキーの作成

(1) 「Cloud Console」のメニュー「APIとサービス」を開く。
(2) 「認証情報 → 認証情報を作成 → ウィザードで選択」を選択。
(3) 「1. 必要な認証情報の種類を調べる」で、以下を設定し、「必要な認証情報」ボタンを押す。

・使用するAPI : Cloud Text-to-Speech API
・"App Engine または Compute Engine でこの API を使用する予定はありますか?" : いいえ

(4) 「2. 認証情報を取得する」で、以下を設定し、「次へ」ボタンを押す。

・サービスアカウント名 : test
・ロール : Project → オーナー ※ どのリソースにアクセスできるかに影響
・キーのタイプ : JSON

成功すると、 「サービスアカウントキー」(JSONファイル)がダウンロードされます。

4. Pythonの開発環境の準備

(1) 「Python3.6」の仮想環境の作成。 
(2) 「クライアントライブラリ」のインストール。

$ pip install --upgrade google-cloud-texttospeech

(3) サービスアカウントキーの登録。

$ export GOOGLE_APPLICATION_CREDENTIALS="[サービスアカウントキーのパス]"

(4) 「pydub」のインストール。
PythonでMP3再生に必要なパッケージになります。

$ pip install pydub

5. 音声ファイルをテキストに変換

テキストファイルを音声ファイルに変換するスクリプトを作成します。

【quickstart.py】

from google.cloud import texttospeech

# クライアントの生成
client = texttospeech.TextToSpeechClient()

# 入力の生成
synthesis_input = texttospeech.SynthesisInput(text="こんにちは")

# 声設定の生成
voice = texttospeech.VoiceSelectionParams(
    language_code="ja-JP",
    ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL
)

# オーディオ設定の生成
audio_config = texttospeech.AudioConfig(
    audio_encoding=texttospeech.AudioEncoding.MP3
)

# 音声合成のリクエスト
response = client.synthesize_speech(
    input=synthesis_input, 
    voice=voice, 
    audio_config=audio_config
)

# レスポンスをファイル出力
with open("output.mp3", "wb") as out:
    out.write(response.audio_content)

6. 参考

◎ 開発ドキュメント

◎ APIリファレンス

【おまけ】 音声合成の設定

音声合成の設定のクラスをまとめました。

VoiceSelectionParams」のプロパティは、次のとおり。

◎ language_code : string
言語コード

◎ ssml_gender : SsmlVoiceGender
声の希望の性別。
・texttospeech.SsmlVoiceGender.MALE : 男性。
・texttospeech.SsmlVoiceGender.FEMALE : 女性。
・texttospeech.SsmlVoiceGender.NEUTRAL : ジェンダーニュートラル。

◎ name : string
声名。未設定の場合は、language_codeとgenderを元に音声を選択。

AudioConfig」のプロパティは、次のとおり。

◎ audio_encoding : AudioEncoding (必須)
オーディオバイトストリームの書式。
・texttospeech.AudioEncoding.Linear16 : 16bitのリニアPCM。
・texttospeech.AudioEncoding.Mp3 : 32kbpsのMP3。
・texttospeech.AudioEncoding.OggOpus : OggにラップされたOpus。

◎ speaking_rate : double
発話速度(0.25〜4.0)。1.0が標準の発話速度。

◎ pitch : double
ピッチ(-20.0〜20.0)。20は元のピッチから20半音増加、-20は元のピッチから20半音減少。

◎ volume_gain_db : double
ボリュームゲイン(-96.0〜16.0 dB単位)。

◎ sample_rate_hertz : int32
合成サンプルレート(hz単位)

◎ effects_profile_id[] : string
オーディオエフェクトを選択するID。

SynthesisInput」の引数は、次のとおり。

◎ text : string
音声合成するテキスト。

◎ ssml : string
音声合成するSSMLドキュメント。

SynthesizeSpeechRequest」の引数は、次のとおり。

◎ input : SynthesisInput
入力。

◎ voice : VoiceSelectionParams
声設定。

◎ audio_config : AudioConfig
オーディオ設定。

次回


この記事が気に入ったらサポートをしてみませんか?