
Digital Avatar Lip Sync
Makes lip-synced avatar videos from a portrait and audio, then merges segments.
Install
npx skills add TeamWiseFlow/xiaobei --skill avatar -g -a claude-code -y- Repository
- TeamWiseFlow/xiaobei8.7k
- Category
- Media
- Updated
- 6d ago
- License
- See repository
- Context cost
- Lightabout 569 tokens
- Runs scripts
- Yes, review before use
What it does
expert-video 内部数字人口型视频工具。用百炼 Wan S2V 检测肖像、按原声生成、恢复任务、登记口型审查和合并同源分段。
Avatar
按 expert-video 的 deck-talk Brief 与闸门执行。使用 WORKSPACE_ID + MODELSTUDIO_API_KEY(或 DASHSCOPE_API_KEY),不使用 Token Plan Key。声音优先用用户原录音;合成声音须获明确批准并沿用 awk-tts 音色档案。肖像与声音须有使用授权。
avatar generate --image /absolute/portrait.png --audio /absolute/narration.wav --output /absolute/render/presenter.mp4
avatar resume --job /absolute/render/presenter.avatar.json
avatar review --job /absolute/render/presenter.avatar.json --verdict pass --reviewer main --notes '已审看全段口型、人像和尾部'
video-producer deck-compose --mode avatar --avatar-job /absolute/render/presenter.avatar.json --base /absolute/base.mp4 --output /absolute/composed.mp4
generate校验图片,调用wan2.2-s2v-detect的check_pass,再用wan2.2-s2v创建异步任务。--resolution 480P|720P默认480P;--timeout 1..3600默认900秒。输出新视频及.avatar.json,内部记录真实 provider/model。- 图片 JPEG/PNG/BMP/WebP,宽高均400, 7000像素。音频 WAV/MP3,应为清晰人声,无BGM或环境噪声。脚本解码原声、提取指定时间窗,末尾默认追加0.75秒精确静音作为驱动余量;
--tail 0..2可调整。驱动音频含静音必须严格小于20秒、文件小于15MB。模型视频不足以覆盖完整原声时停止,不定帧、不循环、不变速、不自动重提。 - 本地和 HTTP(S) 媒体均支持;临时上传按检测与生成模型分别执行,勿跨模型复用 URL。只在独立派生目录保存驱动 WAV,不修改原声。合成时丢弃模型自带音轨。
api_succeeded仅表示服务端成功;timing_pass表示视频覆盖原声音频且量化误差≤0.12秒;lip_sync_review_pass必须由实际审片后通过review登记,并绑定当前音视频哈希。不得因时长通过自动填写口型通过。deck-compose在人工审查前阻断新任务合成。- 先生成5, 10秒样片,核验人物、嘴型、尾部和小窗裁切;按 GATE B 已批准范围再做全量。
review不代替 GATE B,也不等于批准新一轮模型调用。 - 已有 job 用
resume,不再 generate。无 task_id 的 SUBMITTING 表示提交不确定,先查控制台;已确认失败也不自动重提。已下载且通过哈希校验的本地产物可恢复,不因远端任务过期而重复付费。旧.liveportrait.json仍由avatar resume兼容续查。
长音频分段与合并
每段均从同一条完整原声取窗口,避免累计 MP3 容器时长。--start、--duration 按解码 PCM 计时;按句边界选择窗口,原始说话时间不得裁掉。每段都要审片,再写一个有序 job 路径数组到工作区 manifest:
["segments/01.avatar.json", "segments/02.avatar.json"]
avatar generate --image /absolute/portrait.png --audio /absolute/locked.mp3 --start 0 --duration 5 --output /absolute/render/segments/01.mp4
avatar assemble --manifest /absolute/render/jobs.json --audio /absolute/locked.mp3 --output /absolute/render/presenter-all.mp4


