Sprache mit bidirektionalem Streaming synthetisieren

In diesem Dokument wird beschrieben, wie Sie Audioinhalte mithilfe von bidirektionalem Streaming synthetisieren.

Beim bidirektionalen Streaming können Sie gleichzeitig Text eingeben und Audiodaten empfangen. Das bedeutet, dass Sie mit der Sprachsynthese beginnen können, bevor der gesamte Eingabetext gesendet wurde. Dadurch wird die Latenz reduziert und Echtzeitinteraktionen werden möglich. Sprachassistenten und interaktive Spiele nutzen bidirektionales Streaming, um dynamischere und responsivere Anwendungen zu erstellen.

Weitere Informationen zu den grundlegenden Konzepten von Text-to-Speech finden Sie unter Grundlagen von Text-to-Speech.

Hinweis

Bevor Sie eine Anfrage an die Text-to-Speech API senden können, müssen Sie die folgenden Aktionen ausgeführt haben. Weitere Informationen finden Sie auf der Seite Vorbereitung.

Sprache mit bidirektionalem Streaming synthetisieren

Clientbibliothek installieren

Python

Bevor Sie die Bibliothek installieren, prüfen Sie, ob Sie Ihre Umgebung auf die Python-Entwicklung vorbereitet haben.

pip install --upgrade google-cloud-texttospeech

Textstream senden und Audiostream empfangen

Die API akzeptiert einen Stream von Anfragen vom Typ StreamingSynthesizeRequest, die entweder StreamingSynthesisInput oder StreamingSynthesizeConfig enthalten.

Bevor du einen Stream StreamingSynthesizeRequest mit StreamingSynthesisInput sendest, der Texteingaben enthält, sende genau eine StreamingSynthesizeRequest mit einer StreamingSynthesizeConfig.

Die Streaming-Text-to-Speech-Funktion ist nur mit Journey-Stimmen kompatibel.

Python

Bevor Sie das Beispiel ausführen, prüfen Sie, ob Sie Ihre Umgebung auf die Python-Entwicklung vorbereitet haben.

#!/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()

Bereinigen

Löschen Sie das Projekt mit der Google Cloud Console, wenn Sie es nicht benötigen. Damit vermeiden Sie unnötige Kosten für die Google Cloud Platform.

Nächste Schritte