Synthétiser la voix avec le streaming bidirectionnel

Ce document vous explique comment synthétiser des contenus audio à l'aide du streaming bidirectionnel.

Le streaming bidirectionnel vous permet d'envoyer des entrées de texte et de recevoir des données audio simultanément. Cela signifie que vous pouvez commencer à synthétiser la parole avant l'envoi du texte d'entrée complet, ce qui réduit la latence et permet des interactions en temps réel. Les assistants vocaux et les jeux interactifs utilisent le streaming bidirectionnel pour créer des applications plus dynamiques et réactives.

Pour en savoir plus sur les concepts fondamentaux de Text-to-Speech, consultez la page Concepts fondamentaux de Text-to-Speech.

Avant de commencer

Avant de pouvoir envoyer une requête à l'API Text-to-Speech, vous devez avoir effectué les actions suivantes. Pour en savoir plus, consultez la page Avant de commencer.

Synthétiser la voix avec le streaming bidirectionnel

Installer la bibliothèque cliente

Python

Avant d'installer la bibliothèque, assurez-vous d'avoir préparé votre environnement pour le développement Python.

pip install --upgrade google-cloud-texttospeech

Envoyer un flux de texte et recevoir un flux audio

L'API accepte un flux de requêtes de type StreamingSynthesizeRequest, qui contient StreamingSynthesisInput ou StreamingSynthesizeConfig.

Avant d'envoyer un flux StreamingSynthesizeRequest avec StreamingSynthesisInput, qui fournit une entrée de texte, envoyez exactement un StreamingSynthesizeRequest avec un StreamingSynthesizeConfig.

Le streaming de Text-to-Speech n'est compatible qu'avec les voix Journey.

Python

Avant d'exécuter l'exemple, assurez-vous d'avoir préparé l'environnement pour le développement 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()

Effectuer un nettoyage

Pour éviter d'encourir des frais inutiles liés à Google Cloud Platform, supprimez votre projet à l'aide de Google Cloud Console si vous n'en avez plus besoin.

Étape suivante

  • Pour en savoir plus sur Cloud Text-to-Speech, consultez la page Concepts de base.
  • Passez en revue la liste des voix disponibles que vous pouvez utiliser pour la voix synthétique.