Aviso de cookies
Utilizamos cookies para analizar el tráfico de nuestro sitio web y mejorar su experiencia. Puede aceptar o rechazar las cookies analíticas.
Como freelance, las mejores ideas llegan en el coche o en la obra, justo cuando no se puede teclear. Por eso BillableMe incorporó notas de voz: se dicta una tarea, un recordatorio o una nota, y medio minuto después el texto está ahí, listo para buscar. Así lo resolví.
La app graba con el paquete record en AAC (m4a), solicita el permiso del micrófono y permite elegir de inmediato una categoría, una marca y un título. El archivo se envía como carga multipart a la API de NestJS. Desde ese momento la nota aparece en la lista, con el estado «procesando».
La API guarda el archivo de audio en un volumen compartido, crea un registro en PostgreSQL y pone un trabajo en una cola Bull en Redis. Con eso, la llamada HTTP termina en una fracción de segundo. Un worker recoge el trabajo, llama al servicio de transcripción y, si hay un error, lo reintenta hasta tres veces con un tiempo de espera creciente. El estado pasa de pending a processing y a completed o failed.
La transcripción en sí se hace en un pequeño servicio FastAPI con OpenAI Whisper. Elegí el modelo base: 74 MB, unos 30 segundos por minuto de audio en una CPU, y más que suficiente para notas habladas en neerlandés e inglés. El tamaño del modelo es una variable de entorno, así que puedo pasar a small o medium si el hardware lo permite. ffmpeg va incluido en el contenedor para decodificar m4a.
En cuanto el texto está en la base de datos, la app lo muestra debajo de la nota. Se puede reproducir la grabación a entre 0,75 y 1,5 veces la velocidad, editar la nota, filtrar por categoría o periodo y buscar en las transcripciones.
small es tres veces más lento que base en CPU; para notas habladas cortas, base era más que suficiente.¿Quiere una función de IA similar en su propia app? Póngase en contacto.