双方向ストリーミングで音声を合成する

このドキュメントでは、双方向ストリーミングを使用して音声を合成するプロセスについて説明します。

双方向ストリーミングでは、テキスト入力を送信しながら音声データを受信できます。つまり、入力テキスト全体が送信される前に音声合成を開始できるため、レイテンシが短縮され、リアルタイムのインタラクションが可能になります。音声アシスタントとインタラクティブ ゲームでは、双方向ストリーミングを使用して、より動的で応答性の高いアプリケーションを作成します。

Text-to-Speech の基本コンセプトについて詳しくは、Text-to-Speech の基本をご覧ください。

始める前に

Text-to-Speech API にリクエストを送信する前に、以下の操作を完了していなければなりません。詳細については、始める前にのページをご覧ください。

双方向ストリーミングで音声を合成する

クライアント ライブラリをインストールする

Python

ライブラリをインストールする前に、Python 開発用の環境を用意しておいてください。

pip install --upgrade google-cloud-texttospeech

テキスト ストリームを送信して音声ストリームを受信する

この API は、StreamingSynthesisInput または StreamingSynthesizeConfig を含む StreamingSynthesizeRequest タイプのリクエスト ストリームを受け入れます。

テキスト入力を提供する StreamingSynthesisInput を使用してストリーム StreamingSynthesizeRequest を送信する前に、StreamingSynthesizeConfig を使用して 1 つの StreamingSynthesizeRequest を送信します。

ストリーミング テキスト読み上げは、Journey の音声のみに対応しています。

Python

サンプルを実行する前に、Python 開発用の環境を用意しておいてください。

#!/usr/bin/env python
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

"""Google Cloud Text-To-Speech API streaming sample application .

Example usage:
    python streaming_tts_quickstart.py
"""


def run_streaming_tts_quickstart():
    """Synthesizes speech from a stream of input text.
    """
    from google.cloud import texttospeech
    import itertools

    client = texttospeech.TextToSpeechClient()

    # See https://cloud.google.com/text-to-speech/docs/voices for all voices.
    streaming_config = texttospeech.StreamingSynthesizeConfig(voice=texttospeech.VoiceSelectionParams(name="en-US-Journey-D", language_code="en-US"))

    # Set the config for your stream. The first request must contain your config, and then each subsequent request must contain text.
    config_request = texttospeech.StreamingSynthesizeRequest(streaming_config=streaming_config)

    # Request generator. Consider using Gemini or another LLM with output streaming as a generator.
    def request_generator():
        yield texttospeech.StreamingSynthesizeRequest(input=texttospeech.StreamingSynthesisInput(text="Hello there. "))
        yield texttospeech.StreamingSynthesizeRequest(input=texttospeech.StreamingSynthesisInput(text="How are you "))
        yield texttospeech.StreamingSynthesizeRequest(input=texttospeech.StreamingSynthesisInput(text="today? It's "))
        yield texttospeech.StreamingSynthesizeRequest(input=texttospeech.StreamingSynthesisInput(text="such nice weather outside."))

    streaming_responses = client.streaming_synthesize(itertools.chain([config_request], request_generator()))
    for response in streaming_responses:
        print(f"Audio content size in bytes is: {len(response.audio_content)}")


if __name__ == "__main__":
    run_streaming_tts_quickstart()

クリーンアップ

不要な Google Cloud Platform 料金が発生しないようにするには、Google Cloud コンソールを使用して、不要なプロジェクトを削除します。

次のステップ

  • Cloud Text-to-Speech の詳細については、基本をご覧ください。
  • 合成音声に利用可能な音声の一覧を確認します。