适用:C 方案(剥离静音视频 + 外部 TTS 配音)之后的「让口播音频对上人物嘴型」这一步。 结论一句话:优先用 fal.ai 的
fal-ai/sync-lipsync,它保原时长、保原分辨率、能跳过无脸帧(插画穿插段)。
reference_audio 上限 15s,30s 视频必须拆片 → 段间场景断裂、某段失败丢音频。| 模型 ID | 输入 | 时长/分辨率表现 | 适用性 |
|---|---|---|---|
fal-ai/sync-lipsync |
video_url + audio_url + model(lipsync-1.9.0-beta) + sync_mode |
✅ 原时长保留、原分辨率保留 | ⭐ 首选,最稳 |
fal-ai/latentsync |
video_url + audio_url (+loop_mode/seed/guidance_scale) |
≤40s($0.20/条) | ⚠️ 有人脸检测门槛,含无脸帧的视频会报 face_detection_error |
fal-ai/musetalk |
source_video_url + audio_url |
❌ 会把 30.6s 裁成 27.4s、分辨率改 606x1080 | ✗ 裁尾句、质量差,弃用 |
fal-ai/wav2lip |
(video_url + audio_url) |
未实跑 | 备用 |
fal-ai/omnihuman/v1.5、fal-ai/veed/fabric/avatar |
图片 + 音频 | — | ✗ 是"照片生成说话视频",重绘场景,不适用 |
选型经验(重要):视频里若混有无脸帧(卡通风插画穿插、产品特写、空镜),
No face detected 拒绝;另注:本项目的脸是 AI 生成数字人,检测器容易漏(LatentSync 就漏了),sync-lipsync 能识别。
import fal_client, requests, json
# 新版包名是 fal_client(不是旧版 fal):pip install fal-client
# 凭据走环境变量 FAL_KEY="KEY_ID:SECRET"
video_url = fal_client.upload_file("input.mp4") # ⚠️ 路径/文件名必须纯 ASCII
audio_url = fal_client.upload_file("v4_16k.wav")
result = fal_client.subscribe(
"fal-ai/sync-lipsync",
{"video_url": video_url, "audio_url": audio_url,
"model": "lipsync-1.9.0-beta", "sync_mode": "cut_off"},
with_logs=True,
)
url = result["video"]["url"]
open("out.mp4", "wb").write(requests.get(url, timeout=600).content)
通用脚本:去角质频率/fal_lipsync.py <model_id> <out.mp4> [video] [audio]
# 视频:统一到 25fps(MuseTalk/LatentSync 训练帧率),如需可冻结末帧补齐时长
ffmpeg -y -i 静音成片.mp4 -vf "fps=25" -c:v libx264 -pix_fmt yuv420p -an input.mp4
# 音频:转 16kHz 单声道(编码器标准输入)
ffmpeg -y -i 配音.wav -ar 16000 -ac 1 v4_16k.wav
'ascii' codec can't encode ... → SDK 回退 gcs → Invalid storage type。改 v4_16k.wav 即可。fal_client,不是 fal。403 {"detail":"User is locked. Reason: TOP_UP."} = fal 账号需充值/绑卡,非 key 格式问题。curl -s -o /dev/null -w "%{http_code}" https://fal.run/<model> -H "Authorization: Key $KEY" -H "Content-Type: application/json" -X POST -d '{}' → 422=端点正常(参数校验失败),403=账号/key 问题。https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=<url-encoded model id>(带 Authorization: Key)。