Chirp 3: Voces en HD

Las voces en HD de Chirp 3 de Text-to-Speech representan la generación más reciente de la tecnología de Text-to-Speech. Gracias a nuestros LLMs de vanguardia, estas voces ofrecen un nivel de realismo y resonancia emocional sin igual.

Probar un notebook de Colab Ver el 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
Achird Hombre
Algenib Hombre
Algieba Hombre
Alnilam Hombre
Autonoe Mujer
Callirrhoe Mujer
Despina Mujer
Encélado Hombre
Erinome Mujer
Gacrux Mujer
Jápeto Hombre
Laomedeia Mujer
Pulcherrima Mujer
Rasalgethi Hombre
Sadachbia Hombre
Sadaltager Hombre
Schedar Hombre
Sulafat Mujer
Umbriel Hombre
Vindemiatrix Mujer
Zubenelgenubi Hombre
Achernar Mujer

Disponibilidad de idiomas

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

Idioma Código BCP-47
Inglés (Estados Unidos) en-US
inglés (Australia) en-AU
Inglés (Reino Unido) en-GB
Inglés (India) en-IN
Español (Estados Unidos) es-US
Alemán (Alemania) de-DE
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 (Bélgica) nl-BE
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
Suajili (Kenia) sw-KE
Tailandés (Tailandia) th-TH
Urdu (India) ur-IN
Ucraniano (Ucrania) uk-UA

Disponibilidad regional

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

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 se admiten otros formatos, como 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 en HD

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

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

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 escribir secuencias de comandos y generar instrucciones

Para crear audio atractivo y 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.

Comprensión del objetivo: Habla natural

El objetivo principal es que la voz sintetizada suene lo más parecida posible a la de una persona natural. Esto incluye lo siguiente:

  • Imitación del ritmo natural: La velocidad con la que habla una persona.
  • Creación de un flujo fluido: Garantizar transiciones fluidas entre oraciones y frases
  • Agregar pausas realistas: Incorpora pausas para enfatizar y aclarar.
  • Capturar el tono conversacional: Hacer que el audio suene como una conversación real

Técnicas clave para el habla natural

  • Puntuación para el ritmo y el flujo

    • Puntos (.): Indican una pausa más larga y el final de una oración. Úsalos para separar ideas completas y crear límites claros entre las oraciones.
    • Comas (,): Indican pausas más cortas dentro de las oraciones. Úsalos para separar cláusulas, enumerar elementos o introducir pausas breves para respirar.
    • Elipsis (…): Representan una pausa más larga y deliberada. Pueden indicar pensamientos rezagados, dudas o una pausa dramática.
      • Ejemplo: "Y, entonces… sucedió".
    • Guiones (-): Se pueden usar para indicar una breve pausa o una interrupción repentina en el pensamiento.
      • Ejemplo: "Quería decir algo, pero no pude".
  • Cómo incorporar pausas y disfluencias

    • Pausas estratégicas: Usa puntos suspensivos, comas o guiones para crear pausas en lugares donde un orador humano haría una pausa de forma natural para respirar o enfatizar.
    • Disfluencias (ehs y ums): Si bien algunos modelos de Text-to-Speech manejan las disfluencias automáticamente, es fundamental comprender su función. Agregan autenticidad y hacen que el discurso suene menos robótico. Incluso si el modelo los agrega, saber 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

    • Resintetiza: No dudes en resintetizar 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 significativamente 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 elegido.
  • Sugerencias prácticas para escribir secuencias de comandos

    • Lectura 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 conversacional: Usa contracciones (p.ej., "es", "estamos") y lenguaje informal para que el guion suene más natural.
    • Ten en cuenta el contexto: El tono y el ritmo de tu guion deben coincidir con el contexto del audio. Una presentación formal requerirá un enfoque diferente al de una conversación informal.
    • Desglosa oraciones complejas: Las oraciones largas y complejas pueden ser difíciles de procesar para los motores de TTS. Divídelas en oraciones más cortas y fáciles de comprender.
  • Mejoras en el guion de muestra

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

    • Mejora de la secuencia de comandos (natural): "El producto ya está disponible… y agregamos algunas funciones nuevas emocionantes. Es, bueno, es muy emocionante".

    • Guion original (robótico): "Este es un mensaje de confirmación automático. Se procesó tu reserva. Los siguientes detalles corresponden a tu próxima estadía. El número de reserva es 12345. El nombre del huésped registrado es Anthony Vasquez y 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 hace dentro de este plazo, se le cobrará una noche de estadía. Los servicios adicionales incluidos en tu reservación son Wi-Fi sin costo adicional, acceso al gimnasio y desayuno sin costo adicional. Si tienes alguna consulta, comunícate directamente con el hotel al 855-555-6689. Gracias por elegir nuestro hotel".

    • Improved Script (Natural): "Hola, Anthony Vasquez: Nos complace confirmar tu reserva con nosotros. Todo está listo para tu estadía del 14 al 16 de marzo en nuestra hermosa suite de lujo. Es para 1 huésped. Tu número de confirmación es 12345, en caso de que lo necesites.

      Así que, como recordatorio, el registro de entrada es a las 3 p.m. y el de salida es a las 11 a.m.

      Ahora, solo un aviso sobre nuestra política de cancelación… Si necesitas cancelar, avísanos al menos 48 horas antes de tu llegada, ¿de acuerdo? De lo contrario, se te cobrará la estadía por una noche.

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

      Si tienes alguna pregunta, no dudes en llamarnos al 855-555-6689. ¡Esperamos recibirte en el hotel!"

    • Explicación de los cambios:

      • Los puntos suspensivos (…) crean una pausa para enfatizar.
      • "y hemos" usa una contracción para un tono más conversacional.
      • "Es, bueno, es muy emocionante" agrega una pequeña cantidad de disfluencia y énfasis.
      • El recordatorio amigable "¿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 en HD

Las funciones de control por voz son específicas para la síntesis de voz en HD. Ten en cuenta que Chirp 3: Voces en HD no admite SSML, pero puedes administrar el control de ritmo, el control de pausas y las pronunciaciones personalizadas a través de las opciones de control de voz en HD de Chirp 3.

Control de ritmo

Puedes ajustar la velocidad del audio generado con el parámetro de ritmo. El parámetro de ritmo te permite ralentizar o acelerar el discurso, con valores que van desde 0.25 veces (muy lento) hasta 2 veces (muy rápido). Para establecer el ritmo, usa el parámetro speaking_rate en tu solicitud. Elige un valor entre 0.25 y 2.0. Los valores inferiores a 1.0 ralentizan el habla, y los valores superiores a 1.0 la aceleran. Un valor de 1.0 indica un ritmo sin ajustar.

Ejemplo de SynthesizeSpeechRequest que usa el 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 que usa el 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

Puedes insertar pausas en el discurso generado por IA si incorporas 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 y no en el campo text.

Estas etiquetas 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, de manera similar a la forma en que el habla humana natural varía según el orador, la ubicación y la estructura de la oración. Las etiquetas de pausa disponibles son [pause short], [pause long] y [pause]. Para conocer otros métodos para crear pausas sin usar etiquetas de marcado, consulta nuestros lineamientos para crear instrucciones y redactar contenido.

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

Ejemplo de SynthesizeSpeechRequest que usa el 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 las muestras de audio de control:

Entrada de lenguaje de marcado Salida
"Déjame ver. Sí, ya lo veo".
"Déjame echarle un vistazo. [Pausa larga] Sí, lo veo".

Pronunciaciones personalizadas

Puedes especificar pronunciaciones personalizadas con representaciones fonéticas del AFI o X-SAMPA para las palabras del texto de entrada. Asegúrate de usar fonemas adecuados para el idioma y lograr una renderización precisa. Puedes obtener más información sobre la anulación de fonemas en nuestra documentación sobre fonemas.

Ejemplo de SynthesizeSpeechRequest que usa pronunciaciones personalizadas:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "There is a dog in the boat",
    "custom_pronunciations": {
      "phrase": "dog",
      "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
      "pronunciation": "\"k{t",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Ejemplo de StreamingSynthesizeConfig que usa pronunciaciones personalizadas:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
  "custom_pronunciations": {
    "phrase": "dog",
    "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
    "pronunciation": "\"k{t",
  }
}

Muestras de audio de pronunciaciones personalizadas:

Se aplicaron las pronunciaciones personalizadas Salida
Ninguno
"dog" pronunciado como ""k{t"

Las frases anuladas se pueden formatear de cualquier manera, incluso con símbolos. Por ejemplo, en el caso de una posible ambigüedad basada en el contexto en la coincidencia de frases (lo que es común en idiomas como el chino y el japonés) o en oraciones en las que una palabra se puede pronunciar de diferentes maneras, la frase se puede formatear para eliminar la ambigüedad. Por ejemplo, para evitar reemplazar accidentalmente otras instancias de la palabra leer en la entrada, la frase "read" se podría formatear como "read1", "[read]" o "(read)" tanto para el texto de entrada como para la frase reemplazada.

Consulta este ejemplo de cómo aplicar pronunciaciones personalizadas a una oración en la que la palabra read se pronuncia de dos maneras diferentes:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "I read1 a book, and I will now read2 it to you.",
    "custom_pronunciations": {
      "phrase": "read1",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "rɛd",
    }
    "custom_pronunciations": {
      "phrase": "read2",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Se aplicaron las pronunciaciones personalizadas Salida
"read" se anula de dos maneras

Además, las pronunciaciones personalizadas se pueden usar con entrada de marcado, lo que también permite el uso de etiquetas de pausa:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Did you [pause long] read this book?",
    "custom_pronunciations": {
      "phrase": "read",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Pronunciaciones personalizadas que se usaron Salida
Anula la pronunciación con la etiqueta de pausa

Idiomas disponibles para los controles por voz

  • El control de ritmo está disponible en todas las configuraciones regionales.

  • El control de pausa está disponible en todas las configuraciones regionales.

  • Las pronunciaciones personalizadas están disponibles en todas las configuraciones regionales, excepto en bn-in, gu-in, nl-be, sw-ke, th-th, uk-ua, ur-in y vi-vn.

Preguntas frecuentes

Preguntas frecuentes y sus respuestas:

¿Cómo puedo controlar el ritmo y el flujo para mejorar la salida de voz?

Puedes utilizar nuestros lineamientos para la creación y el uso 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 usarlas 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 en inglés (Estados Unidos) con el modelo Chirp 3: Voces en HD, lo especificarías como en-US-Chirp3-HD-Kore.

¿Chirp 3: Voces en HD admite SSML?

Si bien Chirp 3: Voces en HD no funciona con SSML, puedes administrar el control de ritmo, el control de pausas y las pronunciaciones personalizadas a través de las opciones de control de Chirp 3: Voces en HD.