高端显卡在运行大语言模型时,尤其是在对精度和性能有要求的生产力场景中,堪称不二之选。但对于简单的推理任务,是否也必须依赖如此强大的硬件?这个问题,直到我亲手用树莓派搭建了一台用于托管语言模型的工作站,才真正找到了答案。实际上,在此之前,我曾在完全没有GPU直通配置的虚拟机上运行过基础的文本转语音和语音转文本模型,而且推理效果出人意料地好。这种在资源受限环境中得到的正向反馈,不断催生着新的想法。于是,一个颇为大胆的念头浮现出来:既然最基础的组件已经能在轻量级虚拟环境中跑通,那么能不能更进一步,用一块树莓派5作为全部算力核心,去搭建一个完全本地运行的语音助手工作流?

为了把这个想法落到实处,我首先需要确定一个能够充当中枢大脑的大语言模型服务框架。我的选择是llama.cpp。这个框架在ARM架构的单板设备上有着出色的优化表现,可以最大程度地压榨出树莓派的推理性能。考虑到树莓派这类ARM单板计算机的硬件规格相对有限,从操作系统这一层开始就要尽可能减少性能开销。因此,我没有选择包含桌面环境的标准版本,而是采用了树莓派操作系统的精简版。这个版本去掉了图形用户界面以及众多非核心组件,既避免了额外的资源占用,又不会像某些极致轻量化的Linux发行版那样,因为组件过于精简而带来潜在的兼容性问题。在模型托管工具的选择上,我一开始确实想到了Ollama,它在过去的使用体验中非常方便。但正是这个“方便”,会在树莓派这种性能紧张的设备上引入一层额外的性能损耗。最终,我决定采取更为极致的方案——在单板机上手动编译llama.cpp,直接从源头控制每一分算力的使用效率。

打开网易新闻 查看精彩图片

在部署过程中,我一度被llama.cpp服务器模式中提供的远程过程调用特性所吸引,考虑过让另一块单板设备通过局域网连入树莓派,形成一个微型推理集群,从而让总体可用内存翻倍,得以运行参数规模更大的模型。不过,这个想法很快就遇到了现实的阻碍。我之前尝试过类似的集群方案,结果发现单板机上那慢速的局域网传输延迟,会严重拖慢分布式推理的整体速度。在计算落地的过程中,网络吞吐成为了最窄的那道瓶颈。权衡之下,放弃联网集群方案的直接后果就是:我能加载的模型参数量存在着明确的上限,无论如何都不能超过50亿到60亿这一门槛,再往上就超出了树莓派5的8GB内存所能承受的范围。

有了这个硬件限制,模型选型就必须慎之又慎。我最初心仪的候选者是Gemma 4 E4B,这个模型曾经在另一个树莓派项目中救过急,它的边缘推理能力给我留下了深刻印象。然而,即便我能够把这样一个能力惊人的边缘大模型成功塞进树莓派,实际运行中它的令牌生成速度也只能勉强踩在每秒2到3个令牌这样一条线上。对于文字对话场景,这个速度或许还能接受,但作为语音助手,每一次回答的生成延迟会被成倍放大,用户的对话流畅感会被彻底破坏。因此,我必须退而求其次,把目光投向参数规模更小但运行速度更快的模型。最终,我选择了Qwen3.5-2B。这个20亿参数级别的模型在树莓派上的推理速度远超Gemma 4 E4B,更难能可贵的是,它在保持高速度的同时,并没有陷入许多同参数量级小型模型常见的严重幻觉问题。换句话说,它是在我现有硬件约束下,同时满足“快”和“准”这两个关键指标的折中选择。

光是有一个能生成文本的大语言模型还不够。要让语音助手能够“听懂”我说的话,需要在输入端接入一个语音转文本模块,把我发出的声音信号转换成大语言模型可以处理的文字指令。而在输出端,还需要一个文本转语音模块,负责将模型生成的文字答案再还原成为人耳能够辨别的语音信号。这样一来,一条完整的语音交互管线就包含语音转文本、大语言模型推理以及文本转语音三个必要环节。为了端到端地跑通这条管线,我选择了Speeches这个项目来提供前后两端的语音模型。它的部署过程也相当直接,没有遇到什么预料之外的沟坎,很快就与llama.cpp驱动下的Qwen3.5-2B形成了协同。

把所有这些组件串联起来的控制中枢,我计划采用Open WebUI。为了能够在Open WebUI的界面里直接调用语音服务,我所采用的语音转文本和文本转语音模型,必须具备兼容OpenAI应用程序接口的能力。这样一来,整个语音助手的工作流就被统一在同一个交互界面之下:用户对着设备说话,树莓派上的语音识别模块实时将语音转为文字,紧接着文字流进入llama.cpp运行的Qwen3.5-2B模型进行语义理解与答案生成,生成的文本再无缝流转到文本转语音引擎,最终以语音的形式向用户输出回答。整个过程全部在树莓派5这一台单板机上完成,网络连接只用于最初的软件下载和配置,推理阶段完全是本地离线运行,信息不会离开这台巴掌大小的设备。

从整个项目的实施体验来看,在性能捉襟见肘的硬件上搭建本地语音助手,决策的关键不在于一味追求最高的模型参数量,而在于精细地权衡每一个环节的性能开销。从操作系统层面的精简,到模型服务框架的编译优化,再到轻量级语音模型的快速部署,每一个看似微小的选择,都在最终的交互流畅度上留下了痕迹。更重要的是,类似Speeches这种已经被证明能够在弱算力环境中稳定运行的语音处理模块,以及llama.cpp对ARM架构的深度支持,共同降低了在微型设备上实现端到端语音交互的技术门槛。这意味着,那些过去必须依赖云端调用或本地大型显卡才能实现的自然语言对话体验,正逐渐向更加普及、更加隐私友好的小型化边缘设备迁移。而一块售价不到一百美元的开发板,加上几个精心挑选的开源项目,就能让我对着空气开口问事、然后立即听到回答,这本身就是一件相当有发现感的事情。

(全文完)