InfiniteTalk 实测:一张照片 + 一段语音,直接生成说话视频

0 阅读3分钟

前几天在找数字人方案,需求是把一段产品介绍的录音配上一个"真人讲解"的视频。以前这种活要么找真人拍,要么用那种很假的数字人工具,嘴型对不上看着难受。

然后发现了 InfiniteTalk 这个模型,试了一下,说实话效果比我预期好不少。

它能干什么

你给一张人像照片 + 一段音频,它生成一个这个人在"说话"的视频。唇形跟着音频走,头部和身体也会有自然的微动。最长能做 10 分钟。

不是那种嘴巴一张一合的粗糙效果,是真的能看出在说哪个字的那种同步程度。

跑起来

装 SDK,拿 Key:

pip install wavespeed

Key 在 wavespeed.ai/settings/api-keys 创建。准备两个文件:一张正面人像照,一段语音。

我用的这张照片: portrait_v2.jpg

from wavespeed import Client

client = Client(api_key="wsk_xxxxxxxx")

image_url = client.upload("./portrait.jpg")
audio_url = client.upload("./speech.mp3")

output = client.run(
    "wavespeed-ai/infinitetalk",
    {
        "image": image_url,
        "audio": audio_url,
        "resolution": "720p"
    },
    timeout=600.0
)

print(output["outputs"][0])

就这么多。端点 wavespeed-ai/infinitetalk,核心参数三个:image、audio、resolution。

four_frames.jpg

试了几种音频

先用了一段 30 秒的中文产品介绍,正常语速。唇形同步挺准的,头部会跟着语气有轻微的点头和偏转。生成等了大概 5 分钟,官方说每 1 秒视频需要 10-30 秒生成时间,差不多。

然后换了段英文试试——嗯,效果居然比中文好一点。官方文档也说了 prompt 建议用英文,估计训练数据英文占比更大。

最惊喜的是唱歌。纯粹好奇传了一段哼歌的音频上去,嘴型居然也能跟上。没有说话那么精准,但看着不违和,这个我没想到。

踩坑记录

prompt 参数坑了我一次。这个模型有个可选的 prompt,用来控制表情姿态。我一开始写了一大段中文描述,结果生成出来脸上全是噪点。后来看到官方文档写的:

Avoid writing too many prompts and the recommend language is English, otherwise the model will make analysis errors, resulting in noisy and unexpect videos.

改成简短英文 "natural head movements, subtle expressions" 就好了。或者干脆别写,让模型自己来。

另一个坑是 mask_image。如果照片里有多个人,可以用 mask 指定让谁说话。但我手贱把原图直接当 mask 传了进去——输出全黑。mask 应该只画你要动的那个人脸区域,别把整张图传进去。

还有就是音频质量。背景噪音大的录音,出来的唇形会乱。建议先降噪再传。

生成时间也要注意,30 秒视频等 5 分钟,1 分钟的要等十几分钟。代码里 timeout 记得设大,默认值可能不够。

费用

480p 是 0.03/秒,720p翻倍0.03/秒,720p 翻倍 0.06/秒。最低收 5 秒的钱。

算下来 1 分钟 720p 大概 $3.6,约 25 块人民币。比找真人拍便宜太多了。但如果一天要出几十条,成本也不低,可以考虑用 480p 省一半。

什么时候用它

我觉得最合适的场景是产品介绍和教学视频——不想露脸或者没时间拍的时候,传张照片配上录音就行。做多语言版本也方便,同一张照片配不同语言的音频就能出不同语言的视频。

但别指望它做大幅度的肢体动作,它主要是头部和面部在动,身体动作很小。侧脸照片效果也不好,正面或者微侧最佳。


模型文档:wavespeed.ai/models/wave…
SDK:github.com/WaveSpeedAI…