最近在玩 Sora,大家应该都注意到了,Sora 现在对于角色一致性的支持是越来越好了。特别是那个创建角色返回 Id,以后通过 @Id 就能直接召唤特定角色的功能,简直是长视频创作者的福音。
但是,解决“长相”一致性之后,我发现另一个大坑:声音一致性。
你生成的视频,画面里的人是同一个,但上一秒还是萝莉音,下一秒可能就变成了御姐音,这就很出戏。虽然官方说在视频中增加声音可以改善,但我最近突发奇想,琢磨了一个“骚操作”流程,感觉理论上能行,想发出来和大家探讨一下。
Sora 的逻辑是:你给它一段 3 秒左右的视频作为参考,它提取特征生成一个 Character ID。
我的猜想是: 如果这个参考视频里本身就带有特定的语音(TTS),Sora 在提取特征时,会不会把“声线”也作为该 ID 的一部分特征记录下来?
如果这个假设成立,那我们完全可以倒推一个工作流。
还没来得及实测(毕竟跑一次 Sora 成本也不低),先把这个 Workflow 分享出来,有条件的朋友可以试试:
先用 Banana(或者你习惯的任何生图工具)跑一张高质量的角色形象图。这一步是为了定好“脸”。
我们要把这张静图变成一个 3-5 秒的视频。Sora 创建角色需要视频输入。 这里最简单的办法是用 FFmpeg 把图片拉长,但最好稍微加一点点动态(比如轻微的运镜),不然全是静止帧我怕 Sora 判定权重不高。
找一个你喜欢的 TTS 模型(比如 GPT-SoVITS 或者 11Labs),生成一段 3-5 秒的干音。这段声音就是你未来想让这个角色一直保持的“声线”。
利用 FFmpeg 把画面和TTS 语音合成为一个 MP4 文件。
简单写了个伪代码命令大概是这样:
ffmpeg -loop 1 -i character_image.png -i tts_audio.wav -c:v libx264 -t 3 -c:a aac -b:a 192k -pix_fmt yuv420p sora_seed_video.mp4
这样你就得到了一个:长着你要的脸 + 说着你要的声音 的 3 秒视频。
把这个 sora_seed_video.mp4 丢给 Sora,选择创建角色。 Sora 会吐给你一个类似于 user_123xyz 的 ID。
在后续的 Prompt 中,直接使用 @user_123xyz talking about AI...。 关键点来了: 观察生成出来的新视频,是否自动继承了种子视频里的那个 TTS 声线?
目前的许多多模态模型,在处理 Video-to-Video 或者 Character Reference 时,不仅是在看像素,也是在听频谱。如果 Sora 的 Character ID 机制是基于 Embedding 的,那么它很有可能把 Audio Embedding 也一起打包存进去了。
如果这个路子走得通,那以后做连续剧就爽多了:
用 Banana 定脸。
用 TTS 定音。
打包成“种子”。
Sora 一键调用。
目前这还是个纯脑洞,还没来得及去跑通最后的验证环节。不知道社区里有没有大佬已经试过类似路子的?或者有没有碰到过“参考视频里有杂音,导致生成出来的视频也一直带杂音”的情况?如果有,那反向证明这招绝对好使!
欢迎评论区交流测试结果,我去搞那个 FFmpeg 脚本去了 👋。
Tags: #Sora #AI视频 #技术脑洞 #FFmpeg #角色一致性