Avancé 20 min

Transcription audio locale avec Whisper.cpp

Transcrire de l'audio en texte directement sur votre CPU, sans passer par une API cloud payante.

L’IA ne se limite pas au texte. La transcription audio (Speech-to-Text) a aussi bien évolué grâce au modèle Whisper d’OpenAI (qui est, malgré le nom, un modèle open-source gratuit).

Comme pour Llama, le développeur Georgi Gerganov a créé un portage en C/C++ pur appelé whisper.cpp. Il permet de transcrire des heures d’audio en quelques minutes, directement sur le processeur (CPU) de votre machine, sans carte graphique monstrueuse.

Pourquoi Whisper.cpp ?

Si vous avez des réunions confidentielles, des interviews médicales ou des entretiens journalistiques, envoyer les fichiers audio sur un serveur cloud est un risque majeur de fuite de données.

Whisper.cpp s’exécute 100% en local et pèse à peine quelques mégaoctets compilés.

Compilation depuis la source

Le processus est similaire à llama.cpp. Ouvrez votre terminal.

# Récupérer le code
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp

# Compiler
make

Télécharger un modèle

Whisper existe en plusieurs tailles (tiny, base, small, medium, large). Plus le modèle est gros, plus il comprend les accents complexes et le bruit de fond, mais plus il est lent. Le modèle base est parfait pour commencer.

Whisper.cpp inclut un script pour télécharger les modèles facilement.

bash ./models/download-ggml-model.sh base

Le fichier téléchargé se trouve dans le dossier models/ggml-base.bin

Transcrire un fichier audio

Pour tester, Whisper nécessite un fichier audio au format WAV (16 kHz). Si vous avez un fichier MP3 ou MP4, convertissez-le d’abord avec ffmpeg.

# Conversion si nécessaire
ffmpeg -i votre_audio.mp3 -ar 16000 -ac 1 -c:a pcm_s16le audio_format_whisper.wav

Lancez la transcription.

./main -m models/ggml-base.bin -f audio_format_whisper.wav -otxt

L’argument -otxt va créer un fichier texte avec la transcription complète. Vous pouvez aussi utiliser -osrt ou -ovtt pour générer directement des sous-titres avec le timecode, parfaits pour intégrer dans une vidéo YouTube ou Premiere Pro.

Le serveur local

Comme son grand frère, whisper.cpp intègre un serveur local.

./server -m models/ggml-base.bin --port 8080

Il expose une route /inference sur laquelle vous pouvez envoyer un fichier audio en POST, et il vous retourne la transcription au format JSON. Idéal pour greffer cette fonctionnalité dans vos propres applications web.