Cómo instalar e implementar Whisper, la mejor alternativa de código abierto a Google Speech-To-Text

OpenAI Whisper es la mejor alternativa de código abierto a Google speech-to-text a día de hoy. Funciona de forma nativa en 100 idiomas (detectados automáticamente), añade puntuación, e incluso puede traducir el resultado si es necesario. En este artículo le mostraremos cómo instalar Whisper y desplegarlo en producción.

Reconocimiento automático del habla

Google Speech-To-Text

La API de reconocimiento automático de voz (speech-to-text) de Google es muy popular. Esta API es capaz de transcribir archivos de audio y vídeo en 125 idiomas, y propone modelos de IA específicos para la transcripción de llamadas telefónicas, la transcripción médica, etc.

Esta API también tiene buenas características adicionales como el filtrado de contenidos, la puntuación automática (sólo en beta por el momento), y la diarización de hablantes (también en beta).

Por último, su API puede instalarse en las instalaciones. Pero es importante tener en cuenta que el modelo de IA on-prem seguirá enviando datos a Google para informar sobre el uso de la API, lo que podría ser una preocupación desde el punto de vista de la privacidad.

El precio de Google es básicamente de 0,006 dólares / 15 segundos para la conversión básica de voz a texto, y de 0,009 dólares / 15 segundos para casos de uso específicos como la transcripción de vídeos o la transcripción telefónica.

Supongamos que quiere analizar automáticamente las llamadas telefónicas realizadas a su equipo de asistencia (para realizar posteriormente un análisis de sentimientos o una extracción de entidades sobre ellas, por ejemplo). Si tiene 5 agentes de asistencia que pasan 4 horas al día al teléfono con los clientes, la API de voz a texto de Google le costará 1.400 dólares al mes.

Si te preocupan los costes o la privacidad, quizá quieras cambiar a una alternativa de código abierto: OpenAI Whisper.

Whisper: La mejor alternativa a Google Speech-To-Text

Whisper es un modelo de IA de código abierto que acaba de ser lanzado por OpenAI.

OpenAI tiene un historial de proyectos de IA de código abierto. Por ejemplo, el GPT-2 fue desarrollado por OpenAI hace un par de años. En su momento fue el mejor modelo de procesamiento generativo del lenguaje natural jamás creado, y preparó el camino para modelos mucho más avanzados como GPT-3, GPT-J, OPT, Bloom... Recientemente, también han lanzado un buen marco de programación CUDA llamado Triton.

Sin embargo, no todos los modelos de OpenAI son de código abierto. Sus dos modelos más interesantes: GPT-3 y DALL-E, siguen siendo modelos privados que sólo pueden utilizarse a través de su API de pago.

Whisper está arrasando en el ecosistema de la conversión de voz a texto: puede detectar automáticamente el idioma de entrada, transcribir el texto en unos 100 idiomas, puntuar automáticamente el resultado e incluso traducirlo si es necesario. La precisión es muy buena, y puede aplicar este modelo a cualquier tipo de entrada (audio, vídeo, llamadas telefónicas, discusiones médicas, etc.).

Y, por supuesto, otra gran ventaja de Whisper es que puedes desplegarlo tú mismo en tus propios servidores, lo que es genial desde el punto de vista de la privacidad.

Whisper es gratuito, por supuesto, pero si quieres instalarlo por ti mismo tendrás que dedicarle algo de tiempo humano, y pagar por los servidores y GPUs subyacentes. Si prefieres beneficiarte de una versión gestionada, puedes utilizar una API como NLP Cloud: ¡prueba Whisper gratis en NLP Cloud ahora!.

Instalación y despliegue de OpenAI Whisper

Tienes dos opciones si quieres instalar y desplegar Whisper por el momento. La primera es utilizar la librería Python de Whisper de OpenAI, y la segunda es utilizar la implementación de Hugging Face Transformers de Whisper. Vamos a explorar ambas soluciones.

Uso de la librería whisper Python

Esta solución es la más sencilla. Básicamente hay que seguir las instrucciones de OpenAI en el repositorio Github del proyecto Whisper.

First install the whisper Python lib:

pip install git+https://github.com/openai/whisper.git

Then install ffmpeg on your system if it is not the case yet:

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

Several flavors of Whisper are available: tiny, base, small, medium, and large. Of course the bigger the better, so if you are looking for state of the art results we recommend the large version. Here is a very simply Python script that opens an mp3 audio file stored on your disk, automatically detects the input language, and transcribes it:

import whisper

model = whisper.load_model("large")
result = model.transcribe("audio.mp3")
print(result["text"])

Simple isn't it?

Utilización de la implementación de la Cara de Abrazo

In order to use Hugging Face's implementation of Whisper you will first need to install HF Transfomers, librosa, and Pytorch:

pip install transformers
pip install librosa
pip install torch

You also need to install ffmpeg (see above).

Now, here is a Python script that does transcription in English:

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import librosa

speech, _ = librosa.load("audio.mp3")

processor = WhisperProcessor.from_pretrained("openai/whisper-large")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large")

model.config.forced_decoder_ids = processor.get_decoder_prompt_ids(language = "en", task = "transcribe")
input_features = processor(speech, return_tensors="pt").input_features 
predicted_ids = model.generate(input_features)
transcription = processor.batch_decode(predicted_ids)

print(processor.batch_decode(predicted_ids, skip_special_tokens = True))

There are 2 limitations with this Hugging Face implementation. First you need to manually set the source language (no automatic input language detection is implemented yet). And secondly no automatic chunking is applied, which means that you cannot transcribe content that is larger than 30 seconds...

Maybe these limitations will be solved in future releases?

A nice thing though is that there is a Tensorflow implementation available too, which means that you can use XLA compilation and get much faster response times.

Requisitos de hardware

Como hemos visto anteriormente, Whisper es bastante fácil de instalar. Sin embargo, requiere un hardware avanzado. Se recomienda una GPU si se quiere utilizar la versión grande del modelo.

Si utilizas la librería whisper Python (ver arriba) necesitarás unos 10GB de RAM y 11GB de VRAM. Esto significa que en la práctica necesitarás una GPU de 16GB como mínimo. Podría ser una NVIDIA Tesla T4 por ejemplo, o una NVIDIA A10.

En un Tesla T4, transcribirá 30 segundos de audio en unos 6 segundos.

Consideraciones sobre el rendimiento

Si quieres mejorar el rendimiento por defecto mencionado anteriormente, aquí tienes varias estrategias que puedes explorar:

Conclusión

OpenAI Whisper es una revolución en el mundo del habla-texto. Por primera vez, cualquiera puede acceder fácilmente a un reconocimiento automático del habla de última generación gracias a este modelo de código abierto, lo que convierte a Whisper en una buena alternativa a la API de voz a texto de Google.

Sin embargo, la instalación y el despliegue de un modelo de IA de este tipo sigue siendo un reto debido al hardware necesario bajo el capó. La versión grande de Whisper no puede funcionar en hardware de consumo.

Si quiere probar fácilmente Whisper sin preocuparse por las consideraciones de infraestructura, pruébelo en la API de NLP Cloud: ¡prueba Whisper gratis en NLP Cloud ahora!.

Julien Salinas
CTO en NLP Cloud