Post

Progreso JdeRobot - Semana 3 (21/09 - 25/09)

Progreso JdeRobot - Semana 3 (21/09 - 25/09)

Esta semana nos encargamos de extender la funcionalidad del programa añadiendo reconocimiento de audio y transcripción a texto con Whisper.

1. Whisper y envío de datos

He añadido Whisper al servidor para que cuando lleguen los datos binarios por el WebSocket, lo transcriba a texto y se pueda ver en consola y en la web. Por ahora he hecho pruebas con el modelo small, para que detecte correctamente el audio hay que hablar alto y claro, ya que a veces la transcripción falla si detecta silencio.

Luego, probé a hacer un envío de datos continuo, es decir, enviar los datos poco a poco e intentar transcribir el texto en tiempo real. Esto me produjo algunos problemas ya que Whisper utiliza ffmpeg por debajo, y esta librería necesita leer del encabezado de los datos qué tipo de archivo está leyendo. Cuando se envían los datos, al parecer, con MediaRecorder, solo el primer envío de datos contiene ese encabezado, por lo que cuando llegan los siguientes, Whisper da error porque no sabe leer el dato.

2. Silero y AudioContext

Respecto a problemas en el reconocimiento del audio, me recomendaron usar Silero, una librería que ayuda a detectar silencios para eliminar posible ruido que pueda afectar a la transcripción. Hice algunas pruebas con archivos de audio y detecta correctamente los timestamps en el que hay voz.

Pero Silero no es compatible con los datos binarios de MediaRecorder que llegan a través del WebSocket. MediaRecorder devuelve audio comprimido codificado en un formato, por ejemplo webm/opus, pero Silero solo acepta PCM, que básicamente es un archivo crudo con todas las ondas de audio. Por lo que probaremos a captar el audio del navegador mediante AudioContext, que puede devolver directamente las ondas de audio en crudo en tiempo real.


Planes para la Siguiente Semana

  • Explorar e incorporar Audio-Context al programa.
  • Sustituir Whisper por Faster-Whisper, modelo más ligero.
This post is licensed under CC BY 4.0 by the author.