Communitygithub.com

laoqinmml/video-dubbing

Convierte por lotes videos cortos chinos de habla directa a MP4s finales en inglés, con la voz clonada del hablante original: transcripción ASR a nivel de palabra de Volcengine, reescritura de DeepSeek orientada a compradores internacionales, clonación de voz de MiniMax, fundidos en los límites de las oraciones, ritmo natural y mezcla con normalización de volumen de música de fondo.

¿Qué es video-dubbing?

Esta habilidad permite a un agente de IA convertir automáticamente videos cortos en chino, donde un hablante mira a cámara y habla, en videos finales en inglés con la voz clonada del hablante original. Está diseñada para equipos de marketing y creadores de contenido que necesitan localizar rápidamente videos promocionales para audiencias internacionales, manteniendo la identidad vocal del presentador. El proceso se divide en seis etapas: extracción de audio, reconocimiento de voz (ASR) a nivel de palabra con Volcengine, reescritura del guion con DeepSeek para un público objetivo de compradores extranjeros, clonación de voz con MiniMax, sincronización temporal con fundidos y mezcla final con música de fondo normalizada. Soporta la ejecución por lotes y la reanudación automática de procesos fallidos, saltando las etapas ya completadas. Está optimizado para el mercado chino, utilizando servicios en la nube nacionales como Volcengine y MiniMax, y requiere claves API de estos servicios, así como de DeepSeek.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Conversión de video chino a doblaje en inglés

Convierte videos chinos de habla directa en videos finales doblados al inglés: clona la voz del hablante original, reescribe el guion para compradores internacionales y genera un solo MP4.

Un solo comando

cd "<raíz del proyecto>"
$env:MINIMAX_API_KEY = "<Clave de MiniMax China>"
$env:VOLC_API_KEY    = "<Clave de API de Volcengine>"
.\venv\Scripts\python.exe scripts\dub.py --src "<ruta del video>" --slug "<nombre corto>"

Productos:

UbicaciónContenido
out/<nombre corto>_EN_dubbed.mp4Video final (única entrega)
out/<nombre corto>_EN.srt / _ZH.srtSubtítulos en chino e inglés
work/batch/<nombre corto>/REPORT.mdTiempo empleado, rondas de síntesis, costo

Parámetros comunes: --until translate (solo generar guion, sin sintetizar), --from fit (comenzar desde cierta etapa), --force (ignorar estado guardado).

Seis etapas

1 prep       Extraer audio + separación de voz Demucs + registrar duración del video
2 asr        Reconocimiento Volcengine a nivel de palabra → línea de tiempo de oraciones en chino
3 translate  DeepSeek → texto en inglés (cambio de audiencia + presupuesto de palabras + números escritos en palabras)
4 fit        Ejecutar N rondas de síntesis → probar cada una → puntuar según "cuánto puede llenar" y elegir la mejor
5 place      Colocar audio en línea de tiempo + insertar pausas entre oraciones + escribir subtítulos (marcas de tiempo a nivel de palabra reales)
6 mux        Agregar música de fondo + normalizar volumen → MP4

Si falla, vuelve a ejecutar el mismo comando: las etapas ya completadas se omiten automáticamente (incluye verificación de que el producto sea más nuevo que la entrada).

Requisitos previos

ElementoDescripción
Vozwork/voice.json, generado ejecutando clone_voice.py una vez, compartido por todos los videos, no es necesario clonar de nuevo
Clave VolcengineReconocimiento de archivos de audio (volc.seedasr.auc)
Clave MiniMaxSitio nacional api.minimaxi.com, requiere verificación de identidad y saldo (de lo contrario 2038 / 1008)
Clave DeepSeekSitio oficial api.deepseek.com
Dependenciasdemucs torch numpy requests openai soundfile
MúsicaUn directorio con archivos .wav, ver BGM_DIR en config.py

Todos los servicios son conexión directa, dub.py fuerza la limpieza de variables de proxy.

Lectura obligatoria: 18 lecciones prácticas

La lista completa está en docs/LESSONS.md. Las más fáciles de pasar por alto y con mayor costo:

  1. Cambiar la audiencia, no solo traducir — Mucho material original está dirigido a exportadores chinos ("amigos que hacen comercio exterior"), el inglés debe hablar directamente al comprador extranjero. La regla está en SYSTEM_FILL de translate.py.
  2. Escribir números en palabras en la etapa de traducción — 20,000 cuenta como 1 palabra pero se lee como 2 palabras, sesgando todos los cálculos de longitud; dejar números arábigos puede hacer que se lean dígito por dígito.
  3. atempo deshabilitado — No hacer que la persona hable más rápido para llenar el espacio; hay que acortar el guión.
  4. Las uniones entre oraciones deben tener fundidos de entrada/salida — Los cortes en formas de onda no cero producen chasquidos.
  5. Verificar defectos de audio no solo mirando el salto máximo de todo el archivo — Esto puede ser enmascarado por saltos mayores en el archivo fuente; hay que mirar la distribución de saltos.
  6. La reanudación debe verificar que el producto sea más nuevo que la entrada — De lo contrario, se entregará silenciosamente un doblaje antiguo.

El mecanismo detallado y el proceso de depuración están en docs/USAGE.md (originalmente "Instrucciones de uso") y docs/REPORT.md (informe de implementación).

Limitaciones conocidas

  • La densidad de información en chino es mayor que en inglés, por lo que en algunos materiales puede ser necesario eliminar oraciones manteniendo los puntos de venta (la herramienta lo hace automáticamente y lo registra en el informe).
  • El nivel de llenado suele ser del 93–100%, el final se complementa con música de fondo.
  • Para nombres propios que no se pronuncian correctamente fuera de Eva, agregar al diccionario TTS_RESPELL en synth_single.py (solo afecta la entrada de TTS, no los subtítulos).

Flujo de trabajo sugerido

Para material nuevo, ejecuta el proceso completo una vez para que el cliente confirme (voz/velocidad/música/pausas), y después procesa en lote. En el lote, cada elemento especificará el costo.

Skills relacionados