
Tabla de contenidos
- 1 ¿Qué es Whisper?
- 2 Modelos disponibles en Whisper
- 3 Uso de Whisper en instalación local o en línea
- 4 Whisper vs VOSK
- 5 Instalación local de Whisper
- 6 Uso de Whisper en la CLI de Linux (Interfaz de Línea de Comandos)
- 7 Sugerir a Whisper la temática del audio a procesar
- 8 La traduducción a otros idiomas con Whisper
- 9 Archivos generados por Whisper en la transcripción
- 10 Referencias y recursos
¿Qué es Whisper?
Whisper de OpenAI es un modelo de PLN (Procesamiento de lenguaje natural) y también de ASR (Reconocimiento de voz), que transforma voz hablada en texto escrito, liberado bajo licencia MIT (100 % open source y gratuita), hecho en lenguaje Python.
Whisper no es un LLM (Large Language Models), como p. ej. ChatGPT, debido a que no genera texto libre a partir de texto. Sin embargo, se puede usar junto con LLMs, para tareas de análisis, resumen o traducción de texto manuscrito.
Whisper es actualmente, con toda probabilidad, la mejor herramienta libre/Open source para transcribir voz a texto. Una herramienta de alta precisión disponible para multitud de idiomas, incluyendo el español, y para multitud de formatos de audio, incluyendo MP3, WAV, M4A, …
Existe un modelo local, fácilmente instalable y usable desde línea de comandos, que no necesita Internet para funcionar, con las consiguientes ventajas que implica, como la privacidad y seguridad de los datos tratados con la herramienta.
Whisper Soporta transcripción y traducción.
Modelos disponibles en Whisper
- tiny ~39 MB. Baja. Muy rápida
- base ~74 MB. Moderada. Muy rápida
- small ~244 MB. Buena. Rápida
- medium ~769 MB. Muy buena. Lenta
- large ~1550 MB. Excelente. Más lenta
Whisper no es infalible. Si la calidad de la transcripción es importante para usted, no escoja tiny ni base.
Uso de Whisper en instalación local o en línea
Whisper en una instalación local es 100% libre, gratuito y sin límites, aunque requiere de cierta potencia de procesamiento.
Sin embargo, en línea (Internet) es algo diferente, ya que no existe Una plataforma oficial de OpenAI para usar Whisper en línea y, por tanto, hay que usar servicios de terceros. Estos suelen tener límites de duración, restricciones o publicidad. En muchos caso, se ofrece una versión gratuita y otra de pago.
Como conclusión, si su uso de Whisper no es algo muy puntual, le recomendamos que instale la versión de escritorio, disponible para Linux, Windows y macOS.
Whisper vs VOSK
VOSK es otro ASR lilre de gran calidad. Menos preciso aunque más ligero que Whisper, corre en dispositivos móviles y Raspberry Pi.
Whisper es superior a VOSK en cuanto a precisión en la transcripción, aunque los modelos de Whisper son a menudo más grandes, más pesados y más exigentes en recursos de computación. En contrapartida, VOSK es ligero y funciona en dispositivos limitados, como una Raspberry Pi y teléfonos móviles.
Whisper ha sido entrenado con una gran cantidad de datos, y lo que le otorga una muy alta precisión en la transcripción, especialmente en condiciones no óptimas, como reconociendo acentos, con ruido de fondo, etc.
En resumen, Whisper es adecuado para proyectos donde la capacidad de cómputo no es una limitación.
Por otra parte, tanto whisper como VOSK tienen soporte completo del idioma español, y son relativamente fáciles de utilizar e integrar en otras aplicaciones, cualidades que probablemente los convierten en las dos herramientas libres que reúnen las mejores cualidades.
Instalación local de Whisper
Requisitos de instalación
Debe tener instalado en su equipo:
- Python ≥ 3.7
- ffmpeg instalado
Instalación
Es muy recomendable instalar Whisper en un entorno virtual Python, para evitar conflictos con otros paquetes del sistema.
Instale dependencias (si no las tiene):
sudo apt install python3-venv ffmpeg
Cree y active un entorno virtual Python:
$ python3 -m venv ~/whisper-env
$ source ~/whisper-env/bin/activate
instale Git, para poder clonar el repositorio. Ejecute en terminal de comandos:
$ sudo apt update
$ sudo apt install git
Instale Whisper:
$ pip install git+https://github.com/openai/whisper.git
Uso de Whisper en la CLI de Linux (Interfaz de Línea de Comandos)
Si instaló Whisper en un entorno virtual Python, no olvide activar primero dicho entorno virtual, en el terminal de comandos:
source ruta_al_entorno_virtual/bin/activate
Un comando simple para una transcripción de voz a texto es el siguiente:
whisper archivo_audio.mp3 --language Spanish --model medium
El siguiente comando realiza una traducción:
whisper archivo_audio.mp3 --task translate --model medium
Observe en este último comando: en las traducciones, Whisper no necesita el parámetro –language.
Por otra parte, whisper siempre traduce a idioma inglés. No obstante, exiten otros métodos para realizar traducciones a otros idiomas. Vea más detalles per en el apartado La traduducción a otros idiomas con Whisper.
Puede sustituir ‘medium’ por cualquier otro de los modelos disponibles en Whisper, indicados antes en este mismo documento y, por supuesto, sustituya Spanish por el idioma real del audio, si no es ese. De cualquier forma, es importante y encarecidamente recomendable que le indique a Wishper el idioma original del audio, y también es buena idea que le sugiera la temática de este, lo cual está explicado en el siguiente título.
Además de mostrar la transcripción en el terminal de comandos, Whisper creará archivos de texto, en el mismo directorio en el que se encuentre el audio, si no se especifica otro. Para indicar otro directorio de salida, use el parámetro –output_dir.
Sugerir a Whisper la temática del audio a procesar
Como nada es perfecto, y puede que el audio tampoco lo sea, es posible o probable que la transcripción contenga numerosos errores, con palabras sustituidas por otras que suenan parecidas.
Pero ¿Y si pudiéramos decirle a Whisper la temática/semántica de la que trata el audio? Entonces podríamos hacer que Whisper, en contextos de duda, escoja palabras temáticamente relacionadas, reduciendo significativamente el número de errores cometidos. Por ejemplo, en un debate sobre ríos e hidrología, Whisper escribiría ‘decantadores’ en lugar de ‘de cantadores’.
Así que en el siguiente comando, le pasamos el contexto con el parámetro –initial_prompt:
whisper audio_entrada.mp3 \
--language es \
--model medium \
--initial_prompt "Debate técnico sobre el río Ebro, hidrología, depuración de aguas, decantadores, infraestructuras hidráulicas y medio ambiente"
Optimización / Mejora práctica / Ajuste fino
Agregue al texto de –initial_prompt keywords que ha detectado que Whisper confunde con frecuencia. No solo palabras simples, sino sobre todo términos técnicos, nombres propios completos y cualquier sintagma nominal como ‘río Ebro’, ‘medio ambiente’, …
La traduducción a otros idiomas con Whisper
Whisper solo traduce audio a inglés. Si desea traducir a otro idioma necesitará pasos adicionales:
- Realice una transcripción normal, al idoma original.
- Traduzca el texto resultante con un LLM, o con un motor de traducción, como Marian (licencia MIT).
Usando la CLI de Linux, esto requiere dos pasos.
Utilizando un script en Python, aunque el flujo es el mimso, puede traducir a cualquier idioma en un solo paso, debido a que Whisper le permite encadenar herramientas.
Archivos generados por Whisper en la transcripción
Para un supuesto audio con el nombre ‘archivo_audio.mp3’, Whisper generaría los documentos:
- archivo_audio.txt. La transcripción completa en texto plano
- archivo_audio.vtt. Subtítulos en formato WebVTT. Contiene tiempos de inicio y finalización para cada fragmento
- archivo_audio.srt. Subtítulos en formato SubRip (tipo YouTube)
- archivo_audio.json. Transcripción estructurada con marcas de tiempo
- archivo_audio.tsv. Archivo de texto con valores separados por tabulaciones («Tab-Separated Values»), que contiene información estructurada sobre la transcripción, con datos sobre tiempos (en segundos) de inicio y finalización. Estos documentos pueden abrirse con un LibreOffice Calc, por ejemplo.
De entre los descritos, los documentos con tiempos son muy útiles para hacer una alineación precisa de texto y audio (por ejemplo, para subtitulado).
