Doublage vidéo chinois vers anglais
Convertit des vidéos courtes en chinois avec prise de parole en version doublée en anglais : clone le timbre vocal du locuteur original, réécrit le script pour les acheteurs étrangers, et produit un seul fichier MP4.
Une seule commande
cd "<racine du projet>"
$env:MINIMAX_API_KEY = "<Clé MiniMax Chine>"
$env:VOLC_API_KEY = "<Clé API Volcengine>"
.venv\Scripts\python.exe scripts\dub.py --src "<chemin vidéo>" --slug "<nom court>"
Produits :
| Emplacement | Contenu |
|---|---|
out/<nom court>_EN_dubbed.mp4 | Vidéo finale (livraison unique) |
out/<nom court>_EN.srt / _ZH.srt | Sous-titres anglais / chinois |
work/batch/<nom court>/REPORT.md | Durée, nombre d'itérations, coût |
Paramètres courants : --until translate (produire uniquement le script, pas de synthèse), --from fit (reprendre à partir d'une étape), --force (ignorer l'état existant).
Six étapes
1 prep Extraire audio + séparation Demucs + enregistrer durée vidéo
2 asr Reconnaissance Volcengine au niveau mot → timeline des phrases chinoises
3 translate DeepSeek → script anglais (changement de public cible + budget de mots + nombres en toutes lettres)
4 fit Lancer N itérations de synthèse → tests réels → évaluation selon "jusqu'à quel point l'audio remplit le timing" et sélection de la meilleure
5 place Placer l'audio sur la timeline + pauses aux limites de phrases + générer sous-titres (timestamps réels au niveau mot)
6 mux Ajouter musique de fond + normalisation du volume → MP4
En cas d'échec, relancez la même commande ; les étapes déjà terminées sont automatiquement ignorées (avec vérification que les résultats sont plus récents que les entrées).
Prérequis
| Élément | Description |
|---|---|
| Timbre vocal | work/voice.json, généré une fois en exécutant clone_voice.py, partagé par toutes les vidéos, pas besoin de cloner à nouveau |
| Clé Volcengine | Reconnaissance de fichiers audio (volc.seedasr.auc) |
| Clé MiniMax | Site chinois api.minimaxi.com, nécessite vérification d'identité et solde (sinon erreur 2038 / 1008) |
| Clé DeepSeek | Site officiel api.deepseek.com |
| Dépendances | demucs torch numpy requests openai soundfile |
| Musique | Un dossier contenant des fichiers .wav, voir BGM_DIR dans config.py |
Tous les services sont directement connectés ; dub.py supprime automatiquement les variables de proxy.
À lire : 18 leçons pratiques
La liste complète est dans docs/LESSONS.md. Les pièges les plus fréquents et coûteux :
- Changer le public cible, pas seulement traduire — De nombreux contenus originaux s'adressent aux exportateurs chinois ("Ami·e·s du commerce extérieur") ; la version anglaise doit s'adresser directement aux acheteurs étrangers. Les règles se trouvent dans
SYSTEM_FILLdetranslate.py. - Écrire les nombres en toutes lettres dès l'étape de traduction —
20 000compte comme 1 mot mais se prononce comme 2 mots, ce qui fausse tous les calculs de longueur ; laisser les chiffres arabes peut entraîner une lecture chiffre par chiffre. - atempo est désactivé — Ne pas accélérer la parole pour remplir le timing ; il faut plutôt raccourcir le script.
- Les jonctions entre phrases doivent inclure un fondu en entrée/sortie — Les points de coupure sur une forme d'onde non nulle créent des clics.
- La vérification des défauts audio ne doit pas se limiter au saut maximum du fichier entier — Ce maximum peut être masqué par un saut plus important dans le fichier source ; il faut examiner la distribution des sauts.
- La reprise doit vérifier que les résultats sont plus récents que les entrées — Sinon, l'ancienne version du doublage est livrée silencieusement.
Les mécanismes détaillés et le processus de développement sont dans docs/USAGE.md (anciennement "Instructions") et docs/REPORT.md (rapport de mise en œuvre).
Limitations connues
- La densité d'information du chinois est plus élevée que celle de l'anglais ; pour certains contenus rares, il peut être nécessaire de supprimer des phrases tout en conservant les arguments de vente (l'outil le fait automatiquement, et le rapport l'enregistre).
- Le taux de remplissage est généralement de 93 à 100 % ; la fin est complétée par la musique de fond.
- Les noms propres mal prononcés autrement que par
Evapeuvent être ajoutés au dictionnaireTTS_RESPELLdanssynth_single.py(cela affecte uniquement l'entrée TTS, pas les sous-titres).
Flux de travail suggéré
Pour un nouveau contenu, exécutez d'abord le processus complet pour le faire valider par le client (timbre vocal, débit, musique, pauses). Après validation, passez en mode batch. En batch, le coût est indiqué pour chaque vidéo.