Sintetize voz com streaming bidirecional

Este documento explica o processo de síntese de áudio através da transmissão bidirecional.

O streaming bidirecional permite-lhe enviar texto introduzido e receber dados de áudio em simultâneo. Isto significa que pode começar a sintetizar a voz antes de o texto de entrada completo ser enviado, o que reduz a latência e permite interações em tempo real. Os assistentes de voz e os jogos interativos usam o streaming bidirecional para criar aplicações mais dinâmicas e responsivas.

Para saber mais acerca dos conceitos fundamentais da conversão de texto em voz, leia o artigo Noções básicas da conversão de texto em voz.

Antes de começar

Antes de poder enviar um pedido para a API Text-to-Speech, tem de ter concluído as seguintes ações. Consulte a página antes de começar para ver detalhes.

Sintetize voz com streaming bidirecional

Instale a biblioteca de cliente

Python

Antes de instalar a biblioteca, certifique-se de que preparou o seu ambiente para o desenvolvimento em Python.

pip install --upgrade google-cloud-texttospeech

Envie uma stream de texto e receba uma stream de áudio

A API aceita um fluxo de pedidos do tipo StreamingSynthesizeRequest, que contêm StreamingSynthesisInput ou StreamingSynthesizeConfig.

Antes de enviar uma stream StreamingSynthesizeRequest com StreamingSynthesisInput, que fornece entrada de texto, envie exatamente um StreamingSynthesizeRequest com um StreamingSynthesizeConfig.

A conversão de texto em voz de streaming só é compatível com o Chirp 3: vozes em HD.

Python

Antes de executar o exemplo, certifique-se de que preparou o seu ambiente para o desenvolvimento em 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()

Limpar

Para evitar cobranças desnecessárias da Google Cloud Platform, use o Google Cloud console para eliminar o seu projeto se não precisar dele.

O que se segue?