免费的全模态Agnes API 实战系列(三):多角色对话视频生成——让同一画面的不同人物开口说话

发布时间:2026/6/26 10:09:15
免费的全模态Agnes API 实战系列(三):多角色对话视频生成——让同一画面的不同人物开口说话 前言在前两篇文章中我们介绍了Agnes AI API的基础用法和提示词编写技巧。本篇将聚焦一个更具挑战性的场景如何让同一画面中的不同角色分别开口说话。这个需求在制作对话场景、角色互动视频时非常常见但在AI视频生成中却是一个技术难点。我们将通过实际测试展示如何编写提示词、如何选择语音参数并分享在测试过程中发现的优化技巧。一、问题背景为什么多角色对话这么难在AI视频生成中让单个角色说话已经不容易要让同一画面中的多个角色分别开口说话面临的挑战包括只有部分角色说话模型倾向于让主要角色说话其他角色静止口型不同步说话角色的嘴部动作不自然语音混乱分不清是谁在说话或者用了错误的语言角色特征丢失为了生成对话模型重新绘制了角色导致形象不一致在我们的测试项目中一张包含祖孙四代的家族肖像这些问题逐一出现并通过迭代优化逐步解决。二、初次测试为什么只有一个人说话2.1 测试设置我们使用一张家族肖像图包含青年男子、中年女子、老年男子、小女孩测试让每个角色分别开口说话。初始提示词错误示范让画面左边的中年女子说你好结果4个视频中只有第4个小女孩正确说话前3个角色都没有开口。2.2 问题分析通过多次测试我们发现了两个关键问题问题1位置描述不准确模型不理解左边、右边这样的位置描述特别是当画面中有多个相似角色时。问题2缺少嘴部动作描述即使模型理解了要让谁说话如果没有明确描述嘴在动生成的结果往往是角色静止或者只有轻微的面部表情变化。三、优化方案如何让指定角色开口说话3.1 优化1用服装特征代替位置描述核心思路不使用左边、右边等位置词而是用服装、外观特征来指定角色。优化后提示词让身穿白色T恤的青年男子说你好 他正在说话嘴在动。原理服装特征白色T恤、红色连衣裙、灰色西装等比位置描述更明确模型能更准确地识别要动画化哪个角色3.2 优化2明确描述嘴部动作在提示词中加入**“嘴在动”、“正在说话”**等描述强制模型生成嘴部动画。提示词模板[角色特征描述] [对话内容] 他/她正在说话嘴在动3.3 优化3用括号指定语言在视频生成中可以用括号强制指定说话语言用中文说你好实测效果✅ 有效角色会用中文发音而不是随机语言。3.4 完整优化提示词最终版让身穿白色T恤的青年男子说用中文说你好 他正在说话他的嘴在动。 青年男子的声音年轻男性的声音。 NO English speech.关键要素✅ 用服装特征指定角色✅ 用括号指定语言✅ 明确描述嘴部动作✅ 指定声音特征年龄、性别✅ 用NO [语言]防止混入其他语言四、实测效果四代同堂对话视频4.1 测试设置输入图片家族肖像青年男子、中年女子、老年男子、小女孩目标让每个角色分别开口说话4.2 优化前v1—— 只有1/4成功角色提示词结果青年男子“让画面左边的青年男子说…”❌ 没说话中年女子“让画面中间的中年女子说…”❌ 没说话老年男子“让画面右边的老年男子说…”❌ 没说话小女孩“让画面左下方的小女孩说…”✅ 说话了问题位置描述不准确模型无法识别目标角色。4.3 优化后v2—— 3/4成功角色提示词结果青年男子“让身穿白色T恤的青年男子说…” “嘴在动”✅ 说话了img2vid_v2_1_young_man| 中年女子 | “让身穿红色连衣裙的中年女子说…” “嘴在动” | ✅ 说话了 |img2vid_v2_2_middle_woman| 老年男子 | “让身穿灰色西装的老年男子说…” “嘴在动” | ❌ 没说话 |img2vid_1_young_man| 小女孩 | “让身穿粉色裙子的小女孩说…” “嘴在动” | ✅ 说话了 |img2vid_4_young_girl改进用服装特征指定角色3/4成功。剩余问题老年男子仍然没说话。分析原图发现老年男子的灰色西装在画面中不够突出模型可能误识别了其他角色。4.4 最终版v3—— 4/4全部成功针对老年男子进一步优化提示词让画面中头发花白、身穿深灰色上衣的老年男子说 用中文说你好 他正在说话他的嘴在动。 老年男性的声音低沉的嗓音。 NO English speech.结果✅ 老年男子也开口说话了关键改进不只描述服装还加入了头发花白这一外貌特征指定了低沉的嗓音帮助模型选择正确的音色img2vid_v3_3_elderly五、语音参数与音色选择5.1 Agnes API的语音参数在Agnes API中语音是通过提示词来控制的而不是单独的API参数。这意味着您需要在prompt中描述期望的音色。支持的音色描述年龄年轻、中年、老年性别男性、女性音色特点低沉、清脆、沙哑、温和等5.2 实测音色效果我们测试了8种不同音色以下是结果总结音色描述提示词关键词效果年轻男性“青年男子的声音”✅ 清晰有活力中年男性“中年男性的声音”✅ 稳重成熟老年男性“老年男性的声音低沉的嗓音”✅ 沙哑有质感小男孩“小男孩的声音清脆”✅ 高亢稚嫩年轻女性“年轻女性的声音”✅ 清亮柔和中年女性“中年女性的声音温和”✅ 沉稳亲切老年女性“老年女性的声音沙哑”✅ 沧桑有故事感小女孩“小女孩的声音甜美”✅ 可爱高亢5.3 中英文混合对话如果希望角色说中文但背景音或字幕是英文可以在提示词中明确指定用中文说你好 Chinese dialogue, (用中文说你好 NO English speech.注意实测发现加入NO English speech可以有效防止模型混入英文发音。六、多角色对话的高级技巧6.1 让两个角色对话如果想要两个角色一问一答可以在提示词中描述对话顺序青年男子先说用中文说你最近好吗 然后中年女子回答用中文说我很好谢谢 青年男子的嘴先动然后中年女子的嘴动。注意目前Agnes API的视频生成是一次性生成整个片段无法做真正的轮播对话。上述提示词的效果取决于模型是否能理解先…然后…的时间顺序。6.2 口型同步优化如果发现口型不同步或不自然可以尝试加入mouth is moving naturallyHis mouth is moving naturally, lip sync with the dialogue.指定对话速度Speaking slowly and clearly, mouth moving with each word.避免过长对话建议单条对话不超过10个字/词过长对话容易导致口型不同步6.3 多角色场景的Prompt模板[指定角色]: 用[服装/外貌特征]描述不要用位置 [对话内容]: 用括号指定语言如用中文说... [动作描述]: 他/她正在说话嘴在动 [音色描述]: [年龄] [性别] [音色特点] [负面约束]: NO [不需要的语言] speech完整示例让身穿白色T恤的青年男子说 用中文说你好 他正在说话他的嘴在动。 青年男子的声音年轻男性的声音清晰的嗓音。 NO English speech.七、完整测试代码以下是一个完整的测试脚本展示如何让同一画面中的不同角色开口说话fromopenaiimportOpenAIimportrequestsimporttime clientOpenAI(api_keyYOUR_API_KEY,base_urlhttps://apihub.agnes-ai.com/v1)# 家族肖像图包含4个角色image_urlhttps://.../family_portrait.png# 测试4个角色分别说话test_cases[{role:青年男子,prompt:(The young man in the white T-shirt says: 用中文说你好 He is speaking, his mouth is moving. Young male voice, clear tone. NO English speech.)},{role:中年女子,prompt:(The middle-aged woman in the red dress says: 用中文说你好 She is speaking, her mouth is moving. Middle-aged female voice, gentle tone. NO English speech.)},{role:老年男子,prompt:(The elderly man with gray hair in the dark gray jacket says: 用中文说你好 He is speaking, his mouth is moving. Old male voice, deep tone. NO English speech.)},{role:小女孩,prompt:(The little girl in the pink dress says: 用中文说你好 She is speaking, her mouth is moving. Little girl voice, sweet tone. NO English speech.)}]fori,testinenumerate(test_cases,1):print(f 测试{i}:{test[role]})# 创建视频任务responseclient.videos.generate(modelagnes-video-v2.0,prompttest[prompt],height768,width1152,num_frames81,# 约3.4秒frame_rate24,extra_body{image:image_url# 单张参考图})video_idresponse.data[0].idprint(f任务ID:{video_id})# 轮询状态whileTrue:resultrequests.get(fhttps://apihub.agnes-ai.com/agnesapi?video_id{video_id},headers{Authorization:fBearer YOUR_API_KEY}).json()ifresult[status]completed:video_urlresult[video_url]print(f✅ 完成视频:{video_url})breakelifresult[status]failed:print(f❌ 失败:{result.get(error)})breaktime.sleep(10)print()八、总结与最佳实践8.1 关键要点指定角色用服装/外貌特征不要用左边、“右边”嘴部动作必须明确描述正在说话嘴在动语言控制用用中文说括号法加NO [语言] speech音色选择在提示词中描述年龄、性别、音色特点对话长度单次对话不超过10个字避免口型不同步8.2 推荐工作流准备参考图包含多个角色 → 分析每个角色的服装/外貌特征 → 编写优化的提示词用特征描述嘴部动作语言指定 → 逐个测试每个角色 → 对失败的角色补充更多特征描述 → 完成多角色对话视频8.3 常见问题排查问题可能原因解决方案只有部分角色说话位置描述不准确改用服装/外貌特征描述嘴部不动缺少嘴部动作描述加入嘴在动、“mouth is moving”说了错误的语言模型随机选择了语言用括号法NO [语言]约束口型不同步对话过长缩短对话加入speaking slowly音色不对缺少音色描述在提示词中明确描述年龄、性别、音色九、下一步探索真正的轮播对话目前需要多次生成再剪辑未来可能支持单次生成多轮对话唇形同步精度测试不同模型版本的口型准确度情感表达让角色在说话时加入情感微笑、皱眉等背景音配配为对话场景添加合适的背景音乐和音效附录提示词模板库模板1单角色说话让[服装/外貌特征]的[角色]说 用[语言]说[对话内容] 他/她正在说话嘴在动。 [年龄][性别][音色特点]的声音。 NO [不需要的语言] speech.模板2多角色对话需多次生成# 第1次生成角色A说话 让[角色A特征]说用中文说[对话A] 他/她正在说话嘴在动。 NO [不需要的语言] speech. # 第2次生成角色B说话 让[角色B特征]说用中文说[对话B] 他/她正在说话嘴在动。 NO [不需要的语言] speech.模板3指定音色声音描述关键词 - 年轻男性young male voice, clear tone, energetic - 中年男性middle-aged male voice, steady tone, mature - 老年男性old male voice, deep tone, raspy - 年轻女性young female voice, bright tone, soft - 小女孩little girl voice, sweet tone, high-pitched系列文章回顾第一篇Agnes AI 全模态 API 免费实测报告文生图 文生视频完整测试第二篇Agnes AI API 视频排队20分钟变80秒秘籍第三篇多角色对话视频生成——让同一画面的不同人物开口说话相关资源Agnes AI官网https://platform.agnes-ai.comAPI文档https://apihub.agnes-ai.com/docs免费API Key获取https://platform.agnes-ai.com如果本文对您有帮助欢迎点赞、收藏、关注下一篇我们将探讨如何使用Agnes API生成更长、更复杂的对话场景。