🏠 Accueil Tous les projets

Transcripteur local : vidéo et audio

Petit projet qui convertit des fichiers vidéo et audio en transcriptions

Open LLM Explorer — Transcription & Audio Tools


Fonctionnalités


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

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, testez CT2_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


Crédits