arrow_back

話すアプリ「Text-to-Speech」を利用した合成音声の作成

ログイン 参加
700 以上のラボとコースにアクセス

話すアプリ「Text-to-Speech」を利用した合成音声の作成

ラボ 1時間 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

GSP222

Google Cloud セルフペース ラボのロゴ

概要

Text-to-Speech API を使用すると、機械で生成された、つまり合成された人間の音声のファイルを作成できます。コンテンツをテキストまたは音声合成マークアップ言語(SSML)として提供し、音声(独特のトーンとアクセントを持つ言語のユニークな「話者」)を指定して出力を構成すると、指定した声で話された言葉の音声データとして、コンテンツが Text-to-Speech API によって返されます。

このラボでは、Text-to-Speech API を使用して一連の音声ファイルを作成し、それらを聴いて違いを比較します。

学習内容

このラボでは、Text-to-Speech API を使用して次のことを行います。

  • 一連の音声ファイルを作成する。
  • 音声ファイルを聴いて比較する。
  • 音声出力を構成する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

プロジェクトのリージョンの設定

Cloud Shell で次のコマンドを入力し、このラボでプロジェクトを実行するリージョンを設定します。

gcloud config set compute/region {{{project_0.default_region | Region}}}

タスク 1. Text-to-Speech API を有効にする

[Cloud Text-to-Speech API] ページには、詳細や指標などが表示されます。

API を有効にします。

  1. ナビゲーション メニューナビゲーション メニュー アイコン)で、[API とサービス] > [ライブラリ] をクリックします。

  2. [API とサービスを検索] ボックスに「text-to-speech」と入力し、検索結果で [Cloud Text-to-Speech API] をクリックします。

  3. [有効にする] をクリックして、Cloud Text-to-Speech API を有効にします。

API がプロジェクトで有効になるまで数秒待ちます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Text-to-Speech API を有効にする

タスク 2. 仮想環境を作成する

Python 仮想環境を使用して、パッケージのインストール先をシステムとは別の場所にします。

  1. virtualenv 環境をインストールします。
sudo apt-get install -y virtualenv
  1. 仮想環境をビルドします。
python3 -m venv venv
  1. 仮想環境をアクティブにします。
source venv/bin/activate

タスク 3. サービス アカウントを作成する

サービス アカウントを使用して、Text-to-Speech API への呼び出しを認証します。

サービス アカウントを作成します。

  1. Cloud Shell で次のコマンドを実行します。
gcloud iam service-accounts create tts-qwiklab
  1. サービス アカウントを使用するためのキーを生成します。
gcloud iam service-accounts keys create tts-qwiklab.json --iam-account tts-qwiklab@{{{project_0.project_id | Project ID}}}.iam.gserviceaccount.com
  1. 最後に、GOOGLE_APPLICATION_CREDENTIALS 環境変数をキーファイルの場所に設定します。
export GOOGLE_APPLICATION_CREDENTIALS=tts-qwiklab.json

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 サービス アカウントを作成する

タスク 4. 利用可能な音声のリストを取得する

Text-to-Speech API には、音声ファイルの作成に使用できるさまざまな音声と言語が用意されています。利用可能な音声をコンテンツの話者として使用できます。

注: Text-to-Speech API には、より自然な合成音声を生成する WaveNet 音声と呼ばれるプレミアム音声がいくつか含まれていますが、 これらは他の利用可能な音声よりもやや高額になります。詳しくは、Cloud Text-to-Speech の料金ページをご覧ください。
  1. Cloud Shell で次の curl コマンドを使用して、Text-to-Speech API で合成音声を作成する際に利用できる音声の一覧を表示します。
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://texttospeech.googleapis.com/v1/voices"

Text-Speech API は、次のような JSON 形式の結果を返します。

{ "voices": [ { "languageCodes": [ "es-ES" ], "name": "es-ES-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 24000 }, { "languageCodes": [ "ja-JP" ], "name": "ja-JP-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 22050 }, { "languageCodes": [ "pt-BR" ], "name": "pt-BR-Standard-A", "ssmlGender": "FEMALE", "naturalSampleRateHertz": 24000 }, ... ] }

curl コマンドの結果では、各音声に以下の 4 つのフィールドがあります。

  • name: 音声をリクエストするために指定する音声 ID。
  • ssmlGender: テキストを話す声の性別(SSML W3 の推奨事項で定義)。
  • naturalSampleRateHertz: 音声のサンプリング レート。
  • languageCodes: 音声に関連付けられた言語コードのリスト。

一部の言語では複数の音声を選択できます。

  1. API から返される結果を 1 つの言語コードに限定します。
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://texttospeech.googleapis.com/v1/voices?language_code=en"

タスク 5. テキストから合成音声を作成する

テキストを発話する音声の名前を取得する方法を確認できましたので、合成音声の作成に移りましょう。

リクエストの作成

これを行うには、Cloud Shell エディタを使用して、synthesize-text.json という名前のテキスト ファイルで Text-to-Speech API へのリクエストを作成します。

  1. Cloud Shell で [エディタを開く] をクリックして、Cloud Shell エディタを開きます。

  2. アクションバーで、[ファイル] > [新しいファイル] をクリックします。

  3. [ファイル形式を選択] または [ファイル名を入力] フィールドに「synthesize-text.json」と入力します。

  4. [OK] をクリックします。

  5. synthesize-text.json に次のコードを追加します。

{ 'input':{ 'text':'Cloud Text-to-Speech API allows developers to include natural-sounding, synthetic human speech as playable audio in their applications. The Text-to-Speech API converts text or Speech Synthesis Markup Language (SSML) input into audio data like MP3 or LINEAR16 (the encoding used in WAV files).' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }
  1. [ファイル] > [保存] をクリックしてファイルを保存します。

JSON 形式のリクエストでは、次の 3 つのオブジェクトが提供されます。

  • input: 合成音声に変換するテキストを指定します。
  • voice: 合成音声に使用する音声をオブジェクトが指定します。
  • audioConfig: どの種類の音声エンコードを送り返すかを Text-to-Speech API に指示します。
  1. [ターミナルを開く] をクリックしてターミナルに戻ります。

  2. Text-to-Speech API を呼び出します。

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-text.json "https://texttospeech.googleapis.com/v1/text:synthesize" \ > synthesize-text.txt

この呼び出しの出力は、synthesize-text.txt というファイルに保存されます。

  1. [エディタを開く] をクリックして synthesize-text.txt ファイルを開きます。以下に示されるように、Text-to-Speech API は audioContent フィールドに割り当てられた base64 エンコード テキストで音声出力を提供します。
{ "audioContent": "//NExAASGoHwABhGudEACdzqFXfRE4EY3AACkD/zX4ADf/6J/[...]" }

レスポンスの変換

レスポンスを音声に変換するには、音声データ synthesize-text.txt を選択し、音声ファイル(このラボでは MP3 ファイル)にデコードします。これを実行する方法は多数ありますが、このラボでは簡単な Python コードを提供します。

  1. アクションバーで、[ファイル] > [新しいファイル] をクリックします。

  2. [ファイル形式を選択] または [ファイル名を入力] フィールドに「tts_decode.py」と入力します。

  3. [OK] をクリックします。

  4. 次のコードを tts_decode.py に入力するかコピーします。

import argparse from base64 import decodebytes import json """ Usage: python tts_decode.py --input "synthesize-text.txt" \ --output "synthesize-text-audio.mp3" """ def decode_tts_output(input_file, output_file): """ Decode output from Cloud Text-to-Speech. input_file: the response from Cloud Text-to-Speech output_file: the name of the audio file to create """ with open(input_file) as input: response = json.load(input) audio_data = response['audioContent'] with open(output_file, "wb") as new_file: new_file.write(decodebytes(audio_data.encode('utf-8'))) if __name__ == '__main__': parser = argparse.ArgumentParser( description="Decode output from Cloud Text-to-Speech", formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument('--input', help='The response from the Text-to-Speech API.', required=True) parser.add_argument('--output', help='The name of the audio file to create', required=True) args = parser.parse_args() decode_tts_output(args.input, args.output)
  1. tts_decode.py を保存します。

音声ファイルの作成と実行

Text-to-Speech API から受け取ったレスポンスから音声ファイルを作成するには:

  1. [ターミナルを開く] をクリックして Cloud Shell に戻ります。

  2. 次のように音声ファイル synthesize-text-audio.mp3 を作成します。

python tts_decode.py --input "synthesize-text.txt" --output "synthesize-text-audio.mp3"
  1. [エディタを開く] をクリックして Cloud Shell エディタを開きます。

  2. 左側のペインで [synthesize-text-audio.mp3] をクリックしてファイルを開きます。

  3. ファイルを再生し、提供したテキストが合成音声によって読み上げられるのを聴きます。

タスク 6. SSML から合成音声を作成する

テキストを使用するだけでなく、音声合成マークアップ言語(SSML)の形式で Text-to-Speech API に入力を提供することもできます。SSML は、合成音声を表現するための XML 形式を定義します。SSML 入力を使用すると、合成音声出力の休止、強調、発音、ピッチ、速度などの品質をより正確に制御できます。

リクエストの作成

まず、synthesize-ssml.json というテキスト ファイルで Text-to-Speech API へのリクエストを作成します。

  1. Cloud Shell エディタのアクションバーで [ファイル] > [新しいファイル] をクリックします。

  2. [ファイル形式を選択] または [ファイル名を入力] フィールドに「synthesize-ssml.json」と入力します。

  3. [OK] をクリックします。

  4. synthesize-ssml.json に次のコードを入力するか、コピーします。

{ 'input':{ 'ssml':'<speak><s> <emphasis level="moderate">Cloud Text-to-Speech API</emphasis> allows developers to include natural-sounding <break strength="x-weak"/> synthetic human speech as playable audio in their applications.</s> <s>The Text-to-Speech API converts text or <prosody rate="slow">Speech Synthesis Markup Language</prosody> <say-as interpret-as=\"characters\">SSML</say-as> input into audio data like <say-as interpret-as=\"characters\">MP3</say-as> or <sub alias="linear sixteen">LINEAR16</sub> <break strength="weak"/> (the encoding used in <sub alias="wave">WAV</sub> files).</s></speak>' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }

送信する JSON ペイロードの input オブジェクトに、今回はいくつかの異なるものが含まれています。

  • input オブジェクトに、text フィールドではなく ssml フィールドがあります。
  • ssml フィールドに、ルートとして <speak> 要素を持つ XML 形式のコンテンツが含まれています。

入力の XML 表現に含まれる各要素は、合成音声の出力に影響を及ぼします。

具体的には、このサンプル内の要素には次のような効果があります。

  • <s> には文が含まれます。
  • <emphasis> は、囲まれた単語やフレーズを強調します。
  • <break> は、音声に休止を挿入します。
  • <prosody> は、ratepitchvolume の各属性で指定されたとおりに、囲まれたテキストのピッチ、発話速度、音量をカスタマイズします。
  • <say-as> は、囲まれたテキストを解釈して発話する方法について、より詳細なガイダンスを提供します(たとえば、並んでいる数字を序数と基数のどちらで発話するかなど)。
  • <sub> は、囲まれたテキストの代わりに発話する置換値を指定します。
注: Cloud Text-to-Speech でサポートされている SSML 要素の完全なリストは、SSML リファレンスで確認できます。
  1. [ターミナルを開く] をクリックして Cloud Shell ターミナルを開きます。

  2. Text-to-Speech API を呼び出して、出力を synthesize-ssml.txt というファイルに保存します。

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-ssml.json "https://texttospeech.googleapis.com/v1/text:synthesize" \ > synthesize-ssml.txt

音声ファイルの作成と実行

ここでも音声を聴くには、Text-to-Speech API からの出力をデコードする必要があります。

  1. [ターミナルを開く] をクリックします。 次のコマンドを実行して、以前に作成した tts_decode.py ユーティリティを使用して、synthesize-ssml-audio.mp3 という名前の音声ファイルを生成します。
python tts_decode.py --input "synthesize-ssml.txt" --output "synthesize-ssml-audio.mp3"
  1. [エディタを開く] をクリックします。

  2. 左側のペインで [synthesize-ssml-audio.mp3] をクリックし、埋め込まれた音声ファイルを再生します。

SSML 出力とテキスト ファイル出力の違いに注目してください。どちらの音声ファイルも同じ単語を発話していますが、SSML 出力では休止が追加されているほか、略語に対して異なる発音が採用されているため、少し違う話し方になっています。

タスク 7. オーディオ出力とデバイス プロファイルを構成する

SSML の枠を超えて、Text-to-Speech API で作成された合成音声出力をさらにカスタマイズすることができます。他の音声エンコードを指定したり、音声出力のピッチを変更したり、特定の種類のハードウェア向けに出力を最適化するようにリクエストしたりすることもできます。

リクエストの作成

Text-to-Speech API へのリクエストは、synthesize-with-settings.json という名前のテキスト ファイルで作成します。

  1. アクションバーで、[ファイル] > [新しいファイル] をクリックします。

  2. [ファイル形式を選択] または [ファイル名を入力] フィールドに「synthesize-with-settings.json」と入力します。

  3. [OK] をクリックします。

  4. synthesize-with-settings.json に次のコードを入力するか、コピーします。

{ 'input':{ 'text':'The Text-to-Speech API is ideal for any application that plays audio of human speech to users. It allows you to convert arbitrary strings, words, and sentences into the sound of a person speaking the same things.' }, 'voice':{ 'languageCode':'en-us', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'speakingRate': 1.15, 'pitch': -2, 'audioEncoding':'OGG_OPUS', 'effectsProfileId': ['headphone-class-device'] } }
  1. ファイルを保存します。

audioConfig オブジェクトに次のフィールドが追加されています。

  • speakingRate フィールドでは、話者が音声を発する速度を指定します。値 1.0 は音声の通常の速度、0.5 はその半分の速度、2.0 は 2 倍の速度です。
  • pitch フィールドでは、単語を発話する際のトーンの違いを指定します。ここで指定する値は単語を発話する際の半音の数で、低い場合は負の値、高い場合は正の値となります。
  • audioEncoding フィールドでは、データに使用する音声エンコードを指定します。ここで指定できる値は、LINEAR16MP3OGG_OPUS です。
  • effectsProfileId フィールドは、Text-to-Speech API が特定の再生デバイス向けに音声出力を最適化するようにリクエストします。API は 事前定義された音声プロファイルを出力に適用し、指定されたクラスのデバイスの音声品質を向上させます。
注: 音声プロファイル機能はベータ版です。アプリケーションでの使用方法について詳しくは、ガイドをご覧ください。ここで説明したその他の設定は、アプリケーションで使用できる一般提供機能です。
  1. [ターミナルを開く] をクリックします。

  2. Text-to-Speech API を呼び出します。

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @synthesize-with-settings.json "https://texttospeech.googleapis.com/v1beta1/text:synthesize" \ > synthesize-with-settings.txt

この呼び出しの出力は、synthesize-with-settings.txt というファイルに保存されます。

音声ファイルの作成と実行

  1. 次のコマンドを実行して、Text-to-Speech API から受け取った出力から synthesize-with-settings-audio.mp3 という名前の音声ファイルを生成します。
python tts_decode.py --input "synthesize-with-settings.txt" --output "synthesize-with-settings-audio.ogg"
  1. [エディタを開く] をクリックして Cloud Shell エディタを開きます。

  2. 左側のペインで synthesize-with-settings-audio.mp3 をクリックしてファイルを開き、音声を再生します。

  3. synthesize-with-settings-audio.mp3 音声ファイルと、このラボで作成した他の音声ファイルを再生します。音声の話し方が他の音声ファイルよりも少し速く、声が低いことに注目してください。

お疲れさまでした

このラボでは、Cloud Text-to-Speech API を使用して合成音声を作成する方法を学びました。学習した内容は次のとおりです。

  • Text-to-Speech API で利用できるすべての合成音声を一覧表示する
  • Text-to-Speech API リクエストを作成し、curl で API を呼び出してテキストと SSML の両方を指定する
  • オーディオ再生用のデバイス プロファイルの指定など、オーディオ出力の設定を構成する

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 9 月 5 日

ラボの最終テスト日: 2024 年 11 月 4 日

Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。