Open LLM Explorer — Transcription & Audio Tools
- Transcrire un fichier audio/vidéo en texte et sous‑titres
.srt
via faster‑whisper (implémentation CTranslate2 de Whisper). - Extraire l’audio en MP3 depuis des
.mp4
ou.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
ffmpeg
est 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=1
pour 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 0
seul 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_float16
est 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.