一台游戏电脑跑起来,自建 AI 机器人比 Alexa 懂人话

Discord 在过去几年成了玩家和各类爱好者社区的主要沟通平台。给服务器加一个机器人,几乎可以无限扩展功能,但代价也很明显:用户必须信任机器人运营方会妥善处理收集到的数据,对功能没有真正的控制权,而且这些机器人通常做得相当简单。

科技媒体 How-To Geek 编辑尼克·刘易斯给出的解法是:干脆自己写一个,全部跑在自家的游戏电脑上。起因是一位朋友花了大约 5 分钟吐槽某个机器人有多没用,他随即接下了这个活。

关键不是语音识别,是中间那层「意图翻译」

项目启动时,所有人最想要的功能是语音控制——不用敲任何斜杠命令,就能播放和控制音乐。

为此,刘易斯先用参与者自己的声音训练了一个神经网络来识别唤醒词,又内置了若干作为常规斜杠命令运行的基础指令。语音转文字环节交给 faster-whisper 这个语音识别库处理,转出的文本再被送去触发各类命令。

但按他的说法,真正的巧妙之处在意图层。一个小体量的模型 llama3.2:3b 负责把松散的口语转换成固定的命令集合。这意味着说一句「随便换换」,效果和规规矩矩说出「随机播放」完全一样。刘易斯认为,这正是「一个用起来很直觉的人工智能」和「一个用起来极其别扭的人工智能」之间的分界线。

延迟问题则用流式语音合成解决。基于 Kokoro-82M 的方案让机器人在大约两秒后就开始出声,此时更大的模型还在继续生成后面的内容。

从点歌到跑团笔记,功能堆到了几十个

语音输入跑通之后,刘易斯围绕本地媒体库搭建了完整的播放队列控制,包括随机、循环和调整曲目顺序。他还做了「氛围」模式:给出一段心情描述,机器人自行把它映射到对应的曲风和节奏区间。

音乐之外的功能同样不少。对话模式下,机器人会一直和人聊下去,直到被要求「别说了」为止。它支持检索增强生成,可以先摄入一份维基或一整套跑团战役笔记,之后直接用语音查询这个特定语料库。此外还能生成 SDXL 图像,并处理定时器、长期提醒、天气查询、掷骰子和信息订阅摘要等常规事务。

更复杂的功能依托 Qwen3 14B 运行,这让机器人可以就它「知道」的内容展开有实质内容的对话。刘易斯举的例子是《我的世界》:他把这款游戏及其模组的知识整理进数据库,此后就能像和一位比自己更懂游戏的朋友聊天那样,实时讨论合成配方和游戏机制。

按照他的计划,这个机器人的下一次亮相将是在一场桌面角色扮演战役中担任同伴角色——自己做决定、自己掷骰子,并理解自己正在扮演的那个「角色」。

让机器人自己写插件,目前还没完全跑通

刘易斯正在推进的最高目标,是让机器人自己编写新功能。

设想的流程是:用户提交一条命令、一个语法示例,以及相关接口的链接(如果需要的话);多块显卡随后汇聚算力,加载一个更大、更擅长编程的模型,尝试生成实现该功能的代码。

实际做起来并不顺利。他解释说,更大的模型更聪明,但也吃掉更多显存,可用的上下文空间因此被压缩,导致模型很难「搞清楚」该如何连接指定的接口。

到目前为止,机器人「差一点」成功写出了两个插件:一个根据邮政编码查询天气,另一个查询指定城市的时间。最终两者都需要他手工微调。不过他也发现了一条有效的补救路径——用体量稍小的模型去修那些「接近正确但还差一口气」的代码,效果反而不错。

同一套「大脑」,还能挪去做智能家居

用了几天之后,刘易斯意识到,没有什么能阻止他把这个 Discord 机器人的「大脑」直接搬去做一套完整的家庭助手。

原因在于架构:唤醒词检测器、命令意图解释器和大模型这几个组件都是独立运行的。这意味着这些服务、模型以及已经写好的命令都可以复用,不必从头再造一遍轮子。剩下要做的,只是补上几条对接 Home Assistant 的命令,并确保这些命令与 Discord 机器人完全隔离。完成之后,同一套系统就能用来讨论菜谱,或者用他自己的账号点餐。

刘易斯最后给出的建议是:如果一直想找个项目试试用自然语言指挥人工智能写代码,Discord 机器人是个很好的起点——风险低、文档完善,而且做出来是真能天天用上的东西。

来源:How-To Geek