Cuándo usarlo
El usuario quiere crear un video de cabeza parlante / humano digital a partir de una foto de retrato y un archivo de audio (口播视频, 数字人生成, photo talk). Disparadores: "生成口播视频", "hacer que esta foto hable", "照片说话", "数字人视频", "sadtalker", "cabeza parlante", "video avatar desde foto". Aplica solo para macOS (Apple Silicon o Intel).
Procedimiento
- Localiza los scripts: están en el mismo directorio que este SKILL.md. Encuéntralos con:
ls "$(dirname <ruta-a-este-SKILL.md>)"— verás setup.sh y generate.sh junto a este archivo. - Verifica los prerrequisitos: ffmpeg, entorno conda sadtalker, ~/SadTalker/checkpoints/. Si falta algo, ejecuta setup.sh (solo la primera vez, ~15 min, ~2.5 GB de descarga).
- Confirma que el usuario ha proporcionado una foto de retrato (.jpg/.png) y un archivo de audio de voz (.wav/.mp3). Si el audio está en otro formato, conviértelo primero con ffmpeg.
- Ejecuta la generación:
bash generate.sh <foto> <audio> [--enhancer gfpgan] [--still] [--preprocess full|resize|crop]. Esto invocaconda run -n sadtalker python inference.pyinternamente. - El archivo .mp4 de salida aparece en ~/SadTalker/results//. Ábrelo con:
open <ruta>(macOS). Informa la ruta al usuario.
Errores comunes
- Python DEBE ser 3.10 dentro del entorno conda. 3.8 carece de wheels para Apple Silicon, 3.11+ no tiene wheel de scikit-image==0.19.3.
- 8 GB de RAM: cierra Chrome/IDE antes de ejecutar. SadTalker funciona solo con CPU en Mac — no existe ruta con GPU.
- dlib debe instalarse por separado en Mac:
conda run -n sadtalker pip install dlib— este es el error #1 en M1. - Instala torch SIN sufijo CUDA:
pip install torch torchvision torchaudio. Si torch.version contiene '+cu', reinstala. - ffmpeg vía brew, no conda. El ffmpeg de conda a veces carece de los códecs necesarios.
- La primera ejecución descarga ~2 GB de checkpoints. En China, configura primero HF_ENDPOINT=https://hf-mirror.com.
- El potenciador GFPGAN (
--enhancer gfpgan) aproximadamente duplica el tiempo de procesamiento. Omítelo para vistas previas rápidas. - El modo --still espera fotos de cuerpo completo cuando se combina con --preprocess full.
- El audio debe ser .wav o .mp3. Otros formatos generan error con 'Header missing'. Convierte con ffmpeg:
ffmpeg -i input.m4a output.wav.
Verificación
- conda run -n sadtalker python -c 'import torch; print(torch.version)' — NO debe contener '+cu'
- ls ~/SadTalker/checkpoints/ — debe contener auido2exp_00300-model.pth, auido2pose_00140-model.pth, epoch_20.pth y otros archivos .pth
- conda run -n sadtalker python -c 'import dlib; print("ok")' — debe imprimir 'ok' (sin Illegal Hardware Instruction)
- Prueba de humo: cd ~/SadTalker && conda run -n sadtalker python inference.py --driven_audio examples/driven_audio/bus_chinese.wav --source_image examples/source_image/full_body_1.png — produce salida en results/