Implementación de Whisper para Reconocimiento de Voz

Whisper es un sistema avanzado de Reconocimiento Automático del Habla (ASR) entrenado con una vasta cantidad de datos multilingües y multitarea, recolectados de la web. Su robustez ante variaciones en acentos, ruido de fondo y terminología especializada se debe a este extenso y diverso conjunto de entrenamiento. Además, el modelo es capaz de transcribir audio en múltiples idiomas y traducir estas transcripciones al inglés.

El núcleo de Whisper reside en una arquitectura Transformer de tipo Encoder-Decoder:

  • Encoder: Procesa el espectrograma Mel del audio.
  • Decoder: Genera tokens de texto de manera autorregresiva.

En esencia, se trata de un modelo Transformer Seq2Seq adaptado para el procesamiento de voz.

Flujo de Trabajo de Whisper

  1. Entrada: El audio se convierte en un espectrograma Mel.
  2. Encoder: Transforma la representación del espectrograma en características de alta dimensión.
  3. Decoder:
    • Recibe una secuencia de tokens especiales (Prompt) que definen la tarea.
    • Determina la acción a realizar (transcripción, traducción, etc.).

Estos tokens controlan funcionalidades como:

  • Identificación del idioma (ej: <|es|> para español).
  • Tipo de tarea (ej: <|transcribe|> para transcripción o <|translate|> para traducción).
  • Indicación para la generación de marcas de tiempo.

Un único modelo, mediante el uso de estos tokens, puede realizar diversas tareas como:

  • Reconocimiento de voz.
  • Traducción de voz.
  • Identificación de idioma.
  • Alineación temporal.

Configuración del Entorno para Whisper

Instalación de Dependencias

Se recomienda crear un entorno virtual para gestionar las dependencias:


# Crear entorno
conda create -n whisper_env python=3.9
conda activate whisper_env

# Instalar ffmpeg (necesario para procesamiento de audio)
conda install ffmpeg -c conda-forge

# Instalar PyTorch (ajustar según la versión de CUDA de tu GPU)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# Nota: Si la instalación es lenta, considera usar repositorios alternativos como los de Aliyun o Tsinghua.

Instalación de Whisper

Puedes instalar Whisper directamente desde PyPI o clonando el repositorio de GitHub. Elige una de las siguientes opciones:


# Opción 1: Desde PyPI (recomendado para uso general)
pip install -U openai-whisper

# Opción 2: Desde GitHub (para la versión más reciente o desarrollo)
pip install git+https://github.com/openai/whisper.git

# Si ya tienes Whisper instalado y deseas actualizar a la última versión:
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

Selección de Modelos de Whisper

OpenAI proporciona varios modelos preentrenados (tiny, base, small, medium, large, y turbo). La elección depende de tus necesidades de precisión y los recursos de VRAM disponibles. El modelo turbo está optimizado para velocidad pero no para traducción.

Uso de Whisper desde la Línea de Comandos

Whisper se puede ejecutar fácilmente desde la terminal para transcribir o traducir archivos de audio.

Ejemplos de Uso


# Transcribir un archivo de audio (por defecto, detecta el idioma y transcribe a inglés si es necesario)
whisper audio_espanol.wav --model base

# Transcribir un archivo especificando el idioma de origen
whisper audio_japones.mp3 --model small --language Japanese

# Transcribir y traducir a inglés
whisper audio_japones.mp3 --model medium --language Japanese --task translate

# Para obtener ayuda y ver todas las opciones de configuración:
whisper --help

Nota Importante: El modelo turbo es ideal para transcripción rápida en inglés, pero no está entrenado para la tarea de traducción. Para tareas de traducción, utiliza los modelos multilingües (tiny, base, small, medium, large).

Integración de Whisper en Python

Whisper puede ser utilizado programáticamente dentro de aplicaciones Python.

Ejemplo de Transcripción en Python


import whisper

# Cargar un modelo preentrenado (ej: 'small')
audio_model = whisper.load_model("small")

# Realizar la transcripción de un archivo de audio
transcription_result = audio_model.transcribe("ruta/al/archivo.mp3")

# Imprimir el texto transcrito
print(transcription_result["text"])

Ejemplo de Transcripción y Traducción en Python


import whisper

# Cargar un modelo preentrenado
audio_model = whisper.load_model("medium")

# Transcribir y traducir a inglés
translation_result = audio_model.transcribe("ruta/al/archivo_frances.wav", language="French", task="translate")

# Imprimir el texto traducido
print(translation_result["text"])

Resultados de Ejemplo (Francés a Inglés)

Al ejecutar el script anterior con un archivo de audio en francés, se obtendría una salida similar a:


[00:00.000 --> 00:04.560] Bonjour, je suis heureux de pouvoir vous proposer ce service vocal.
[00:04.560 --> 00:10.200] Si vous choisissez votre voix préférée, nous commencerons ensemble une belle production vocale.

La ejecución de estos comandos o scripts también genera archivos que contienen el contenido transcrito o traducido.

Etiquetas: Whisper ASR reconocimiento de voz Deep Learning transformer

Publicado el 9-22 13:47