Communitygithub.com

video-dubbing : vidéo face caméra chinoise doublée en anglais

Convertit en lot des vidéos courtes face caméra en chinois en MP4 finis doublés en anglais avec la voix clonée de l'orateur, un script réécrit pour les acheteurs étrangers et des SRT bilingues.

Qu'est-ce que video-dubbing : vidéo face caméra chinoise doublée en anglais ?

Étape 1 de la recette Localisation vidéo (doublage sortant), depuis laoqinmml/video-dubbing (créé le 2026-10-13). Six étapes reprenables : séparation des voix demucs, ASR mot à mot Volcengine, réécriture DeepSeek orientée public avec budget de mots, synthèse MiniMax en voix clonée sur plusieurs passes, placement sur la timeline avec fondus, mixage musique et loudness. Un MP4 par vidéo, SRT EN/ZH et rapport de coût.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add laoqinmml/video-dubbing

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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 :

EmplacementContenu
out/<nom court>_EN_dubbed.mp4Vidéo finale (livraison unique)
out/<nom court>_EN.srt / _ZH.srtSous-titres anglais / chinois
work/batch/<nom court>/REPORT.mdDuré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émentDescription
Timbre vocalwork/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é VolcengineReconnaissance de fichiers audio (volc.seedasr.auc)
Clé MiniMaxSite chinois api.minimaxi.com, nécessite vérification d'identité et solde (sinon erreur 2038 / 1008)
Clé DeepSeekSite officiel api.deepseek.com
Dépendancesdemucs torch numpy requests openai soundfile
MusiqueUn 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 :

  1. 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_FILL de translate.py.
  2. Écrire les nombres en toutes lettres dès l'étape de traduction — 20 000 compte 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.
  3. atempo est désactivé — Ne pas accélérer la parole pour remplir le timing ; il faut plutôt raccourcir le script.
  4. 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.
  5. 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.
  6. 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 Eva peuvent être ajoutés au dictionnaire TTS_RESPELL dans synth_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.

Skills associés