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
Voz a texto para capturar ideas
Resumen
Muchas ideas no nacen escritas. Aparecen mientras caminas, sales de una reunión o después de un evento. Por eso vale la pena aprender a transcribir audio a texto con la API de OpenAI y así alimentar tu Content Studio con notas de voz. Esta guía es para quienes construyen aplicaciones con Python y quieren convertir grabaciones en el punto de partida de una campaña de contenido.
Qué endpoint usa OpenAI para transcribir audio
Antes de tocar el código, conviene leer la documentación oficial. OpenAI ofrece un endpoint específico para convertir voz en texto: audio.transcriptions.create. Es la puerta de entrada para pasar de un archivo de sonido a texto plano que puedes procesar después.
El ejemplo mínimo que aparece en la documentación está en Python, que es lo que venimos usando, pero también puedes cambiarlo a Java, TypeScript, Go, Ruby o ejecutarlo vía CLI [00:52]. Solo necesitas importar el SDK de OpenAI, instanciarlo con un nombre como client y llamar al endpoint con dos parámetros mínimos.
¿Qué endpoint de OpenAI transcribe audio a texto? Es
client.audio.transcriptions.create. Recibe dos parámetros mínimos: el modelo (gpt-4o-transcribe) y el archivo de audio. Devuelve un objeto con el texto transcrito y el uso.
Qué parámetros recibe y qué devuelve
La llamada al endpoint es directa. Estos son los datos clave que necesitas entender:
- El modelo que se usa es
gpt-4o-transcribe, la recomendación actual de OpenAI para transcripciones. - El archivo es el audio que quieres convertir, por ejemplo un
speech.mp3. - La respuesta llega como un objeto con dos campos:
textyusage.
El campo text trae todo lo que se dijo en el audio ya convertido a texto. El campo usage aparece en casi todas las respuestas de la API y sirve para saber cuánto cuesta cada llamado [01:52]. Con esos dos datos puedes controlar tanto el resultado como el gasto.
Cómo crear la función para transcribir un archivo en Python
Una vez entendida la documentación, migramos el ejemplo a nuestro propio cliente. Vamos al archivo openai_client.py y, después de la función de generar contenido con stream, agregamos una nueva función para transcribir audio [02:35].
La lógica es sencilla: la función recibe el path donde está ubicado el archivo como una string y devuelve otra string con el texto transcrito.
- Recibe como parámetro el path del archivo de audio.
- Abre ese archivo y llama al endpoint
client.audio.transcriptions.create. - Pasa los dos parámetros mínimos: el modelo
gpt-4o-transcribey el audio file. - Retorna
transcription.text, que es el texto limpio de lo que dice el audio.
Con esa función lista, ya podemos guardar y movernos al servidor para exponerla como un endpoint real.
Cómo exponer la transcripción en un endpoint del servidor
En el archivo del server, debajo del stream_content de la clase anterior, agregamos la función transcribe_audio [03:45]. Aquí es donde el flujo se vuelve interesante, porque hay que manejar el archivo que sube el usuario desde el formulario.
La función es asíncrona porque primero procesa todo el audio antes de transcribirlo. Recibe un archivo de tipo upload file del formulario, extrae los audio bytes esperando la lectura y guarda el audio en un archivo temporal para poder trabajar con él.
Para que todo funcione, necesitas tres importaciones en la parte superior del archivo:
- La función
transcribe_audio_fileque acabas de crear. - El acceso al sistema operativo, para escribir y leer el archivo temporal del audio.
Tempfile, que permite trabajar con archivos temporales.
Después de guardar el audio en la ruta temporal, se convierte en un audio file y se pasa a la función de transcripción para obtener el texto.
¿Por qué se usa un archivo temporal al transcribir? Porque el audio llega desde el formulario como bytes en memoria. Guardarlo en un archivo temporal permite abrirlo y enviarlo al endpoint de OpenAI como un archivo real.
Cómo conectar la interfaz para subir una nota de voz
El último paso vive en el endpoint de home. Ahí agregamos un nuevo formulario para transcribir la nota de voz y cerrar el ciclo entre el usuario y la API.
Este formulario tiene características concretas que lo hacen funcionar con archivos:
- Es un formulario de método post con el action apuntando al endpoint creado.
- Usa
enctypede tipomultipart/form-data, necesario para leer un archivo. - Incluye un input de tipo archivo, con nombre
file, que acepta cualquier formato de audio. - Cierra con un botón submit que dice transcribir audio.
Al ejecutar el servidor y refrescar el navegador, aparece el formulario de transcribir nota de voz [06:20]. Subiendo un archivo en formato WAV y haciendo clic en transcribir audio, la respuesta llega dentro de un objeto text con la transcripción completa.
En el ejemplo, el audio sobre organizar un evento en Montevideo para juntar a personas que crean software con inteligencia artificial se convierte palabra por palabra en texto [07:00]. Y aquí viene lo interesante: esa nota de voz ya es el punto de partida para una campaña de contenido.
¿En qué formatos de audio funciona esta transcripción? El input del formulario acepta cualquier formato de audio, como MP3 o WAV, porque está configurado para recibir audio genérico.
Como desafío, intenta transformar la interfaz para que no reciba un archivo pregrabado, sino que grabe en vivo y transcriba lo que digas en ese momento. ¿Te animas a probarlo y contarnos cómo te fue?