Come installare e distribuire Whisper, la migliore alternativa open source a Google Speech-Text

OpenAI Whisper è la migliore alternativa open source allo speech-to-text di Google. Funziona in modo nativo in 100 lingue (rilevate automaticamente), aggiunge la punteggiatura e può anche tradurre il risultato, se necessario. In questo articolo vi mostreremo come installare Whisper e distribuirlo in produzione.

Riconoscimento vocale automatico

Google Speech-To-Text

L'API di Google per il riconoscimento vocale automatico (speech-to-text) è molto popolare. Questa API è in grado di trascrivere file audio e video in 125 lingue e propone modelli specifici di intelligenza artificiale per la trascrizione di telefonate, la trascrizione medica e altro ancora.

Questa API ha anche delle belle funzioni aggiuntive come il filtraggio dei contenuti, la punteggiatura automatica (per ora solo in beta) e la diarizzazione degli altoparlanti (anch'essa in beta).

Infine, l'API può essere installata in loco. Ma è importante notare che il modello di AI on-premise continuerà a inviare dati a Google per segnalare l'utilizzo delle API, il che potrebbe essere un problema dal punto di vista della privacy.

I prezzi di Google sono fondamentalmente di 0,006 dollari / 15 secondi per la sintesi vocale di base e di 0,009 dollari / 15 secondi per casi d'uso specifici come la trascrizione di video o la trascrizione telefonica.

Supponiamo che vogliate analizzare automaticamente le telefonate fatte al vostro team di assistenza (per eseguire successivamente l'analisi del sentiment o l'estrazione di entità, ad esempio). Se avete 5 agenti di assistenza che passano 4 ore al giorno al telefono con i clienti, l'API speech-to-text di Google vi costerà 1.400 dollari al mese.

Se siete preoccupati per i costi o la privacy, potreste passare a un'alternativa open-source: OpenAI Whisper.

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

Whisper è un modello di intelligenza artificiale open-source appena rilasciato da OpenAI.

OpenAI ha una storia di open-sourcing di grandi progetti di intelligenza artificiale. Ad esempio, GPT-2 è stato sviluppato da OpenAI un paio di anni fa. All'epoca era il miglior modello di elaborazione generativa del linguaggio naturale mai creato e ha aperto la strada a modelli molto più avanzati come GPT-3, GPT-J, OPT, Bloom... Recentemente è stato rilasciato anche un bel framework di programmazione CUDA chiamato Triton.

Tuttavia, non tutti i modelli di OpenAI sono stati resi disponibili. I due modelli più interessanti: GPT-3 e DALL-E, sono ancora modelli privati che possono essere utilizzati solo attraverso le loro API a pagamento.

Whisper sta conquistando l'ecosistema speech-to-text: è in grado di rilevare automaticamente la lingua di input, quindi di trascrivere il testo in circa 100 lingue, di punteggiare automaticamente il risultato e persino di tradurlo, se necessario. La precisione è molto buona ed è possibile applicare questo modello a qualsiasi tipo di input (audio, video, telefonate, discussioni mediche, ecc.).

Naturalmente, un altro grande vantaggio di Whisper è che potete distribuirlo da soli sui vostri server, il che è ottimo dal punto di vista della privacy.

Whisper è ovviamente gratuito, ma se volete installarlo da soli dovrete dedicargli un po' di tempo e pagare i server e le GPU sottostanti. Se si preferisce beneficiare di una versione gestita, è possibile utilizzare un'API come NLP Cloud: Prova subito Whisper gratuitamente su NLP Cloud!.

Installazione e distribuzione di OpenAI Whisper

Se si desidera installare e distribuire Whisper per il momento, si hanno due opzioni. La prima consiste nell'utilizzare la libreria Python di OpenAI e la seconda nell'utilizzare l'implementazione di Whisper di Hugging Face Transformers. Esploriamo entrambe le soluzioni.

Utilizzo della libreria whisper Python

Questa soluzione è la più semplice. In pratica, è necessario seguire le istruzioni di OpenAI sul repository Github del progetto 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?

Utilizzo dell'implementazione di Hugging Face

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.

Requisiti hardware

Come abbiamo visto sopra, Whisper è abbastanza facile da installare. Tuttavia, richiede un hardware avanzato. Si consiglia di utilizzare una GPU se si vuole utilizzare la versione grande del modello.

Se si utilizza la libreria whisper Python (vedi sopra), sono necessari circa 10 GB di RAM e 11 GB di VRAM. Ciò significa che in pratica avrete bisogno di una GPU da almeno 16 GB. Potrebbe essere una NVIDIA Tesla T4, ad esempio, o una NVIDIA A10.

Su una Tesla T4, è possibile trascrivere 30 secondi di audio in circa 6 secondi.

Considerazioni sulle prestazioni

Se volete migliorare le prestazioni predefinite di cui sopra, potete esplorare diverse strategie:

Conclusione

OpenAI Whisper è una rivoluzione nel mondo del riconoscimento vocale. Per la prima volta, chiunque può accedere facilmente a un riconoscimento vocale automatico all'avanguardia grazie a questo modello open-source, che rende Whisper una valida alternativa alle API speech-to-text di Google.

L'installazione e la distribuzione di un modello di intelligenza artificiale di questo tipo è ancora una sfida a causa dell'hardware necessario. La versione grande di Whisper non può essere eseguita su hardware di consumo.

Se volete provare Whisper senza preoccuparvi delle considerazioni sull'infrastruttura, provatelo su NLP Cloud API: Prova subito Whisper gratuitamente su NLP Cloud!.

Julien Salinas
CTO di NLP Cloud