12.4 测试与发布(视频混剪智能体开发)

发布时间:2026/7/21 9:47:18

12.4 测试与发布(视频混剪智能体开发)
《扣子编程从零开始搭建智能体 卢欣欣 清华大学出版社》【摘要 书评 试读】- 京东图书《扣子编程从零开始搭建智能体》全书案例分享~-CSDN博客 已完成完成以上各项配置后为确保智能体的交付质量进行系统功能测试。在“预览与调试”对话框中发送“你好啊”进行智能体引导测试测试结果如图12-41所示。图12-41 智能体引导测试按照系统引导提示输入主题和背景音乐风格后智能体开始调用已绑定的工作流。测试结果如图12-42所示。图12-42 输入完整信息后的测试结果经过多轮测试无误后单击智能体编排页面右上角的“发布”按钮按照系统引导完成智能体的发布与部署复制并分享智能体链接给用户使用。12.5拓展提升增加朗读音频前文构建的视频混剪智能体仅添加了背景音乐本节将在此基础上进一步引入朗读音频效果。其实现思路为在批处理生成图片阶段同步批量生成各段文本对应的朗读音频并根据每段音频的时长精准设定对应图片的过渡时长以确保音画严格同步。在混剪阶段首先需将各段分散的朗读音频拼接为一份完整的音频文件随后将其与背景音乐进行叠加处理生成最终的完整音频最后将该音频与生成的图片视频进行合成。优化后的工作流全貌如图12-43所示。图12-43 增加朗读音频后的工作流全貌1.合成语音步骤1添加合成语音插件。在批处理节点内部“图像生成”节点的下游添加一个插件节点。在插件市场搜索“语音”关键字找到扣子官方提供的语音合成插件并添加“speech_synthesis”工具如图12-44所示。图12-44 添加语音合成插件添加语音合成插件后的批处理体节点如图12-45所示。图12-45 批处理体步骤2配置输入参数。选中合成语音插件为文本参数“text”绑定“批处理”节点默认迭代变量Item下的text变量拆分后的文案文本为音色ID参数voice_id选择一种合适的音色如奶气萌娃参数配置如图12-46所示。图12-46 合成语音插件的输入配置步骤3配置批处理的输出参数。为“批处理”节点新增一个名为“voice_list” 的输出参数并绑定“合成语音”节点的输出变量data以便返回合成后的语音文件地址。如图12-47所示。图12-47 批处理节点的输出配置2.修改原转换图片数据格式的代码节点原有代码节点主要用于完成图片数据格式的转换。增加音频后批处理节点返回的音频数据为对象类型的数组同样需要将其转换为仅包含音频地址的字符串数组用于后续拼接朗读音频时使用同时还需根据音频时长动态调整图片的显示时长以实现音画同步。具体步骤如下。步骤1增加输入参数。在该代码节点的输入参数中新增一个名为“voices”的参数并绑定“批处理”节点的输出变量voice_list如图12-48所示。图12-48 代码节点的输入配置步骤2修改原有代码。在原有代码的基础上增加音频地址的提取逻辑并根据“合成语音”插件节点返回的音频时长参数duration设置对应图片的显示时长。修改后的代码如下。async def main(args: Args) - Output:#获取输入参数params args.paramsurl_list params.get(pics, [])voice_list params.get(voices, [])#防御性检查确保两个列表长度一致if len(url_list) ! len(voice_list):raise ValueError(fpics和voices的数量不匹配pics: {len(url_list)}, voices: {len(voice_list)})#定义循环动画类型anim_types [move_up, move_down, move_left, move_right, zoom_in, zoom_out]#生成图片列表并计算真实总时长image_list []audio_links []total_duration 0for idx, url in enumerate(url_list):#获取当前语音时长并累加到总时长current_duration voice_list[idx].get(duration, 3)current_link voice_list[idx].get(link, )#累加总时长total_duration current_durationimage_list.append({source: url,duration: current_duration,animation_type: anim_types[idx % len(anim_types)],animation_in: 0,animation_out: 2})#将音频地址追加到数组中audio_links.append(current_link)#构建符合规范的输出对象ret: Output {image_list: image_list,total_duration: total_duration,audio_links: audio_links}return ret步骤3增加输出参数。在输出参数中新增一个名为“audio_links”的参数变量类型选择ArrayString如图12-49所示。图12-49 代码节点的输出配置3.拼接朗读音频在批处理中生成的是与分段文案对应的零散朗读音频前序步骤已利用其时长控制图片显示。而在后续视频混剪时需要将分段朗读音频拼接为一个完整的音频文件具体操作如下。步骤1添加音频拼接节点。在原有“图片转视频”节点之后增加一个“视频剪辑工具”插件中的“concat_videos”工具添加方法同12.3.1节图片转视频中的步骤1。步骤2配置输入参数。在参数配置面板中为输入参数“videos”绑定前文“代码”节点的输出变量audio_links其余参数暂不配置如图12-50所示。图12-50 concat_videos接口的输入参数4.音频叠加为使朗读音频与背景音乐同时播放实现混音效果需对拼接后的朗读音频和背景音乐进行叠加处理。而音频叠加插件要求传入的参数为包含音频地址的字符串数组因此需要先将朗读音频地址与背景音乐地址合并至同一数组中。具体操作步骤如下。步骤1处理音频地址。在原有剪辑BGM节点的下游添加一个代码节点。步骤2配置输入参数。为该代码节点设置“String1”和“String2”两个输入参数分别绑定“剪辑BGM”节点的输出变量url和“拼接朗读音频文件”节点的输出变量url如图12-51所示。图12-51 代码节点的输入参数步骤3编写代码。进入代码编辑模式选择“Python语言”将输入的两个字符串整合至数组“result_array”中代码如下。async def main(args: Args) - Output:params args.params#获取输入的两个字符串str1 params.get(string1, )str2 params.get(string2, )#将两个字符串直接放入一个列表中数组merged_array [str1, str2]#返回结果ret: Output {result_array: merged_array}return ret步骤4配置输出参数。为该代码节点设置一个与代码返回值同名的输出参数“result_array”类型选择ArrayString如图12-52所示。图12-52 代码节点的输出参数步骤5添加音频叠加插件。参照前述方法在代码节点的下游添加一个“视频剪辑工具”插件中的“audio_mix”工具用于执行音频叠加。步骤6设置输入参数。选择该插件节点为输入参数“audios”绑定步骤1添加的“代码”节点的输出参数result_array如图12-53所示。图12-53 插件节点的输入参数5.音视频合成最后将原有音视频合成插件节点的输入参数“audio”绑定至音频叠加插件的输出参数url混音后的音频文件其他配置保持不变如图12-54所示。图12-54 音视频合成节点的输入参数至此增加朗读音频功能已全部配置完毕再次进行测试与发布即可生效。读者也可在此基础上尝试增加字幕功能。

相关新闻

(一)OpenDriveVLA 环境部署与推理实践

(一)OpenDriveVLA 环境部署与推理实践

2026/7/21 9:47:18

前言 OpenDriveVLA 是当前自动驾驶领域最受关注的视觉语言动作(Vision-Language-Action)模型之一,基于 Qwen2.5 系列大模型构建,能够直接从多模态输入(图像、文本指令)输出端到端的驾驶轨迹。 本文将带你从…

使用OpenCore Legacy Patcher让老款Mac运行最新macOS

使用OpenCore Legacy Patcher让老款Mac运行最新macOS

2026/7/21 9:47:18

1. 项目背景与核心价值 作为一名长期使用Mac设备的开发者,我深知苹果官方对老款Mac设备的支持周期通常只有5-7年。当我的2012款MacBook Pro被官方宣布不再支持macOS Ventura时,OpenCore Legacy Patcher(OCLP)这个开源项目为我打开…

DyberPet:让二次元伙伴“住“进你桌面的开源框架

DyberPet:让二次元伙伴“住“进你桌面的开源框架

2026/7/21 9:47:18

DyberPet:让二次元伙伴"住"进你桌面的开源框架 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 你是否曾幻想过,最喜欢的动漫角色能够跳出屏幕&a…

React-Blog:如何实现文件上传与管理功能

React-Blog:如何实现文件上传与管理功能

2026/7/21 18:27:47

React-Blog:如何实现文件上传与管理功能 【免费下载链接】react-blog react hooks koa2 sequelize mysql 构建的个人博客。具备评论、通知、上传文章等等功能 项目地址: https://gitcode.com/gh_mirrors/rea/react-blog React-Blog是一个基于react hooks…

多智能体协作的5种工作流模式:从网络到混合

多智能体协作的5种工作流模式:从网络到混合

2026/7/21 18:27:47

引言:工作流决定协作效率 从单智能体到多智能体系统,不仅是数量上的增加,更是协作模式的质变。正如微服务架构将单体应用拆分为独立服务一样,多智能体系统将复杂任务分解为由多个专门agent协作完成的过程。而agent之间如何通信、协调、分工,直接决定了系统的可扩展性、可…

HMSPush与Magisk模块集成:将HMS Core转为系统应用的完整指南

HMSPush与Magisk模块集成:将HMS Core转为系统应用的完整指南

2026/7/21 18:27:47

HMSPush与Magisk模块集成:将HMS Core转为系统应用的完整指南 【免费下载链接】HMSPush 让非华为设备支持 HMS 推送,同时避免唤醒目标应用 项目地址: https://gitcode.com/gh_mirrors/hm/HMSPush 想要在非华为设备上获得完美的HMS推送体验吗&#…

Kubedog 入门教程:5 分钟快速掌握 Kubernetes 资源跟踪神器

Kubedog 入门教程:5 分钟快速掌握 Kubernetes 资源跟踪神器

2026/7/21 18:27:47

Kubedog 入门教程:5 分钟快速掌握 Kubernetes 资源跟踪神器 【免费下载链接】kubedog Library to watch and follow kubernetes resources in CI/CD deploy pipelines 项目地址: https://gitcode.com/gh_mirrors/ku/kubedog 你是否曾在 CI/CD 部署过程中为监…

【小程序毕业设计】民宿房源展示与订单管理系统(SSM) 基于 SSM 的民宿住宿服务运维小程序(源码+文档+远程调试,全bao定制等)

【小程序毕业设计】民宿房源展示与订单管理系统(SSM) 基于 SSM 的民宿住宿服务运维小程序(源码+文档+远程调试,全bao定制等)

2026/7/21 18:27:46

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

网盘不限速解析最新方案?直链下载助手pandownload拉满你的带宽

网盘不限速解析最新方案?直链下载助手pandownload拉满你的带宽

2026/7/21 18:17:46

每次急需从网盘取回一份几 GB 的设计素材或项目备份时,最让人头疼的往往不是文件本身,而是那层层叠叠的“门槛”。官方客户端动辄几百兆的安装包,强制登录的账号体系,再加上非会员用户被限制得几乎无法使用的下载速度,…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…