Chirp 3: Voces en HD

Text-to-Speech Chirp 3: Las voces HD representan la última generación de tecnología de texto a voz. Gracias a nuestros LLM de vanguardia, estas voces ofrecen un nivel de realismo y resonancia emocional sin precedentes.

Prueba un notebook de Colab Ver notebook en GitHub

Opciones de voz

Hay una variedad de opciones de voz disponibles, cada una con características distintas:

Nombre Género Demostración
Aoede Mujer
Puck Hombre
Caronte Hombre
Kore Mujer
Fenrir Hombre
Leda Mujer
Orus Hombre
Zephyr Mujer

Disponibilidad de idiomas

Chirp 3: Las voces HD son compatibles con los siguientes idiomas:

Idioma Código BCP-47
Alemán (Alemania) de-DE
inglés (Australia) en-AU
Inglés (Reino Unido) en-GB
Inglés (India) en-IN
Español (Estados Unidos) es-US
Francés (Francia) fr-FR
Hindi (India) hi-IN
Portugués (Brasil) pt-BR
Árabe (genérico) ar-XA
Español (España) es-ES
Francés (Canadá) fr-CA
Indonesio (Indonesia) id-ID
Italiano (Italia) it-IT
Japonés (Japón) ja-JP
Turco (Turquía) tr-TR
Vietnamita (Vietnam) vi-VN
Bengalí (India) bn-IN
Guyaratí (India) gu-IN
Canarés (India) kn-IN
Malabar (India) ml-IN
Maratí (India) mr-IN
Tamil (India) ta-IN
Telugu (India) te-IN
Holandés (Países Bajos) nl-NL
Coreano (Corea del Sur) ko-KR
Chino mandarín (China) cmn-CN
Polaco (Polonia) pl-PL
Ruso (Rusia) ru-RU
Tailandés (Tailandia) th-TH

Disponibilidad regional

Chirp 3: Las voces HD están disponibles en las siguientes regiones Google Cloud :

Google Cloud Zona Preparación para el lanzamiento
global DG
us DG
eu DG
asia-southeast1 DG

Formatos de salida compatibles

El formato de respuesta predeterminado es LINEAR16, pero también se admiten los siguientes:

Método de API Formato
streaming ALAW, MULAW, OGG_OPUS y PCM
batch ALAW, MULAW, MP3, OGG_OPUS y PCM

Usa Chirp 3: voces HD

Descubre cómo usar Chirp 3: voces HD para sintetizar voz.

Realiza una solicitud de síntesis de voz de transmisión continua

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Text-to-Speech, consulta las bibliotecas cliente de Text-to-Speech. Para obtener más información, consulta la documentación de referencia de la API de Text-to-Speech Python.

Para autenticarte en Text-to-Speech, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

"""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)}")

Realiza una solicitud de síntesis de voz en línea

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Text-to-Speech, consulta las bibliotecas cliente de Text-to-Speech. Para obtener más información, consulta la documentación de referencia de la API de Text-to-Speech Python.

Para autenticarte en Text-to-Speech, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

def synthesize_text():
    """Synthesizes speech from the input string of text."""
    from google.cloud import texttospeech

    text = "Hello there."
    client = texttospeech.TextToSpeechClient()

    input_text = texttospeech.SynthesisInput(text=text)

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices().
    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        name="en-US-Chirp3-HD-Charon",
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.MP3
    )

    response = client.synthesize_speech(
        input=input_text,
        voice=voice,
        audio_config=audio_config,
    )

    # The response's audio_content is binary.
    with open("output.mp3", "wb") as out:
        out.write(response.audio_content)
        print('Audio content written to file "output.mp3"')

Sugerencias para la escritura de secuencias de comandos y las instrucciones

Para crear audio atractivo y que suene natural a partir de texto, es necesario comprender los matices del lenguaje hablado y traducirlos a formato de guion. Las siguientes sugerencias te ayudarán a crear guiones que suenen auténticos y capten el tono elegido.

Comprende el objetivo: habla natural

El objetivo principal es hacer que la voz sintetizada suene lo más cerca posible de una persona que habla de forma natural. Esto incluye lo siguiente:

  • Imitación del ritmo natural: Indica la rapidez o lentitud con la que habla una persona.
  • Crear un flujo fluido: Garantiza transiciones fluidas entre oraciones y frases.
  • Agregar pausas realistas: Incorpora pausas para dar énfasis y claridad.
  • Capturar el tono de conversación: Hacer que el audio suene como una conversación real.

Técnicas clave para una voz natural

  • Puntuación para el ritmo y el flujo

    • Puntos (.): Indican una pausa más larga. Úsalos para separar pensamientos completos y crear límites claros de oraciones.
    • Comas (,): Indican pausas más cortas dentro de las oraciones. Úsalos para separar cláusulas, enumerar elementos o introducir breves pausas para respirar.
    • Paréntesis (...): Representan una pausa más larga y deliberada. Pueden indicar pensamientos finales, vacilación o una pausa dramática.
      • Ejemplo: "Y luego… sucedió".
    • Guiones (-): Se pueden usar para indicar una pausa breve o una interrupción repentina en el pensamiento.
      • Ejemplo: "Quería decirte algo, pero no pude".
  • Incorpora pausas y disfluencias

    • Pausas estratégicas: Usa puntos suspensivos, comas o guiones para crear pausas en lugares donde un orador humano se detendría de forma natural para respirar o enfatizar.
    • Disfluencias (interjecciones): Si bien algunos modelos de texto a voz controlan las disfluencias automáticamente, es fundamental comprender su función. Agregan autenticidad y hacen que el habla suene menos robótica. Incluso si el modelo los agrega, estar al tanto de dónde ocurrirían de forma natural en el habla humana te ayuda a comprender el flujo general de tu guion.
  • Experimentación e iteración

    • Re-síntesis: No tengas miedo de volver a sintetizar el mismo mensaje con la misma voz varias veces. Los pequeños ajustes en la puntuación, el espaciado o la elección de palabras pueden afectar de manera significativa el audio final.
    • Escucha de forma crítica: Presta mucha atención al ritmo, el flujo y el tono general del audio sintetizado. Identifica las áreas que suenan poco naturales y ajusta el guion según corresponda.
    • Variación de voz: Si el sistema lo permite, prueba usar diferentes voces para ver cuál se adapta mejor a tu guion y al tono que elegiste.
  • Sugerencias prácticas para la escritura de secuencias de comandos

    • Leer en voz alta: Antes de sintetizar, lee el guion en voz alta. Esto te ayudará a identificar frases incómodas, pausas poco naturales y áreas que necesitan ajustes.
    • Escribe de forma coloquial: Usa abreviaturas (p.ej., “es”, “somos”) y lenguaje informal para que el guion suene más natural.
    • Ten en cuenta el contexto: El tono y el ritmo del guion deben coincidir con el contexto del audio. Una presentación formal requerirá un enfoque diferente al de una conversación informal.
    • Divide oraciones complejas: Los motores de TTS pueden tener dificultades para procesar oraciones largas y complicadas. Desglosarlas en oraciones más cortas y fáciles de manejar
  • Mejoras en el guion de muestra

    • Guion original (robótico): “El producto ya está disponible. Tenemos funciones nuevas. Es muy emocionante".

    • Guion mejorado (natural): “El producto ya está disponible… y agregamos algunas funciones nuevas y emocionantes. Es muy emocionante".

    • Guion original (robótico): "Este es un mensaje de confirmación automático. Se procesó tu reserva. Los siguientes detalles se relacionan con tu próxima estadía. El número de reserva es 12345. El nombre registrado del huésped es Anthony Vásquez. La fecha de llegada es el 14 de marzo. La fecha de salida es el 16 de marzo. El tipo de habitación es suite de lujo. La cantidad de huéspedes es 1. La hora de entrada es a las 3 p.m. La hora de salida es a las 11 a.m. Ten en cuenta que la política de cancelación requiere una notificación 48 horas antes de la llegada. Si no lo haces dentro de este plazo, se te cobrará una noche de estadía. Las comodidades adicionales que se incluyen en tu reserva son: Wi-Fi gratuito, acceso al gimnasio y desayuno gratuito. Si tienes alguna consulta, comunícate directamente con el hotel al 855-555-6689. Gracias por elegir nuestro hotel".

    • Guion mejorado (natural): "Hola Anthony Vásquez. Nos complace confirmar tu reserva con nosotros. Ya está todo listo para tu estadía del 14 al 16 de marzo en nuestra hermosa suite deluxe. Es para 1 huésped. En caso de que lo necesites, tu número de confirmación es 12345.

      Solo para recordarte que el registro es a las 3 p.m. y la salida a las 11 a.m.

      Ten en cuenta nuestra política de cancelación. Si necesitas cancelar, avísanos al menos 48 horas antes de tu llegada. De lo contrario, se te cobrará la estadía por una noche.

      Para que tu estadía sea aún mejor, tendrás Wi-Fi gratuito, acceso a nuestro gimnasio y un delicioso desayuno gratuito todas las mañanas.

      Si tienes alguna pregunta, no dudes en llamarnos al 855-555-6689. ¡No podemos esperar para darte la bienvenida al hotel!"

    • Explicación de los cambios:

      • Los puntos suspensivos (...) crean una pausa para enfatizar.
      • “Y hemos” usa una contracción para lograr un tono más informal.
      • “Es, bueno, es muy emocionante” agrega una pequeña cantidad de disfluencia y énfasis.
      • El recordatorio amistoso “¿De acuerdo?” suaviza el tono.

    Si sigues estas pautas, podrás crear guiones de texto a audio que suenen naturales, atractivos y humanos. Recuerda que la práctica y la experimentación son clave para dominar esta habilidad.

Chirp 3: Controles de voz HD

Las funciones de control por voz son específicas para la síntesis de voz HD. Ten en cuenta que las voces HD no admiten SSML, y el control de pausa y ritmo puede producir resultados incoherentes.

Disponibilidad de idiomas para los controles por voz

Chirp 3: Por el momento, los controles de voz HD solo están disponibles en inglés de EE.UU.

Control de ritmo

Puedes ajustar la velocidad del audio generado con el parámetro de ritmo. Este parámetro te permite ralentizar o acelerar la voz, con valores que van desde 0.25x (muy lento) hasta 2x (muy rápido), en incrementos de 0.25x. Para establecer el ritmo, usa el parámetro "speaking_rate" en tu solicitud y elige un valor de número de punto flotante entre 0.25 y 2.0. Los valores inferiores a 1.0 ralentizan la voz, mientras que los valores superiores a 1.0 la aceleran. Un valor de 1.0 indica un ritmo no ajustado.

Ejemplo de SynthesizeSpeechRequest con control de ritmo:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "input": {
    "text": "Once upon a time, there was a cute cat. He was so cute that he got lots of treats.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Ejemplo de StreamingSynthesizeConfig con control de ritmo:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Muestras de audio de control de ritmo:

Velocidad de habla Salida
0.5
1.0
2.0

Control de pausa

Para insertar pausas en el habla generada por IA, incorpora etiquetas especiales directamente en el texto con el campo de entrada markup. Ten en cuenta que las etiquetas de pausa solo funcionarán en el campo markup, no en el campo text.

Estas etiquetas le indican a la IA que cree silencios, pero la duración precisa de estas pausas no es fija. La IA ajusta la duración según el contexto, al igual que la voz humana natural varía según el hablante, la ubicación y la estructura de la oración. Las etiquetas de pausa disponibles son [pause short], [pause long] y [pause]. Si quieres conocer métodos alternativos para crear pausas sin usar etiquetas de marcado, consulta nuestros lineamientos para la creación y redacción de instrucciones.

En ocasiones, el modelo de IA puede ignorar las etiquetas de pausa, especialmente si se colocan en posiciones poco naturales en el texto. Puedes combinar varias etiquetas de pausa para obtener silencios más largos, pero el uso excesivo puede generar problemas.

Ejemplo de SynthesizeSpeechRequest con control de pausa:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Let me take a look, [pause long] yes, I see it.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Ejemplo de StreamingSynthesisInput con control de pausa:

{
  "markup": "Let me take a look, [pause long] yes, I see it.",
}

Pausa muestras de audio de control:

Entrada de Markup Salida
"Déjame ver, sí, lo veo".
"Déjame echar un vistazo, [pausa larga] sí, lo veo".

Preguntas frecuentes

Preguntas frecuentes y sus respuestas:

¿Cómo controlo el ritmo y el flujo para mejorar el resultado de la voz?

Puedes utilizar nuestros lineamientos para la creación y redacción de instrucciones y mejorar tu instrucción de texto para mejorar la salida de voz.

¿Cómo accedo a las voces en los idiomas admitidos?

Los nombres de las voces siguen un formato específico, lo que permite el uso en todos los idiomas admitidos especificando la voz de forma única. El formato sigue \<locale\>-\<model\>-\<voice\>. Por ejemplo, para usar la voz de Kore para inglés (Estados Unidos) con el modelo de voces de Chirp 3: HD, debes especificarla como en-US-Chirp3-HD-Kore.

¿Las voces de Chirp 3: HD admiten SSML?

Si bien las voces de Chirp 3: HD no funcionan con SSML, puedes administrar el ritmo y el control de pausa a través de las opciones de control por voz HD.