Comment installer et déployer Whisper, la meilleure alternative open-source à la synthèse vocale de Google ?

OpenAI Whisper est la meilleure alternative open-source à la synthèse vocale de Google à ce jour. Il fonctionne nativement dans 100 langues (détectées automatiquement), il ajoute la ponctuation, et il peut même traduire le résultat si nécessaire. Dans cet article, nous allons vous montrer comment installer Whisper et le déployer en production.

Reconnaissance automatique de la parole

Google Speech-To-Text

L'API de reconnaissance automatique de la parole (speech-to-text) de Google est très populaire. Cette API est capable de transcrire des fichiers audio et vidéo dans 125 langues, et elle propose des modèles d'IA spécifiques pour la transcription d'appels téléphoniques, la transcription médicale, etc.

Cette API offre également des fonctionnalités supplémentaires intéressantes, comme le filtrage du contenu, la ponctuation automatique (en version bêta uniquement pour le moment) et la diarisation des locuteurs (en version bêta également).

Enfin, leur API peut être installée sur place. Mais il est important de noter que le modèle d'IA sur site continuera à envoyer des données à Google afin de rendre compte de l'utilisation de l'API, ce qui peut poser problème du point de vue de la confidentialité.

La tarification de Google est essentiellement de 0,006 $ / 15 secondes pour la conversion de la parole en texte de base, et de 0,009 $ / 15 secondes pour des cas d'utilisation spécifiques comme la transcription vidéo ou la transcription téléphonique.

Supposons que vous souhaitiez analyser automatiquement les appels téléphoniques passés à votre équipe d'assistance (afin d'effectuer ultérieurement une analyse des sentiments ou une extraction d'entités sur ces appels, par exemple). Si vous avez 5 agents d'assistance qui passent 4 heures par jour au téléphone avec les clients, l'API de synthèse vocale de Google vous coûtera 1 400 dollars par mois.

Si vous êtes préoccupé par les coûts ou la confidentialité, vous pouvez opter pour une alternative open-source : OpenAI Whisper.

Whisper : La meilleure alternative au Speech-To-Text de Google

Whisper est un modèle d'IA open-source qui vient d'être publié par OpenAI.

OpenAI a une histoire d'open-sourcing de grands projets d'IA. Par exemple, GPT-2 a été développé par OpenAI il y a quelques années. À l'époque, c'était le meilleur modèle génératif de traitement du langage naturel jamais créé, et il a ouvert la voie à des modèles beaucoup plus avancés comme GPT-3, GPT-J, OPT, Bloom... Récemment, ils ont également publié un cadre de programmation CUDA agréable appelé Triton.

Tous les modèles d'OpenAI n'ont pas été mis en libre accès. Leurs deux modèles les plus intéressants : GPT-3 et DALL-E, sont toujours des modèles privés qui ne peuvent être utilisés que par le biais de leur API payante.

Whisper prend d'assaut l'écosystème de la synthèse vocale : il peut détecter automatiquement la langue d'entrée, puis transcrire du texte dans une centaine de langues, ponctuer automatiquement le résultat et même le traduire si nécessaire. La précision est très bonne, et vous pouvez appliquer ce modèle à tout type d'entrée (audio, vidéo, appels téléphoniques, discussions médicales, etc.)

Et bien sûr, un autre grand avantage de Whisper est que vous pouvez le déployer vous-même sur vos propres serveurs, ce qui est formidable du point de vue de la confidentialité.

Whisper est bien sûr gratuit, mais si vous souhaitez l'installer vous-même, vous devrez y consacrer du temps humain et payer les serveurs et GPU sous-jacents. Si vous préférez bénéficier d'une version gérée, vous pouvez utiliser une API comme NLP Cloud : Essayez Whisper gratuitement sur NLP Cloud maintenant !.

Installer et déployer OpenAI Whisper

Vous avez 2 options si vous voulez installer et déployer Whisper pour le moment. La première est d'utiliser la bibliothèque Python Whisper d'OpenAI, et la seconde est d'utiliser l'implémentation de Whisper par Hugging Face Transformers. Nous allons explorer les deux solutions.

Utilisation de la librairie Python whisper

Cette solution est la plus simple. Vous devez essentiellement suivre les instructions d'OpenAI sur le dépôt Github du projet 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?

Utilisation de l'implémentation du "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.

Exigences matérielles

Comme nous l'avons vu ci-dessus, Whisper est assez facile à installer. Cependant, il nécessite un matériel avancé. Un GPU est recommandé si vous voulez utiliser la grande version du modèle.

Si vous utilisez la librairie Python whisper (voir ci-dessus), vous aurez besoin d'environ 10 Go de RAM et 11 Go de VRAM. Cela signifie qu'en pratique, vous aurez besoin d'un GPU de 16 Go au moins. Cela peut être un NVIDIA Tesla T4 par exemple, ou un NVIDIA A10.

Sur une Tesla T4, vous transcrirez 30 secondes d'audio en 6 secondes environ.

Considérations sur les performances

Si vous souhaitez améliorer les performances par défaut mentionnées ci-dessus, voici plusieurs stratégies que vous pouvez explorer :

Conclusion

OpenAI Whisper est une révolution dans le monde de la reconnaissance vocale. Pour la première fois, tout le monde peut accéder facilement à une reconnaissance automatique de la parole à la pointe de la technologie grâce à ce modèle open-source, ce qui fait de Whisper une bonne alternative à l'API de synthèse vocale de Google.

L'installation et le déploiement d'un tel modèle d'intelligence artificielle restent toutefois un défi en raison du matériel requis sous le capot. La grande version de Whisper ne peut pas vraiment fonctionner sur du matériel grand public.

Si vous souhaitez essayer facilement Whisper sans vous soucier des considérations d'infrastructure, veuillez l'essayer sur l'API NLP Cloud : Essayez Whisper gratuitement sur NLP Cloud maintenant !.

Julien Salinas
Directeur technique de NLP Cloud