INSTALLER whisper.cpp POUR DE LA TRANSCRIPTION AUDIO EN LOCAL VIA IA

Cette vidéo d’Adrien Linuxtricks explique comment installer, compiler et déployer Whisper CPP en local pour faire de la transcription et de la traduction audio, avec un service systemd et une API compatible OpenAI.

Voir la source

SYNTHÈSE STRUCTURÉE

Installation des dépendances

Adrien commence par installer les paquets nécessaires à la compilation de Whisper CPP sur sa machine Fedora avec dnf install. Il liste : git pour récupérer les sources, cmake pour la configuration du build, gcc et g++ pour la compilation, openssl-devel pour la partie TLS, sdl2-devel pour la gestion audio. Il précise que les commandes équivalentes pour Ubuntu/Debian sont disponibles dans l’article associé. Pour les cartes AMD, il ajoute glslc et vulkan-devel afin de compiler avec le support Vulkan, tandis que pour Nvidia, il faudra installer CUDA.

Compilation avec support GPU

La compilation se fait avec cmake -B build -DGGML_VULKAN=1 pour activer le support Vulkan sur les cartes AMD. Adrien vérifie que le support CPU et Vulkan sont bien détectés avant de lancer cmake --build build --config Release -j $(nproc). Pour Nvidia, la commande alternative est fournie avec -DGGML_CUDA=1 et le chemin du compilateur CUDA. Il insiste sur le fait que compiler soi-même permet d’adapter l’outil à son matériel : « ce sera plus performant, ce sera adapté à notre matériel ».

Création d’un utilisateur dédié

Pour une installation propre sur un serveur, Adrien recommande de créer un utilisateur dédié avec useradd -m whispercpp, puis de l’ajouter aux groupes render (accès au GPU) et audio (manipulation audio) via gpasswd -a. Il crée ensuite le répertoire /opt/whispercpp avec deux sous-dossiers : bin pour les binaires et models pour les modèles, puis attribue les droits avec chown -R whispercpp:whispercpp /opt/whispercpp.

Récupération des modèles

Le script download-ggml-model.sh dans le dossier models permet de télécharger les modèles. Adrien choisit le modèle large-v3 car il rentre dans sa carte AMD (environ 3 Go de VRAM). Il met en garde : « prenez pas les modèles en .en parce qu’ils sont réservés, ils sont optimisés pour l’anglais ». Pour les machines moins puissantes, il suggère le modèle small quantisé en Q5, qui reste performant sans nécessiter un gros GPU.

Configuration de l’environnement

Adrien modifie son .bashrc pour ajouter /opt/whispercpp/bin au PATH et exporter LD_LIBRARY_PATH vers le même dossier. Cela permet d’appeler whisper-server directement sans taper le chemin complet. Il applique les changements avec source ~/.bashrc. Pour Fedora et les systèmes avec SELinux, il explique qu’il faut changer le contexte avec chcon -t bin_t /opt/whispercpp/bin/* pour que systemd puisse lancer le binaire.

Lancement du serveur

La commande de lancement est :

whisper-server -m /opt/whispercpp/models/ggml-large-v3.bin --host 0.0.0.0 --port 8081 --convert -l fr

L’option --convert est cruciale : Whisper CPP ne gère que le format WAV non compressé, donc cette option utilise FFmpeg pour convertir les fichiers MP3 ou autres en WAV avant transcription. L’option -l fr force la langue française, ce qui évite la détection automatique et gagne du temps.

Test avec l’interface web

Une fois le serveur lancé, Adrien accède à l’interface web sur http://localhost:8081. Il utilise la section « Try it out » pour tester la transcription avec un fichier MP3 extrait d’une vidéo via Audacity. Il montre que la transcription est très fidèle, même si le nom « Linuxtricks » est transcrit avec des espaces. Il souligne que l’API est compatible OpenAI, ce qui permet de réutiliser des développements existants sans modification.

Création du service systemd

Pour un déploiement permanent, Adrien crée un fichier /etc/systemd/system/whispercpp.service avec la configuration suivante :

[Unit]
Description=Whisper CPP Server
After=network.target

[Service]
User=whispercpp
WorkingDirectory=/opt/whispercpp
Environment=LD_LIBRARY_PATH=/opt/whispercpp/bin
ExecStart=/opt/whispercpp/bin/whisper-server -m /opt/whispercpp/models/ggml-large-v3.bin --host 0.0.0.0 --port 8081 --convert -l fr
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Il recharge systemd avec systemctl daemon-reload, démarre le service avec systemctl start whispercpp, puis l’active au démarrage avec systemctl enable whispercpp. Les logs sont consultables via systemctl status whispercpp.

Ouverture du port firewall

Pour exposer le service sur le réseau, Adrien utilise firewall-cmd --add-port=8081/tcp --permanent suivi de firewall-cmd --reload. Il rappelle que si Lama CPP tourne déjà sur la même machine avec le port 8080, il faut choisir un port différent pour Whisper CPP.

CONCEPTS CLÉS

  • Whisper CPP : implémentation en C++ du modèle de reconnaissance vocale Whisper d’OpenAI, optimisée pour fonctionner en local sans dépendance cloud.
  • Vulkan : API graphique multiplateforme permettant d’exploiter le GPU pour l’inférence, alternative à CUDA pour les cartes AMD.
  • GGML : format de fichier de modèle optimisé pour l’inférence sur CPU et GPU, utilisé par Whisper CPP et Lama CPP.
  • SELinux : module de sécurité Linux qui restreint les accès aux fichiers ; il faut ajuster les contextes pour permettre l’exécution de binaires dans des répertoires non standards.

CONCLUSION

Whisper CPP est une solution puissante et accessible pour faire de la reconnaissance vocale en local, sans dépendre de services cloud. L’installation est bien documentée et adaptable à différents matériels, que ce soit avec Vulkan pour AMD ou CUDA pour Nvidia. L’intégration avec systemd et l’API compatible OpenAI en font un outil idéal pour automatiser des transcriptions, par exemple pour des réunions, et les combiner avec Lama CPP pour générer des synthèses. Comme le dit Adrien : « vous allez pouvoir retranscrire cette réunion puis après balancer ça dans un autre outil tel que Lama CPP pour en faire une synthèse ». C’est une brique essentielle pour construire un pipeline d’IA entièrement local et respectueux de la vie privée.

Du même canal

Tout voir