Chirp 3: voces en HD

Probar un cuaderno de Colab Ver cuaderno en GitHub

Las voces Chirp 3 HD de Text-to-Speech representan la última generación de tecnología de conversión de texto a voz. Estas voces, basadas en nuestra última generación de modelos generativos, ofrecen realismo y resonancia emocional.

Para explorar y probar nuestros modelos de voz en la Google Cloud consola, consulta Media Studio.

Probar Chirp 3: voces en alta definición (Vertex AI Studio)

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
asia-northeast1 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 en HD de Chirp 3

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

Realizar una solicitud de síntesis de 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.

Entender el 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 hablar de forma 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 el discurso suene menos robótico. 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 atención al ritmo, al flujo y al 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 indicamos los detalles de 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. El número de huéspedes es 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: compatibilidad con SSML en HD

Las etiquetas del lenguaje de marcas de síntesis de voz (SSML) te permiten controlar mejor cómo se convierte el texto en voz. Con SSML, puedes especificar pronunciaciones, párrafos, controlar e influir en la estructura general del texto de entrada para que el audio suene más natural.

Elementos SSML admitidos

Chirp 3: voces en HD admite un subconjunto de las etiquetas SSML disponibles, que se describen aquí. Las etiquetas que no estén en esta lista se ignorarán durante el proceso de síntesis.

  • <speak>: el elemento raíz del texto SSML.
  • <say-as>: te permite proporcionar sugerencias sobre cómo pronunciar el texto incluido. Ten en cuenta que no se admiten interpret-as="expletive" ni interpret-as="bleep".
  • <p>: representa un párrafo.
  • <s>: representa una frase.
  • <phoneme>: proporciona la pronunciación fonética del texto incluido.
  • <sub>: pronuncia el valor del alias en lugar del texto contenido en el elemento.

Ejemplo de SynthesizeSpeechRequest con SSML:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "ssml": "<speak>Here are <say-as interpret-as=\"characters\">SSML</say-as> samples. I can also substitute phrases, like the <sub alias=\"World Wide Web Consortium\">W3C</sub>. Hi,<phoneme alphabet=\"ipa\" ph=\"ˌmænɪˈtoʊbə\">manitoba<phoneme>! Finally, I can speak a paragraph with two sentences. <p><s>This is sentence one.</s><s>This is sentence two.</s></p></speak>",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Chirp 3: controles de 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. Puedes gestionar el control del ritmo, el control de las pausas y las pronunciaciones personalizadas a través de las opciones de control por voz de Chirp 3: 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 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, la especificarías como en-US-Chirp3-HD-Kore.