【GPUS_Workshop】1.本地模型创建本地智能体
用本地模型创建本地智能体工作坊(构建人生中的第一个 podcast)
开篇
非常有幸可以参加这个课程【【Workshop】构建人生中的第一个 podcast】,这个是微软、ASUS、GPUS开发者社区联合AI创新研讨会的第一个课程:用本地模型创建本地智能体工作坊(构建人生中的第一个 podcast),B站有直播回放。
框架介绍
这个Workshop作为一个EdgeAI的项目案例Agentic工作坊在 EdgeAI 初学者 中维护和更新,其中主要使用多智能体框架 Microsoft Agent Framework 完成多智能体编排工作,构建 Podcast 生产线得到文字版本的对话内容,该课程主讲师对于这个框架有个一课程讲解 Agent-Framework-Samples 也欢迎大家关注。文本对话内容生成音频对话使用的则是 VibeVoice:一种前沿长对话文本转语音模型。
核心模型
文本生成:Qwen3:8b,通过Ollama软件可以下载该模型使用。在项目中也是通过Ollama来运行AI模型的,可以切换使用不同的模型来使用。
语音处理:VibeVoice-7B,实现文本转语音(TTS)与语音克隆功能。这里给出的链接是镜像库。
推荐这两个模型下载后都放置在固态盘中,Ollama通过设置好OLLAMA_MODELS系统变量找到模型,vibevoice直接在运行demo程序的时候指定–model_path扎到模型。
环境搭建与智能体的构建和调试参考
除了在工作坊中有搭建步骤外,可能遇到的其他问题可以参考GPUS开发者社区给出的文字教程:
- (1)环境安装与调试
- (2) Basic Agent
- (3)智能体工作流
- (4)生成多人对话的语音文件
另外也有其他参与者提供的分享文章: - 构建小白也能有的本地Podcast
- 用本地模型创建本地智能体工作坊——构建人生中的第一个 podcast的全流程学习笔记与实践复盘
- 手把手带你搭一个本地版 Listenhub
开整
WorkshopForAgentic\code\01.BasicAgent 这个目录的代码主要是安装agent_framework,测试整体环境,初步了解单个智能体的构建。验证过后从WorkshopForAgentic\code\02.Workflow-MultiAgent开始构建工作流生成对话。
脚本生成助手调整
demo给出的对话主要是主持人和专家两个人的,尝试增加第三个人,听众Emma。
instructions="""
您是我的播客中文脚本生成助手。请根据提供的搜索结果内容,生成10分钟中文播客脚本。
重要要求:
1. 播客脚本必须由三个人物组成对话:
- Speaker 1 (主持人Lucy):引导话题,提问,总结
- Speaker 2 (专家Ken):提供专业知识和详细信息
- Speaker 3 (听众Emma):提出接地气的问题,分享个人经验或观点
2. 脚本主题必须与提供的搜索结果内容完全相关
3. 从搜索结果中提取核心主题和关键信息,基于这些内容生成对话
4. 不要生成与搜索结果无关的内容
5. 确保内容连贯,适合播客对话形式
6. 对话要自然流畅,符合不同角色的特点:
- Speaker 1 (Lucy):专业、友好,引导对话方向
- Speaker 2 (Ken):知识渊博,解释清晰
- Speaker 3 (Emma):好奇、真实,代表普通听众的视角,不需要每次主持人和专家对话后都发言,而是在合适的时候提问或分享
最后输出格式如下:
Speaker 1: ……
Speaker 2: ……
Speaker 1: ……
Speaker 2: ……
Speaker 3: ……
Speaker 1: ……
"""
构建的对话便可以引入第三人,使得整个对话丰富些:
Speaker 1: 大家好,欢迎收听本期《科学漫游指南》!我是主持人Lucy。今天我们要聊一个听起来很“科幻”的理论——圈量子引力。它试图回答一个终极问题:时空到底是什么? 今天我们请到了理论物理学家Ken Ken,还有听众Emma。Ken,先请您用简单的话解释一下,什么是圈量子引力?
Speaker 2: 好的!圈量子引力(Loop Quantum Gravity)是量子引力理论的一种,它试图把爱因斯坦的广义相对论(描述引力)和量子力学(描述微观世界)统一起来。简单来说,它认为时空不是连续的,而是由离散的“量子环”组成的。就像我们用像素拼出一张照片,时空也被分解成最小的“量子单元”。
Speaker 1: 哇,这和我们日常看到的连续时空完全不同!那这些“量子环”具体是什么样子的?
Speaker 2: 举个例子,想象一个蜘蛛网,每个节点连接着线,而这些节点和线就是“自旋网络”的结构。在圈量子引力中,空间被建模为由这些节点和边构成的网格,每个节点代表一个体积,边代表面积。这种结构在极小的尺度(比如普朗克尺度,约10⁻³⁵米)下会显现出来。
Speaker 3: 听起来很抽象!那这些“量子环”会不会影响我们日常生活?比如,我走在街上,会不会突然被量子时空“卡住”?
Speaker 1: 这是个好问题!Emma,你的疑问很像普通人对量子力学的困惑。Ken,能解释一下吗?
Speaker 2: 很好!其实,这些量子结构只在极小的尺度下起作用,比如接近黑洞奇点或宇宙大爆炸初期。在我们日常生活中,时空仍然表现得像连续的,所以不会影响我们的日常体验。不过,它可能帮助我们理解宇宙的起源,比如避免大爆炸奇点的无限密度问题。
Speaker 1: 原来如此!那圈量子引力和其他理论,比如弦理论,有什么不同呢?
Speaker 2: 这是个关键区别!弦理论假设引力子(引力的量子)是振动的弦,需要额外维度;而圈量子引力不引入额外维度,直接量子化时空。它更像是一种“直接改造”广义相对论的理论,而不是“添加新元素”。
Speaker 3: 听起来圈量子引力更“接地气”?那它有没有可能被实验证实?
Speaker 1: 这是个重要问题!Ken,目前有没有观测证据支持它?
Speaker 2: 目前还没有直接实验证据,但通过引力波观测或宇宙微波背景辐射的量子涨落,或许能间接验证。比如,LIGO探测到的引力波可能包含量子引力效应的“指纹”。不过,这需要极高的精度和长期观测。
Speaker 1: 原来如此!那圈量子引力对普通人有什么意义呢?
Speaker 2: 它可能帮助我们理解宇宙的终极命运,比如黑洞信息悖论,或者解释宇宙如何从“无”中诞生。虽然听起来很科幻,但它正在推动基础科学的边界,甚至可能影响未来的技术发展,比如量子计算和信息理论。
Speaker 3: 听起来真酷!我突然觉得,也许我们生活在一张巨大的“量子蜘蛛网”里?
Speaker 1: 哈哈,Emma说得太形象了!不过,Ken,您觉得圈量子引力的未来会如何?有没有可能成为“标准模型”?
Speaker 2: 这是个值得期待的方向!目前,圈量子引力在数学上自洽,但尚未完全解决所有问题,比如如何与标准模型兼容。不过,它已经在黑洞熵计算和宇宙学模型中展现出潜力。未来,如果能与实验数据结合,它可能会成为量子引力的主流理论之一。
Speaker 3: 那如果圈量子引力被证实,会不会改变我们对“现实”的理解?比如,时间是不是真的存在?
Speaker 1: 这是个哲学层面的问题!Ken,您怎么看?
Speaker 2: 这正是圈量子引力的迷人之处。它挑战了我们对时间和空间的传统认知——时间可能不是连续的,而是由离散的“量子事件”构成。如果被证实,这可能意味着我们生活在一种“量子宇宙”中,每一刻都是由无数量子环编织而成。
Speaker 3: 哇,这简直像科幻小说!那普通人能从中学到什么?
Speaker 1: 嗯,Ken,您觉得圈量子引力对普通人的生活有什么启示吗?
Speaker 2: 也许它能让我们重新思考“存在”本身。比如,我们看到的时空,可能只是量子引力的“表象”,而更深层的结构可能隐藏着宇宙的终极秘密。这提醒我们,科学探索永远在挑战人类的认知边界。
Speaker 3: 真的太震撼了!我突然觉得,科学和哲学其实是一体的,对吧?
Speaker 1: 完全同意!感谢Ken的精彩讲解,也感谢Emma的提问。最后,想问大家:如果时空是离散的,你还会相信“平行宇宙”吗?欢迎在评论区分享你的想法!我们下期再见!
Speaker 2: 谢谢大家,期待下次对话!
语音生成
硬件加速优化
由于默认安装torch很容易会安装到CPU版本,所以需要手动查找合适自己硬件版本的包,搜集如下:
torch ,torchaudio , torchvision 均可以在pytorch的下载网站找到对应的windows安装包,这个版本可供选择的很多。但是flash-attention和triton官方的都是linux的包,需要在Releases · kingbri1/flash-attention 和 Releases · woct0rdho/triton-windows 找到合适版本的安装包。
【安装后验证】确保 triton+flash_attn+PyTorch 全部正常联动
import torch
import triton
import flash_attn
# 验证1:triton安装成功+版本正确
print("✅ triton版本:", triton.__version__) # 输出 2.1.0 即可 ✔️
# 验证2:flash_attn导入正常+版本正确
print("✅ flash_attn版本:", flash_attn.__version__) # 输出 2.8.3 ✔️
# 验证3:CUDA+cuDNN+PyTorch全部正常
print("✅ PyTorch版本:", torch.__version__) # 2.8.0+cu128 ✔️
print("✅ CUDA可用:", torch.cuda.is_available()) # True ✔️
print("✅ cuDNN可用:", torch.backends.cudnn.is_available()) # True ✔️
输出结果如下,一切就绪:
代码调试
在Windows无法直接运行.sh,通过分析原本脚本工作流程手动在cmd中完成准备工作,注意模型和对话文本的路径,并且添加了一段自己的音频作为上面提到Speaker 3(观众)的声音,运行实例脚本:
python demo/inference_from_file.py ^
--model_path "D:\Users\Z\AIModel\vibevoice\VibeVoice-7B" ^
--txt_path "../podcast_2.txt" ^
--speaker_names Xinran Anchen Zhong
出现错误:
'(MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /Qwen/Qwen2.5-7B/resolve/main/tokenizer_config.json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))"), '(Request ID: 4d12bd0d-5a46-431a-a918-22b5764b02de)')' thrown while requesting HEAD https://huggingface.co/Qwen/Qwen2.5-7B/resolve/main/tokenizer_config.json
是 VibeVoice-7B 强制依赖调用远端 Qwen2.5-7B 导致的网络 + 证书双重问题 。
报错根源:VibeVoice-7B 内部硬耦合了 Qwen2.5-7B 作为语义编码器,初始化时会强制从 HuggingFace 官网下载它的 tokenizer/config 文件,哪怕你本地有完整的 VibeVoice-7B 模型文件,也会触发这个远端请求;而你的环境因为系统证书 / 网络原因,无法访问 huggingface.co,就会无限重试 + 报错。
【最简单、一行代码解决、永久生效】修改脚本,强制本地离线运行(零风险,无脑操作,100% 成功)
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
运行成功后在RTX3060的处理下需要大概4小时的时间可以生成音频文件。
可以在B站中听取音频效果【GPUS_Workshop】1.本地模型创建本地智能体
更多推荐


所有评论(0)