Configuración de la entrevista y carga del vídeo
Para crear una interfaz fácil de usar para configurar entrevistas y proporcionar enlaces de video, utilicé Funcionalidad de formularios de Google ColabEsto permite la creación de campos de texto, controles deslizantes, menús desplegables y más. El código está oculto detrás del formulario, lo que lo hace muy accesible para usuarios sin conocimientos técnicos.
Descarga y conversión de audio
Utilicé la biblioteca yt-dlp para descargar solo el audio de un video de YouTube y convertirlo al formato mp3. Es muy fácil de usar y puedes Consulte su documentación aquí.
Transcripción de audio
Para transcribir la reunión, utilicé Susurro de Open AIEs un modelo de código abierto para reconocimiento de voz entrenado con más de 680.000 horas de datos multilingües.
El modelo funciona increíblemente rápido; un clip de audio de una hora tarda alrededor de 6 minutos en transcribirse en una GPU T4 de 16 GB (ofrecida de forma gratuita en Google Colab) y es compatible. 99 idiomas diferentes.
Dado que la privacidad es un requisito para la solución, se descargan los pesos del modelo y toda la inferencia se produce dentro de la instancia de Colab. También agregué un formulario de selección de modelos en el cuaderno para que el usuario pueda elegir diferentes modelos según la precisión que esté buscando.
Identificación de los oradores
La identificación de los hablantes se realiza mediante una técnica llamada Diarización de hablantes. La idea es identificar y segmentar el audio en segmentos de habla distintos, donde cada segmento corresponde a un hablante en particular. Con eso, podemos identificar quién habló y cuándo.
Dado que los videos subidos desde YouTube no tienen metadatos que identifiquen quién está hablando, los oradores se dividirán en Orador 1, Orador 2, etc. Posteriormente, el usuario puede buscar y reemplazar esos nombres en Google Docs para agregar la identificación de los oradores.
Para la diarización utilizaremos un modelo llamado Decodificador de diarización multiescala (MSDD)desarrollado por investigadores de Nvidia. Es un enfoque sofisticado para la diarización de hablantes que aprovecha el análisis multiescala y la ponderación dinámica para lograr alta precisión y flexibilidad.
El modelo es conocido por ser bastante bueno para identificar y categorizar adecuadamente los momentos en los que hablan varios oradores, algo que ocurre con frecuencia durante las entrevistas.
El modelo se puede utilizar a través de Marco de trabajo NVIDIA NeMoMe permitió obtener puntos de control MSDD y ejecutar la diarización directamente en el cuaderno de Colab con solo unas pocas líneas de código.
Al observar los resultados de la Diarización de MSDD, noté que la puntuación era bastante mala, con frases largas y algunas interrupciones como «Mmm» y «sí» se tomaron en cuenta como una interrupción del hablante, lo que dificultaba la lectura del texto.
Entonces, decidí agregar un modelo de puntuación al flujo de trabajo para mejorar la legibilidad del texto transcrito y facilitar el análisis humano. Así que obtuve el modelo de puntuación total de Hugging Faceque es una solución muy precisa y rápida y admite los siguientes idiomas: inglés, alemán, francés, español, búlgaro, italiano, polaco, holandés, checo, portugués, eslovaco y esloveno.
Sincronización de vídeo
De las soluciones industriales que comparé, un requisito importante era que cada frase debía estar vinculada al momento de la entrevista en el que hablaba el orador.
Las transcripciones de Whisper tienen metadatos que indican las marcas de tiempo en que se dijeron las frases; sin embargo, estos metadatos no son muy precisos.
Por lo tanto, utilicé un modelo llamado Wav2Vec2 Para hacer esta comparación de una manera más precisa, la solución es básicamente una red neuronal diseñada para aprender representaciones de audio y realizar la alineación del reconocimiento de voz. El proceso implica encontrar las marcas de tiempo exactas en la señal de audio donde se pronunció cada segmento y alinear el texto en consecuencia.
Con la coincidencia de transcripción <> marca de tiempo realizada correctamente, a través de un código Python simple, creé hipervínculos que apuntan al momento del video donde comienzan a decirse las frases.
El modelo LLM
Este paso del proceso tiene un modelo de lenguaje grande listo para ejecutarse localmente y analizar el texto, lo que brinda información sobre la entrevista. De manera predeterminada, agregué un modelo Gemma 1.1b con un mensaje para resumir el texto. Si los usuarios eligen tener el resumen, aparecerá en una lista con viñetas en la parte superior del documento.
Además, haciendo clic en Mostrar códigoLos usuarios pueden cambiar el mensaje y pedirle al modelo que realice una tarea diferente.
Generación de documentos para etiquetado, resaltados y comentarios.
La última tarea que realiza la solución es generar Google Docs con las transcripciones e hipervínculos a las entrevistas. Esto se hizo a través de la Biblioteca de cliente Python de la API de Google.
Como el producto se ha vuelto increíblemente útil en mi trabajo diario, decidí darle un nombre para poder consultarlo más fácilmente. Lo llamé IPerspectivas GRAMOunión Ohfuente de pluma yobueno, o lo tengo.
Cuando se utiliza la solución por primera vez, se requiere una configuración inicial. Permítame guiarlo a través de un ejemplo del mundo real para ayudarlo a comenzar.
Abra el cuaderno iGot e instale las bibliotecas necesarias
Hacer clic en Este enlace Para abrir el cuaderno y ejecutar la primera celda para instalar las bibliotecas necesarias, tardará unos 5 minutos.
Si aparece un mensaje que te pide que reinicies la notebook, simplemente cancélala. No es necesario.
Si todo funciona como se espera, aparecerá el mensaje «¡Todas las bibliotecas instaladas!».
Obtención del token de acceso de usuario y del acceso al modelo de Hugging
(Este paso es necesario solo la primera vez que se ejecuta el cuaderno)
Para ejecutar los modelos Gemma y punctuate-all, descargaremos los pesos de Hugging Face. Para ello, debe solicitar un token de usuario y acceso al modelo.
Para ello, deberás crear una cuenta de Hugging Face y seguir estos pasos para obtener un token con permisos de lectura.
Una vez que tengas el token, cópialo y vuelve al cuaderno de laboratorio. Ve a la pestaña de secretos y haz clic en «Agregar nuevo secreto».
Nombra tu token como Token de alta frecuencia y más allá de la llave que obtuviste de Hugging Face.
A continuación, haga clic en Este enlace para abrir el modelo Gemma en Hugging Face. Luego, haz clic en “Aceptar licencia” para acceder al modelo.
Enviando la entrevista
Para enviar una entrevista a iGot, es necesario subirla previamente como un vídeo no listado en YouTube. Para este tutorial, obtuve un fragmento de la entrevista de Andrej Karpathy con Lex Fridman y lo subí a mi cuenta. Es parte de la conversación en la que Andrej dio algunos consejos para principiantes en aprendizaje automático.
Luego, debes obtener la URL del video y pegarla en el URL del vídeo campo de la Selección de entrevistas celda del cuaderno, definir un nombre para la misma e indicar el idioma que se habla en el vídeo.
Una vez que ejecutes la celda, recibirás un mensaje indicando que se generó un archivo de audio.
Selección y ejecución del modelo
En la siguiente celda, puede seleccionar el tamaño del modelo Whisper que desea utilizar para la transcripción. Cuanto más grande sea el modelo, mayor será la precisión de la transcripción.
De forma predeterminada, se selecciona el modelo más grande. Elija su modelo y ejecute la celda.
Luego, ejecute la celda de ejecución de modelos para ejecutar el pipeline de modelos que se mostró en la sección anterior. Si todo sale como se espera, debería recibir el mensaje «¡Puntuación realizada!» al final.
Si aparece un mensaje que te pide acceso al token de la cara abrazada, concédele acceso.
Configurar la salida de la transcripción
El último paso es guardar la transcripción en un archivo de Google Docs. Para ello, debes especificar la ruta del archivo, proporcionar el nombre de la entrevista e indicar si quieres que Gemma resuma la reunión.
Al ejecutar la celda por primera vez, es posible que aparezca un mensaje que le solicite acceso a su Google Drive. Haga clic en permitir.
Luego, dale a Colab acceso completo a tu espacio de trabajo de Google Drive.
Si todo sale como se espera, verás un enlace al archivo de Google Docs al final. Haz clic en él y tendrás acceso a la transcripción de tu entrevista.
Recopilación de información a partir del documento generado
El documento final tendrá las transcripciones, con cada frase vinculada al momento correspondiente en el video donde comienza. Dado que YouTube no proporciona metadatos de los oradores, recomiendo usar la herramienta de búsqueda y reemplazo de Google Docs para sustituir “Orador 0”, “Orador 1” y así sucesivamente con los nombres reales de los oradores.
Con esto, puedes trabajar en destacados, notas, reacciones, etc. Tal como lo imaginamos al principio:
La herramienta se encuentra en su primera versión y tengo pensado desarrollarla para convertirla en una solución más fácil de usar. Tal vez alojar un sitio web para que los usuarios no tengan que interactuar directamente con el cuaderno o crear un complemento para usarlo en Google Meets y Zoom.
Mi objetivo principal con este proyecto fue crear una herramienta de transcripción de reuniones de alta calidad que pueda ser beneficiosa para otros y al mismo tiempo demostrar cómo las herramientas de código abierto disponibles pueden igualar las capacidades de las soluciones comerciales.
¡Espero que te resulte útil! No dudes en Contáctame en LinkedIn Si tienes algún comentario o estás interesado en colaborar en la evolución de iGot 🙂