Sintetizza il parlato con lo streaming bidirezionale

Questo documento descrive la procedura di sintesi dell'audio utilizzando lo streaming bidirezionale.

Lo streaming bidirezionale ti consente di inviare input di testo e ricevere dati audio contemporaneamente. Ciò significa che puoi iniziare a sintetizzare la voce prima che venga inviato il testo di input completo, il che riduce la latenza e consente interazioni in tempo reale. Gli assistenti vocali e i giochi interattivi utilizzano lo streaming bidirezionale per creare applicazioni più dinamiche e reattive.

Per scoprire di più sui concetti fondamentali di Text-to-Speech, leggi Nozioni di base di Text-to-Speech.

Prima di iniziare

Prima di poter inviare una richiesta all'API Text-to-Speech, devi aver completato le seguenti azioni. Per informazioni dettagliate, consulta la pagina Prima di iniziare.

Sintetizza il parlato con lo streaming bidirezionale

installa la libreria client

Python

Prima di installare la libreria, assicurati di aver preparato l'ambiente per lo sviluppo Python.

pip install --upgrade google-cloud-texttospeech

Inviare un flusso di testo e ricevere un flusso audio

L'API accetta un flusso di richieste di tipo StreamingSynthesizeRequest, che contengono StreamingSynthesisInput o StreamingSynthesizeConfig.

Prima di inviare un flusso StreamingSynthesizeRequest con StreamingSynthesisInput, che fornisce l'input di testo, invia esattamente un StreamingSynthesizeRequest con un StreamingSynthesizeConfig.

Text-to-Speech in streaming è compatibile solo con Chirp 3: voci in HD.

Python

Prima di eseguire l'esempio, assicurati di aver preparato l'ambiente per lo sviluppo 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

    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-Chirp3-HD-Charon",
            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
    )

    text_iterator = [
        "Hello there. ",
        "How are you ",
        "today? It's ",
        "such nice weather outside.",
    ]

    # Request generator. Consider using Gemini or another LLM with output streaming as a generator.
    def request_generator():
        yield config_request
        for text in text_iterator:
            yield texttospeech.StreamingSynthesizeRequest(
                input=texttospeech.StreamingSynthesisInput(text=text)
            )

    streaming_responses = client.streaming_synthesize(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()

Esegui la pulizia

Per evitare addebiti Google Cloud non necessari, utilizzaGoogle Cloud console per eliminare il progetto se non ti serve.

Passaggi successivi