Sintetiza la voz con transmisión bidireccional

En este documento, se explica el proceso de sintetizar audio con la transmisión bidireccional.

La transmisión bidireccional te permite enviar entradas de texto y recibir datos de audio de forma simultánea. Esto significa que puedes comenzar a sintetizar la voz antes de que se envíe el texto de entrada completo, lo que reduce la latencia y habilita interacciones en tiempo real. Los asistentes de voz y los juegos interactivos usan la transmisión bidireccional para crear aplicaciones más dinámicas y responsivas.

Para obtener más información sobre los conceptos básicos de Text-to-Speech, consulta Conceptos básicos de Text-to-Speech.

Antes de comenzar

Antes de enviar una solicitud a la API de Text-to-Speech, debes completar las siguientes acciones. Consulta la página antes de comenzar para obtener más detalles.

Sintetiza la voz con transmisión bidireccional

Instala la biblioteca cliente

Python

Antes de instalar la biblioteca, asegúrate de haber preparado tu entorno para el desarrollo en Python.

pip install --upgrade google-cloud-texttospeech

Envía una transmisión de texto y recibe una transmisión de audio

La API acepta un flujo de solicitudes con el tipo StreamingSynthesizeRequest, que contiene StreamingSynthesisInput o StreamingSynthesizeConfig.

Antes de enviar un flujo StreamingSynthesizeRequest con StreamingSynthesisInput, que proporciona una entrada de texto, envía exactamente un StreamingSynthesizeRequest con un StreamingSynthesizeConfig.

La transmisión de texto a voz solo es compatible con las voces de Journey.

Python

Antes de ejecutar el ejemplo, asegúrate de haber preparado tu entorno para el desarrollo en 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()

Realiza una limpieza

A fin de evitar cargos innecesarios de Google Cloud Platform, usa la consola de Google Cloud para borrar tu proyecto si no lo necesitas.

¿Qué sigue?