Esegui la sintesi vocale con lo streaming bidirezionale

Questo documento descrive la procedura per la sintesi di 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 la sintesi vocale prima che venga inviato il testo di input completo, riducendo la latenza e rendendo possibili interazioni in tempo reale. Gli assistenti vocali e i giochi interattivi utilizzano lo streaming bidirezionale per creare applicazioni più dinamiche e reattive.

Per saperne 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 azioni seguenti. Per informazioni dettagliate, consulta la pagina Prima di iniziare.

  • Abilita Text-to-Speech in un progetto Google Cloud .
    1. Assicurati che la fatturazione sia abilitata per Text-to-Speech.
  • Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

Esegui la sintesi vocale 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

Invia un flusso di testo e ricevi 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 una StreamingSynthesizeRequest con una StreamingSynthesizeConfig.

Lo streaming di Text-to-Speech è 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 non necessari di Google Cloud, utilizzaGoogle Cloud console per eliminare il progetto se non ti serve.

Passaggi successivi