Tutorial de OpenAI Whisper: Whisper – Transcripción y diarización (identificación del hablante)

¿Qué es Susurro?

Whisper es un sistema de reconocimiento de voz de última generación de OpenAI que ha sido entrenado en 680 000 horas de datos supervisados ​​multilingües y multitarea recopilados de la web. Este conjunto de datos grande y diverso conduce a una mayor solidez de los acentos, el ruido de fondo y el lenguaje técnico. Además, permite la transcripción en varios idiomas, así como la traducción de esos idiomas al inglés. OpenAI lanzó los modelos y el código para que sirvan como base para crear aplicaciones útiles que aprovechen el reconocimiento de voz.

Sin embargo, una gran desventaja de Whisper es que no puede decirle quién está hablando en una conversación. Eso es un problema cuando se analizan conversaciones. Aquí es donde entra en juego la diarización. La diarización es el proceso de identificar quién está hablando en una conversación.

En este tutorial, aprenderá cómo identificar a los hablantes y luego relacionarlos con las transcripciones de Whisper. Usaremos pyannote-audio para lograr esto. ¡Empecemos!

Preparando el audio

Primero, necesitamos preparar el archivo de audio. Usaremos los primeros 20 minutos del podcast de Lex Fridmans con Yann LeCun. Para descargar el video y extraer el audio, usaremos yt-dlp paquete.

También te puede interesarTutorial de OpenAI Whisper: Cómo usar OpenAI Whisper

También necesitaremos ffmpeg instalado

Ahora podemos hacer la descarga real y la extracción de audio a través de la línea de comandos.

Ahora tenemos el download.wav archivo en nuestro directorio de trabajo. Recortemos los primeros 20 minutos del audio. Podemos usar el paquete pydub para esto con solo unas pocas líneas de código.

audio.wav son ahora los primeros 20 minutos del archivo de audio.

También te puede interesarTutorial de OpenAI Whisper: Cómo usar Whisper para transcribir un video de YouTube

Diarización de Pyannote

pyannote.audio es un conjunto de herramientas de código abierto escrito en Python para la diarización del hablante. Basado en el marco de aprendizaje automático PyTorch, proporciona un conjunto de bloques de construcción neuronales de extremo a extremo entrenables que se pueden combinar y optimizar conjuntamente para construir canalizaciones de diarización de locutores. pyannote.audio también viene con modelos y canalizaciones previamente entrenados que cubren una amplia gama de dominios para la detección de actividad de voz, segmentación de altavoces, detección de voz superpuesta, integración de altavoces que alcanza un rendimiento de vanguardia para la mayoría de ellos.

Instalando Pyannote y ejecutándolo en el audio del video para generar las diarizaciones.

Vamos a imprimir esto para ver cómo se ve.

La salida:

También te puede interesarTutorial de OpenAI Whisper: creación de la API de OpenAI Whisper en un contenedor Docker

Esto ya se ve bastante bien, pero vamos a limpiar un poco los datos:

Ahora tenemos los datos de diarización en una lista. Los primeros dos números son el tiempo de inicio y finalización del segmento del orador en milisegundos. El tercer número es un booleano que nos dice si el hablante es Lex o no.

Preparando archivo de audio de la diarización

A continuación, adjuntaremos los segmentos de audio según la diarización, con un espaciador como delimitador.

Transcripción con susurro

A continuación, usaremos Whisper para transcribir los diferentes segmentos del archivo de audio. Importante: hay un conflicto de versión con pyannote.audio que genera un error. Nuestra solución es ejecutar primero Pyannote y luego susurrar. Puede ignorar el error con seguridad.

También te puede interesarGuía de indicaciones de Stable Diffusion y OpenAI Whisper: Generación de imágenes basadas en el habla – Whisper & Stable Diffusion

Instalación de Open AI Whisper.

Ejecutar Open AI susurro en el archivo de audio preparado. Escribe la transcripción en un archivo. Puede ajustar el tamaño del modelo a sus necesidades. Puede encontrar todos los modelos en la tarjeta de modelos en Github.

Para trabajar con archivos .vtt, necesitamos instalar la biblioteca webvtt-py.

Echemos un vistazo a los datos:

Coincidencia de las transcripciones y las diarizaciones

A continuación, uniremos cada línea de transcripción con algunas diarizaciones y mostraremos todo generando un archivo HTML. Para obtener la sincronización correcta, debemos ocuparnos de las partes del audio original que no estaban en el segmento de diarización. Agregamos un nuevo div para cada segmento en nuestro audio.

Puede echar un vistazo a los resultados aquí o ver el código completo como cuaderno

Gracias para leer. Si disfrutó de este tutorial, puede encontrar más y continuar leyendo en nuestra página de tutoriales: Fabian Stehle, científico de datos junior en New Native

Scroll al inicio