构建一款无需手动操作的语音助手,可在树莓派上完全运行语音识别、本地语言模型和文本转语音功能
这是一个基于树莓派4或5构建的完全离线语音助手。你与它对话,它通过板子本地运行的语言模型进行思考,并通过扬声器回话。整个流程都运行在树莓派本身上,因此一旦设置完成,就完全不需要网络连接。我制作这个项目是因为希望能在自己家中使用一个真正值得信赖的设备,而从创客的角度来看,这确实是一个非常有趣的项目。
这个离线树莓派语音助手项目的作用
该设备在高阶上依次完成以下三项任务,全部在板载实现:
•当触发时,会录制几秒钟来自USB麦克风的音频。
•它使用 Whisper 将音频转换为文字,然后通过 Ollama 将文本传入本地语言模型,并获取书面回答。
•使用 Piper TTS 将答案转换为自然语音,并通过扬声器播放出来。
结果就是你桌面上一个小型盒子,能在大约十到二十秒内回答语音问题,而且从未将任何数据发送到远程服务器。这就像商业智能音箱所假装的那样,但实际上并非如此,因为商业产品所有的计算都在云端完成。
树莓派语音助手构建的硬件组件
这里不需要什么稀奇古怪的东西,这正是它的魅力所在。大部分材料制造商的抽屉里已经备有。
此表格列出了构建的核心部件及其大致功能。
组件
•树莓派 4 或 5
•MicroSD卡
•USB麦克风
•扬声器
•电源
最重要的规格是内存(RAM),因为它决定了你可以运行哪种语言模型。在2GB的树莓派上,你只能使用1B级别的模型,保持流畅运行;而4GB或更大的内存则可以升级到更大型号,从而在速度与回答智能程度之间取得明显平衡。
在软件方面,一切都开放且免费:使用 Raspberry Pi OS Bookworm 64 位系统,语言模型采用 Ollama,语音转文字使用 Whisper,语音交互则由 Piper 提供。初始下载阶段仅需网络连接,之后即可完全离线运行。
本地LLM如何在没有云服务的情况下运行于树莓派
最令人惊讶的是,现在居然能以如此低廉的价格在一块板子上运行一个真正的语言模型。Ollama 是让这一切变得轻松的工具——它和人们在笔记本电脑上使用的相同,运行在树莓派的 ARM 处理器上,无需显卡支持。你只需一次加载模型,之后它就能本地回答问题。
这种方案能在如此基础的硬件上运行,是因为这些模型在设计上就规模较小。一个1B级别的模型虽然无法为你写一篇完整的文章,但对语音助手而言,它已能很好地处理简短的问题和快速的事实查询,毕竟速度比性能更重要。如果你想了解哪些模型适配哪些主板,以及如何通过Ollama部署这些模型的详细信息,我之前在本系列文章的前一部分中,已经详细介绍了如何在树莓派上使用Ollama运行本地大语言模型。
这三个组件之间衔接得相当顺畅,但它们都在争夺有限的内存,这正是构建过程变得有趣的地方。
构建阶段及值得关注的问题
我不会假装这是一套即插即用的方案。以下是我在处理时所经历的主要阶段,按顺序列出:
•更新操作系统并安装 Ollama,然后拉取一个适合你内存大小的模型。
•设置并测试USB麦克风和扬声器,确保音频能够正常输入和输出。
•安装 Whisper 和 Piper 的 Python 模块,然后获取一个语音模型。
•将四个功能——记录、转录、提问模型、说话——整合成一个循环。
•可选添加唤醒词检测功能,实现免提操作。
导致我耗费大量时间的问题几乎全部出在音频和内存方面。我的麦克风以我未曾预料的采样格式录制,导致每次转录结果都为空;直到后来我才意识到录音本身没问题,真正的问题在于格式假设错误。同时一次性加载三个组件还让一块2GB的板卡达到了极限,因此需要提前配置一些预留空间才能保持稳定。此外,添加了始终监听唤醒词功能后,额外消耗了2GB树莓派几乎无法负担的内存。一旦了解这些情况,问题就不再那么棘手了,而把修复方案写在面前,也并非什么坏事。
在树莓派上自制离线语音助手的优缺点
诚实的权衡,因为只列出优点的项目页面并不值得太多重视:
•完全私密,无需网络即可使用,这正是建造它的全部原因。
•安装后无需花费任何费用,零件便宜且可重复使用。
•比任何商业助理都慢,处理时间需要十到二十秒。
•小型模型虽然有用,但无法完美区分事实与虚构,因此不要将其用于任何重要判断。
•Linux音频配置是最麻烦的部分,在开始享受乐趣之前,它会考验你的耐心。
对制作者而言,缓慢和粗糙的边缘与其说是缺陷,不如说是一种特征,因为你是在学习每个阶段如何运作,而不是直接购买一个黑箱。
接下来你可以为这个树莓派语音助手项目添加什么
一旦核心循环运行起来,这便成为进一步扩展的绝佳基础。一些可轻松实现的方向包括:免提唤醒词激活,通过语音即可触发;GPIO控制,使语音指令能切换真实灯光和继电器;配备小型视觉模型的摄像头,用于物体识别;由于Whisper支持数十种语言,因此具备多语言功能;以及3D打印外壳,可将其打造成一个完整的桌面设备。每个功能都复用了相同的本地处理流程,因此你永远不会失去该设备离线、私密的特性。
如果你想完全复制这个配置,包括音频格式标志、内存修复、每块主板的模型推荐以及唤醒词代码,完整的详细说明请参见我在RootSaid上发布的完整离线树莓派语音助手教程,其中包含Whisper和Piper TTS的设置。所有命令和配置值都保存在那里。
本文编译自hackster.io





