La idea 馃挕

Cuando vi que WhatsApp hab铆a publicado su API hace unos meses mi primera idea fue "un bot para transcribir audios", pero esa idea qued贸 en caj贸n durante meses.

Hace un par de semanas una conversaci贸n con Nukeador me hizo recordar con la idea con un extra: res煤menes usando ChatGPT.

Tras unos d铆as trabajando en ello probando diferentes opciones, ten铆a una primera versi贸n, puse un tweet (que est谩 cerca ya de las 100k impresiones) y me fui a dormir.

El d铆a siguiente tras ver multitud de respuestas, RTs y favoritos, me di cuenta que lo mismo esto era m谩s interesante de lo que yo pensaba.


Si buscas como poder usar resumico sin tener que configurar/mantener nada: puedes apuntarte a la lista de espera para la alpha.


Esa primera versi贸n 馃殌

Para este tipo de proyectos que al final son una API respondiendo a un webhook me gusta utilizar AppEngine de Google Cloud, ya que tiene un free tier muy generoso y es super sencillo tenerlo funcionando.

Como AppEngine no tiene muchos recursos en lugar de usar whisper, el modelo que public贸 OpenAI para pasar voz a texto, me decidi por Google Cloud Speech to Text, el servicio de Google Cloud para lo mismo.

La voz a texto

Mire la API de WhatsApp y me descargue un audio mio para probar, pero鈥 resulta que pese a que Google dice que admite ficheros de audio en .ogg, la realidad era que no estaba transcribiendo nada 馃う

Tras darle unas vueltas, me di cuenta que pod铆a utilizar ffmpeg para transformar los ficheros .ogg que me daba WhatsApp a .mp3 de los cuales Google si me sacaba el texto.

La API de WhatsApp

Por suerte cuando sali贸 la API si hab铆a hecho un bot que mandaba mensajes, por lo que parte del proceso configuraci贸n ya lo ten铆a hecho.

Solo necesitaba "orquestar" el proceso:

Y tambi茅n entender los diferentes tipos de mensajes que se pueden enviar, texto, interactivos con botones, plantillas鈥

Toca resumir las transcripciones

Mi primera intenci贸n era usar ChatGPT, pero la API no oficial no esta pensada para ser usada desde un servidor 馃槄.

Tocaba usar GPT-3 directamente y la verdad es que fue la parte m谩s sencilla, la propia web de OpenAI tiene un mont贸n de ejemplos tanto de c贸digo como de "prompt" para pedirle cosas.

El proceso completo queda as铆:

En esta primera iteraci贸n s贸lo se hacen res煤menes de audios que tienen una duraci贸n mayor de 1 minuto.

Los problemas 馃う馃徎鈥嶁檪锔

Las limitaciones de WhatsApp 鉂

Cada mensaje tiene sus limitaciones, por ejemplo, si es texto normal "s贸lo" puedes mandar ~4000 caracteres. Si es un mensaje con botones ese l铆mite baja a 1/4, ~1000 caracteres.

Si quieres hacer interacciones con botones, esta limitado a 3 por mensaje.

Si quieres enviar un header/footer, solo puedes en mensajes interactivos o plantillas.

Responder r谩pido al webhook de WhatsApp 馃弮

Esto es bastante com煤n, si tardas un poco en responder que s铆, el proveedor te lo re-env铆a y en este caso eso implicaba que me acababa mandando 4 o 5 mensajes con cada transcripci贸n.

La soluci贸n, usar la cola de tareas para solo tener que transformar el mensaje y que sea otra parte del sistema quien se encargue de la transcripci贸n, resumen鈥

La versi贸n del repositorio

En el repositorio en el que est谩 publicado el c贸digo de resumico hay varias mejoras sobre lo que he comentado en este art铆culo: la posibilidad de usar whisper (en lugar del servicio de Google), opciones para transcribir, resumir o las dos cosas a la vez cada audio鈥

Pero eso me lo dejo para otro d铆a, aqu铆 est谩 el resumen hasta el d铆a del tweet.


https://github.com/SantiMA10/resumico


Si te ha molado 馃槏 o tienes alguna duda 馃 puedes preguntarme en Twitter o durante un directo en mi canal de Twitch. Tambi茅n puedes visitar mi web 馃實 donde puedes encontrar mis otros posts, formas de contacto y side projects.

Editar en GitHub