Chirp 3: voces en HD

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

Probar un cuaderno de Colab Ver cuaderno en GitHub

Opciones de voz

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

Nombre Sexo Demostración
Achernar Mujeres
Achird Hombres
Algenib Hombres
Algieba Hombres
Alnilam Hombres
Aoede Mujeres
Autónoe Mujeres
Callirrhoe Mujeres
Charon Hombres
Despina Mujeres
Encélado Hombres
Erinome Mujeres
Fenrir Hombres
Gacrux Mujeres
Jápeto Hombres
Kore Mujeres
Laomedeia Mujeres
Leda Mujeres
Orus Hombres
Pulcherrima Mujeres
Puck Hombres
Rasalgethi Hombres
Sadachbia Hombres
Sadaltager Hombres
Schedar Hombres
Sulafat Mujeres
Umbriel Hombres
Vindemiatrix Mujeres
Zephyr Mujeres
Zubenelgenubi Hombres

Idiomas disponibles

Chirp 3: las voces en HD están disponibles en los siguientes idiomas:

Idioma Código BCP-47
Árabe (genérico) ar-XA
Bengalí (India) bn-IN
Danés (Dinamarca) da-DK
Neerlandés (Bélgica) nl-BE
Neerlandés (Países Bajos) nl-NL
Inglés (Australia) en-AU
Inglés (India) en-IN
Inglés (Reino Unido) en-GB
Inglés (EE. UU.) en-US
Finés (Finlandia) fi-FI
Francés (Canadá) fr-CA
Francés (Francia) fr-FR
Alemán (Alemania) de-DE
Guyaratí (India) gu-IN
Hindi (India) hi-IN
Indonesio (Indonesia) id-ID
Italiano (Italia) it-IT
Japonés (Japón) ja-JP
Canarés (India) kn-IN
Coreano (Corea del Sur) ko-KR
Malayalam (India) ml-IN
Chino mandarín (China) cmn-CN
Maratí (India) mr-IN
Noruego bokmål (Noruega) nb-NO
Polaco (Polonia) pl-PL
Portugués (Brasil) pt-BR
Ruso (Rusia) ru-RU
Español (España) es-ES
Español (Estados Unidos) es-US
Suajili (Kenia) sw-KE
Sueco (Suecia) sv-SE
Tamil (India) ta-IN
Telugu (India) te-IN
Tailandés (Tailandia) th-TH
Turco (Turquía) tr-TR
Ucraniano (Ucrania) uk-UA
Urdu (India) ur-IN
Vietnamita (Vietnam) vi-VN

Disponibilidad regional

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

Google Cloud Zona Preparación para el lanzamiento
global GA
us GA
eu GA
asia-southeast1 GA
europe-west2 GA

Formatos de salida admitidos

El formato de respuesta predeterminado es LINEAR16, pero también 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

Usar las voces de Chirp 3 HD

Descubre cómo usar Chirp 3: voces en HD para sintetizar el habla.

Realizar una solicitud de conversión de texto a voz en streaming

Python

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

Para autenticarte en Text-to-Speech, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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 online

Python

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

Para autenticarte en Text-to-Speech, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en 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"')

Consejos para escribir secuencias de comandos y peticiones

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

Objetivo: habla natural

El objetivo principal es que la voz sintetizada se parezca lo máximo posible a la de una persona. Esto implica lo siguiente:

  • Imitar el ritmo natural: la velocidad a la que habla una persona.
  • Crear un flujo fluido: asegurar transiciones fluidas entre frases.
  • Añadir pausas realistas: incorpora pausas para enfatizar y aclarar.
  • Captar el tono de la conversación: hacer que el audio suene como una conversación real.

Técnicas clave para conseguir un habla natural

  • Puntuación para el ritmo y el flujo

    • Puntos (.): indican una pausa más larga. Úsalas para separar ideas completas y crear límites claros entre frases.
    • Comas (,): indican pausas más cortas dentro de las frases. Úsalas para separar oraciones, elementos de una lista o hacer pausas breves para respirar.
    • Puntos suspensivos ("..."): representan una pausa más larga y deliberada. Pueden indicar que el usuario está pensando en algo, que duda o que hace una pausa dramática.
      • Ejemplo: "Y entonces... pasó".
    • Guiones (-): se pueden usar para indicar una breve pausa o un cambio repentino en el pensamiento.
      • Ejemplo: "Quería decirte algo, pero no he podido".
  • Incorporar pausas y muletillas

    • Pausas estratégicas: usa puntos suspensivos, comas o guiones para crear pausas en los lugares donde un hablante humano haría una pausa de forma natural para respirar o enfatizar algo.
    • Disfluencias (muletillas): aunque algunos modelos de texto a voz gestionan las disfluencias automáticamente, es fundamental entender su papel. Aportan autenticidad y hacen que la voz suene menos robótica. Aunque el modelo las añada, saber dónde se producirían de forma natural en el habla humana te ayudará a entender el flujo general de tu guion.
  • Experimentación e iteración

    • Volver a sintetizar: no tengas miedo de volver a sintetizar el mismo mensaje con la misma voz varias veces. Los pequeños cambios en la puntuación, el espaciado o la elección de palabras pueden influir significativamente en el audio final.
    • Escucha con atención: presta especial atención al ritmo, el flujo y el tono general del audio sintetizado. Identifica las partes que suenan poco naturales y ajusta el guion en consecuencia.
    • Variación de voz: si el sistema lo permite, prueba a usar diferentes voces para ver cuál se adapta mejor a tu guion y al tono elegido.
  • Consejos prácticos para escribir guiones

    • Leer en voz alta: antes de sintetizar, lee tu guion en voz alta. Esto te ayudará a identificar frases poco naturales, pausas extrañas y partes que necesiten ajustes.
    • Escribe de forma conversacional: usa contracciones (por ejemplo, "es", "estamos") y un lenguaje informal para que el guion suene más natural.
    • Ten en cuenta el contexto: el tono y el ritmo del guion deben ajustarse al contexto del audio. Una presentación formal requerirá un enfoque diferente al de una conversación informal.
    • Desglosar frases complejas: las frases largas y complejas pueden ser difíciles de gestionar para los motores de conversión de texto a voz. Divídelas en frases más cortas y fáciles de gestionar.
  • Mejoras en las secuencias de comandos de ejemplo

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

    • Guion mejorado (natural): "El producto ya está disponible... y hemos añadido algunas funciones nuevas muy interesantes. Es, bueno, es muy emocionante".

    • Guion original (robótico): "Este es un mensaje de confirmación automático. Tu reserva se ha procesado. A continuación, le proporcionamos información sobre su próxima estancia. 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 Deluxe. Número de huéspedes: 1. La hora de entrada es a las 15:00. La hora de salida es las 11:00. Ten en cuenta que, según la política de cancelación, debes avisar con 48 horas de antelación a la llegada. Si no lo hace en ese plazo, se le cobrará una noche. Tu reserva incluye Wi-Fi, acceso al gimnasio y desayuno gratuitos. Si tiene alguna pregunta, póngase en contacto directamente con el hotel llamando al 855-555-6689. Gracias por elegir nuestro hotel".

    • Script mejorado (natural): "Hola, Anthony Vasquez: ¡Estamos deseando confirmar tu reserva con nosotros! Ya lo tienes todo listo para tu estancia del 14 al 16 de marzo en nuestra preciosa suite Deluxe. Es para 1 persona. Tu número de confirmación es 12345, por si lo necesitas.

      Solo queremos recordarte que la hora de entrada es a las 15:00 y la de salida, a las 11:00.

      Ahora, 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á una noche.

      Para que tu estancia sea aún mejor, disfrutarás de Wi-Fi gratuito, acceso a nuestro gimnasio y un delicioso desayuno gratuito cada mañana.

      Si tienes alguna pregunta, no dudes en llamarnos al 855-555-6689. Estamos deseando recibirte en el hotel".

    • Explicación de los cambios:

      • Los puntos suspensivos (...) crean una pausa para enfatizar.
      • "and we've" usa una contracción para adoptar un tono más coloquial.
      • "Es, bueno, es muy emocionante" añade una pequeña cantidad de disfluencia y énfasis.
      • "¿De acuerdo?" El recordatorio amable suaviza el tono.

    Si sigues estas directrices, podrás crear guiones de texto a audio que suenen naturales, atractivos y como si los hubiera leído una persona. Recuerda que la práctica y la experimentación son fundamentales para dominar esta habilidad.

Chirp 3: controles por voz en HD

Las funciones de control por voz están diseñadas específicamente para la síntesis de voz en alta definición. Ten en cuenta que Chirp 3: voces en HD no admite SSML, pero puedes gestionar el control del ritmo, el control de las pausas y las pronunciaciones personalizadas mediante las opciones de control por voz de Chirp 3: voces en HD.

Control del 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 de 0,25 (muy lento) a 2 (muy rápido). Para definir 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 la voz, mientras que los superiores a 1,0 la aceleran. El valor 1.0 indica un ritmo sin ajustar.

Ejemplo de SynthesizeSpeechRequest con control del 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 del 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 la voz Salida
0,5
1.0
2,0

Control de pausa

Puedes insertar pausas en el texto generado por IA insertando etiquetas especiales directamente en el texto mediante 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 en función del contexto, al igual que el habla humana natural varía según el hablante, la ubicación y la estructura de la frase. Las etiquetas de pausa disponibles son [pause short], [pause long] y [pause]. Para ver métodos alternativos para crear pausas sin usar etiquetas de marcado, consulta nuestras directrices sobre cómo escribir peticiones.

Es posible que el modelo de IA ignore ocasionalmente las etiquetas de pausa, sobre todo si se colocan en posiciones poco naturales en el texto. Puedes combinar varias etiquetas de pausa para conseguir silencios más largos, pero un uso excesivo puede provocar 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.",
}

Pausar las muestras de audio de control:

Entrada de etiquetas Salida
"Déjame echar un vistazo. Sí, lo veo".
"Déjame echarle un vistazo. [pausa larga] Sí, lo veo".

Pronunciaciones personalizadas

Puedes especificar pronunciaciones personalizadas usando representaciones fonéticas IPA o X-SAMPA para las palabras del texto de entrada. Asegúrate de usar fonemas adecuados para el idioma en cuestión para que la renderización sea precisa. Puedes consultar más información sobre la sustitución de fonemas en nuestra documentación sobre fonemas.

Ejemplo de SynthesizeSpeechRequest con 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 con 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:

Pronunciaciones personalizadas aplicadas Salida
Ninguno
"dog" pronunciado como ""k{t"

Las frases sustituidas se pueden formatear de cualquier forma, incluso con símbolos. Por ejemplo, en caso de que haya una posible ambigüedad basada en el contexto en la coincidencia de frases (algo habitual en idiomas como el chino y el japonés) o en frases en las que una palabra se pueda pronunciar de diferentes formas, la frase se puede formatear para eliminar la ambigüedad. Por ejemplo, para evitar que se sobrescriban por error otras instancias de la palabra leer en la entrada, la frase "read" se puede formatear como "read1", "[read]" o "(read)" tanto en el texto de entrada como en la frase sobrescrita.

Consulta este ejemplo de aplicación de pronunciaciones personalizadas a una frase en la que la palabra read se pronuncia de dos formas 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",
  }
}
Pronunciaciones personalizadas aplicadas Salida
"read" se ha anulado de dos formas

Además, las pronunciaciones personalizadas se pueden usar con la entrada de marcado, lo que permite usar 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 usadas Salida
Anular la pronunciación con la etiqueta de pausa

Idiomas disponibles para los controles de voz

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

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

  • La función de pronunciaciones personalizadas está disponible 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 habituales y sus respuestas:

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

Puedes consultar nuestras directrices para crear y usar las peticiones y mejorar tu petició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 los idiomas admitidos especificando la voz de forma única. El formato es \<locale\>-\<model\>-\<voice\>. Por ejemplo, para usar la voz de Kore en inglés (Estados Unidos) con el modelo de voces Chirp 3 HD, debes especificar en-US-Chirp3-HD-Kore.

¿Chirp 3: voces en HD admite SSML?

Aunque las voces de Chirp 3: HD no funcionan con SSML, puedes gestionar el control del ritmo, el control de las pausas y las pronunciaciones personalizadas mediante las opciones de control de voz de Chirp 3: HD.