Sintetizar voz con streaming bidireccional

En este documento se explica cómo sintetizar audio mediante el streaming bidireccional.

El streaming bidireccional te permite enviar texto y recibir datos de audio simultáneamente. Esto significa que puedes empezar a sintetizar el habla antes de que se envíe el texto de entrada completo, lo que reduce la latencia y permite interacciones en tiempo real. Los asistentes de voz y los juegos interactivos usan el streaming bidireccional para crear aplicaciones más dinámicas y con mayor capacidad de respuesta.

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

Antes de empezar

Antes de enviar una solicitud a la API Text-to-Speech, debes haber completado las siguientes acciones. Consulta la página Antes de empezar para obtener más información.

Sintetizar voz con streaming bidireccional

Instalar la biblioteca cliente

Python

Antes de instalar la biblioteca, prepara el entorno para las tareas de desarrollo en Python.

pip install --upgrade google-cloud-texttospeech

Enviar un flujo de texto y recibir un flujo de audio

La API acepta un flujo de solicitudes de tipo StreamingSynthesizeRequest, que contienen StreamingSynthesisInput o StreamingSynthesizeConfig.

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

La conversión de texto a voz en streaming solo es compatible con las voces Chirp 3 HD.

Python

Antes de ejecutar el ejemplo, prepara el entorno para las tareas de 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

    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()

Limpieza

Para evitar cargos innecesarios de Google Cloud Platform, usa el Google Cloud console para eliminar tu proyecto si no lo necesitas.

Siguientes pasos