Contenido del curso
Interfaces de la API y streaming
Function calling y salidas estructuradas
Reducción de costos con caching y batch
Ingeniería de producción y control de calidad
Proyecto final de consultas sobre documentos
Texto a voz para escuchar un guion
Resumen
Convertir un guion en audio con el endpoint text-to-speech de OpenAI te permite validar el ritmo y la cadencia de tus reels o anuncios antes de publicarlos. Si escribes contenido para redes, esta técnica te sirve para escuchar cómo suena tu texto real y detectar frases que no fluyen al leerlas en voz alta.
A veces un guion se ve perfecto en la pantalla, pero al escucharlo notas que una frase es muy larga o que el tono no encaja. Ahí es donde entra la generación de audio desde texto: transformas la pieza escrita en un archivo reproducible y validas su fluidez de una vez.
Qué es el endpoint text-to-speech y qué necesita
El speech endpoint de OpenAI toma tres inputs claves para funcionar. Con ellos ya puedes generar tu primer audio sin complicaciones [00:26].
- El modelo, que define la calidad y velocidad de la generación.
- El texto, es decir el input que quieres que lea la voz.
- La voz, que determina cómo suena el audio renderizado.
En el ejemplo mínimo de la documentación, el llamado se envuelve con un with as response y dentro se ejecuta client.audio.speech.with_streaming_response.create [00:47]. Ese patrón genera el archivo, lo guarda y luego lo lee para reproducirlo.
¿Qué inputs necesita el endpoint text-to-speech de OpenAI? Necesita tres: el modelo, el texto que se va a leer y la voz. Con esos tres parámetros ya puedes generar un archivo de audio funcional.
Por qué usar el modelo gpt-4o-mini-tts
Para aplicaciones real time e inteligentes, OpenAI recomienda usar gpt-4o-mini-tts, su modelo más nuevo de generación de audio basado en texto [01:32]. La razón es simple: los modelos anteriores como tts-1 y tts-1-hd son más lentos y ofrecen menor calidad.
Además, este modelo acepta controles finos sobre cómo suena la voz [01:44]:
- Acento y entonación.
- Rango emocional e impresiones.
- Velocidad de hablado, tono y susurro.
Estos controles los pasas dentro de las instrucciones del prompt, tal como en el ejemplo donde le piden hablar "muy animado y en tono positivo".
Cómo controlar voz, formato y lenguaje del audio
OpenAI provee 13 opciones de voz para controlar cómo se renderiza el speech desde el texto [01:57]. Cada voz cambia por completo el carácter del audio final.
Un detalle práctico: puedes exportar en formatos específicos. Si necesitas que el audio quede en un formato concreto, lo pasas como parámetro y el endpoint lo genera en ese formato [02:12]. También hay lenguajes soportados que se amplían constantemente, así que conviene mantenerte actualizado con la documentación.
¿Cuántas voces ofrece OpenAI para text-to-speech? Ofrece 13 opciones de voz distintas para controlar cómo se renderiza el audio desde el texto, y también permite crear voces customizadas propias.
Custom voices: tu propia voz en OpenAI
Una de las funciones más interesantes es la posibilidad de agregar custom voices, voces customizadas [02:24]. La documentación explica cómo integrar incluso tu propia voz dentro de las opciones para generar texto a voz. Vale la pena explorar esta opción y ver qué tanto se acerca al resultado que buscas.
Cómo implementar la función text-to-speech en el código
En el cliente de OpenAI se agrega, debajo de la función que transcribe audio, una nueva función que convierte texto a dictado [02:47]. Esta función recibe dos cosas.
- Un texto como parámetro, que es lo que se va a leer.
- Un output path definido como
output.mp3, que asegura que el archivo generado quede en el repositorio.
Dentro se usa el mismo formato de la documentación: se envuelve el llamado con with as response y se ejecuta client.audio.speech.with_streaming_response.create [03:16]. El modelo es gpt-4o-mini-tts, la voz por default es Alloy y el input es el texto recibido por parámetros. Al final se genera el stream_to_file hacia el archivo output.mp3 y se retorna el output path con la ubicación del archivo.
Cómo mostrar el audio en la interfaz
En el archivo de server se agrega un endpoint nuevo con una función llamada Crear audio [03:47]. Esta recibe el texto desde el formulario y usa la función text-to-speech para procesarlo.
Luego el flujo hace tres cosas para mostrar el resultado al usuario:
- Abre el archivo local como audio file y lo decodifica en base64.
- Renderiza un HTML con el título "audio generado" y un player con controles.
- Agrega un botón de volver, porque el resultado se abre en una página nueva.
Después solo falta importar la función textToSpeech dentro de las funciones existentes y agregar al formulario la opción "escuchar guion", justo debajo de la de transcribir nota de voz.
Cómo se comporta la voz por defecto Alloy
Al probar el flujo en el navegador aparece la opción "escuchar un guion" con un botón de generar audio. Usando el mismo guion de la clase anterior, el proceso tardó 28 segundos en devolver el audio en un player [05:22].
La voz generada es de tipo Alloy, que está seteada directamente en el llamado. Y aquí viene lo importante: si no pasas el parámetro voice, el endpoint toma Alloy por defecto porque es opcional [06:05]. Si quieres otra voz, la eliges de la documentación y la agregas.
Con el acento pasa algo parecido. Si no lo especificas en el prompt, el modelo toma un acento neutro o se basa en el contexto del prompt para decidirlo [06:26]. En el ejemplo del evento en Montevideo, el audio salió con acento neutro porque nada en el prompt indicaba que fuera exclusivamente para personas de Uruguay.
Con esto ya integramos texto en bloque y en streaming, imágenes y audio en la misma aplicación. ¿Qué voz te sorprendió más al probarla? Cuéntame en los comentarios cómo te fue generando tu propia voz con OpenAI.