Open LLM Explorer — Transcription & Audio Tools
- Transcrire un fichier audio/vidéo en texte et sous‑titres
.srtvia faster‑whisper (implémentation CTranslate2 de Whisper). - Extraire l’audio en MP3 depuis des
.mp4ou.mkv(à l’unité ou en lot) via ffmpeg.
Fonctionnalités
- Transcription multilingue (détection auto ou langue forcée).
- Sorties
.txt(avec timestamps par segment) et.srt. - Timestamps par mot (optionnel).
- Filtre VAD pour une segmentation propre.
- Choix du modèle Hugging Face (ex.
Systran/faster-whisper-large-v3) ou d’un dossier local (offline). - Scripts utilitaires pour MP4/MKV → MP3 (VBR/CBR, fréquence, mono/stéréo, récursif).
- Préservation des métadonnées quand c’est possible (
-map_metadata 0). Note : la pochette (cover art) est un flux image, il faut la mapper explicitement si vous souhaitez l’embarquer dans le MP3.
Arborescence
.
├─ get_transcript.py # Transcription (faster-whisper)
├─ tools/
│ ├─ mkv_mpthree.py # Convertisseur MKV -> MP3 (ffmpeg)
│ └─ mpfour_tompthree.py # Convertisseur MP4 -> MP3 (ffmpeg)
├─ requirements.txt
└─ README.md
requirements.txt
faster-whisper
huggingface_hub
ffmpegest requis côté système (voir Prérequis).
Prérequis
- Python 3.9+
- ffmpeg installé et présent dans le PATH :
- macOS :
brew install ffmpeg - Ubuntu/Debian/WSL :
sudo apt-get update && sudo apt-get install -y ffmpeg - Windows (Chocolatey) :
choco install ffmpeg<br /> (ou télécharger le binaire et l’ajouter au PATH) - CUDA (optionnel, pour GPU NVIDIA)
Vérifiez l’installation :
ffmpeg -version
Installation
# 1) (Optionnel) créer un venv
python3 -m venv .venv
# macOS/Linux/WSL
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# 2) Dépendances Python
python -m pip install -U pip
pip install -r requirements.txt
Démarrage rapide
Transcrire un fichier avec un modèle open‑source (Hugging Face)
python get_transcript.py "mon_audio_ou_video.mp3" \
--model Systran/faster-whisper-large-v3 \
--device cuda \
--compute-type int8_float16
Sorties dans ./transcripts/ :
- mon_audio_ou_video.txt
- mon_audio_ou_video.srt
Extraire l’audio MP3 depuis MP4/MKV
# MP4 -> MP3 (VBR 0 = meilleure qualité)
python tools/mpfour_tompthree.py ./video.mp4 --vbr 0
# MKV -> MP3 (CBR 192k, récursif, écraser si existe)
python tools/mkv_mpthree.py ./videos -r -y --bitrate 192k -o ./mp3_out
Transcription (get_transcript.py)
Basé sur faster-whisper (CTranslate2). Aucune donnée n’est envoyée côté serveur.
Paramètres clés
- --model : ID Hugging Face (ex. Systran/faster-whisper-large-v3) ou chemin local du modèle (pré‑téléchargé).
- --device : cuda (GPU) ou cpu.
- --compute-type : précision/quantification.
- GPU : float16 (qualité/rapide) ou int8_float16 (VRAM réduite).
- CPU : int8.
- --language fr : force la langue (évite une mauvaise détection).
- --beam-size : 1–5 (plus grand = mieux, mais plus lent).
- --word-timestamps : timestamps par mot (plus lent).
- --no-vad : désactiver le VAD (par défaut activé).
Exemples
# Qualité max GPU (si VRAM OK)
python get_transcript.py talk.m4a --model Systran/faster-whisper-large-v3 --device cuda --compute-type float16
# Équilibre qualité/VRAM (RTX 3060 12Go)
python get_transcript.py talk.m4a --model Systran/faster-whisper-large-v3 --device cuda --compute-type int8_float16
# Forcer le français + timestamps par mot
python get_transcript.py talk.mp3 --model Systran/faster-whisper-large-v3 --device cuda --language fr --word-timestamps
Le script fixe par défaut
CT2_USE_CUDNN=0(stabilité).<br /> Si tout va bien sur votre machine, testezCT2_USE_CUDNN=1pour comparer.
Utilitaires audio (MP4/MKV → MP3)
Les deux scripts utilisent ffmpeg et l’encodeur libmp3lame.<br />
Options communes :
- --vbr 0..9 : VBR (0 = meilleure qualité, 9 = plus compressé).<br />
Si défini, ignore --bitrate.
- --bitrate 192k : CBR (débit constant).
- --sample-rate 44100 : fréquence d’échantillonnage.
- --channels 1|2 : mono/stéréo.
- -r/--recursive : traitement récursif d’un dossier.
- -y/--overwrite : écraser les sorties existantes.
- -o/--output : fichier sortie (si entrée fichier) ou dossier cible.
MP4 → MP3
# Fichier unique, VBR 2
python tools/mpfour_tompthree.py video.mp4 --vbr 2
# Dossier récursif → conserver la structure sous ./mp3_out
python tools/mpfour_tompthree.py ./captures -r --bitrate 192k -o ./mp3_out
MKV → MP3
# Fichier unique, CBR 192k
python tools/mkv_mpthree.py film.mkv --bitrate 192k
# Dossier non récursif
python tools/mkv_mpthree.py ./rushes -o ./mp3_out
Pour embarquer une pochette (cover art) dans le MP3, il faut mapper l’image (flux) en plus des métadonnées.
-map_metadata 0seul ne suffit pas.
Mode hors‑ligne (offline)
Télécharger une fois le modèle puis utiliser un chemin local :
Option A — Python (WSL/Ubuntu : utiliser python3)
python3 - <<'PY'
from huggingface_hub import snapshot_download
snapshot_download('Systran/faster-whisper-large-v3', local_dir='models/faster-whisper-large-v3')
print("OK, téléchargé dans models/faster-whisper-large-v3")
PY
Option B — CLI Hugging Face (aucun code inline)
huggingface-cli download Systran/faster-whisper-large-v3 --local-dir models/faster-whisper-large-v3 --local-dir-use-symlinks False
Ensuite, vous pouvez forcer le mode hors‑ligne et pointer sur le dossier :
# macOS/Linux/WSL
export HF_HUB_OFFLINE=1
# Windows PowerShell
# $Env:HF_HUB_OFFLINE=1
python3 get_transcript.py input.mp3 --model models/faster-whisper-large-v3 --device cuda --compute-type int8_float16
Performance & VRAM
- 12 Go VRAM :
--compute-type int8_float16est un très bon compromis. - Qualité max :
float16(si la VRAM le permet). - Si OOM (Out Of Memory) :
- baisser
--beam-size(3 ou 1), - utiliser
int8_float16(GPU) ouint8(CPU). - Segmentation trop hachée → augmenter
min_silence_duration_ms(défaut : 2000 ms dans le script).
Crédits
- Transcription basée sur Whisper via faster‑whisper / CTranslate2.
- Projet pour le site openllmexplorer.app.