乐于分享
好东西不私藏

本地 AI 语音助手:Ollama + Whisper + Edge TTS,笔记本变智能音箱

本地 AI 语音助手:Ollama + Whisper + Edge TTS,笔记本变智能音箱

最近一段时间,我一直想做一件事:在自己的笔记本上跑一个能说话的 AI 助手,不联网,不上传录音,问它什么它本地回答,然后用语音念给我听。

这个想法不算新,但能真正跑起来的方案一直很分散。直到我把 Ollama、Whisper 和 Edge TTS 这三个东西串在一起,才算搞清楚思路。今天把整个链路写出来,也把我踩过的坑讲清楚。


为什么想要本地语音助手

先说动机,不然后面讲方案没有依托。

我用过几个云端语音助手。体验是流畅的,但有几个问题挥之不去。

第一,录音会离开本地。你说的每一句话,都走了一条你不太清楚的路。对大多数场景这没关系,但如果你习惯在 AI 面前讲一些工作里的敏感想法,或者你本来就对数据流向很在意,云端方案总是让你不放心。

第二,长期调用成本。如果真的每天用语音问几十条,调用成本会慢慢累积起来。本地方案一次性把模型下载好,后续基本没有边际成本。

第三,离线可用。家里网络出问题、出差在外、或者就是不想依赖服务稳定性的时候,本地方案能保证你手边总有一个能用的东西。

这三点加在一起,对重度 AI 用户和愿意折腾链路的人来说,本地语音助手是值得花时间的方向。


三个组件各管什么

这套方案的分工很清晰,分成三层:

Whisper 负责听。 你说的话,首先要变成文字,这件事交给 Whisper。它是一个 end-to-end 的 Transformer 模型,专门做语音识别。训练数据量大、来源多样,在真实录音环境里的鲁棒性比很多同类工具强。输入音频先转成 log-Mel spectrogram 再走 encoder,最后输出转写文本。它还能识别你说的是哪种语言,中文转写直接支持。

Ollama 负责想。 转写出来的文字,发给本地运行的大模型。Ollama 提供了一个本地 HTTP 接口,默认跑在 http://localhost:11434/api,调用方式非常直接。比如官方文档里这条命令:

curl http://localhost:11434/api/generate -d '{  "model": "gemma4",  "prompt": "Why is the sky blue?"}'

模型在本地跑,回复也在本地生成,数据不出机器。对开发者来说接口不复杂,后续想接脚本、做桌面端、甚至接进网页,都有扩展空间。官方还提供 Python 和 JavaScript 库,调用更方便。

Edge TTS 负责说。 模型给出的文字回复,最后要变成语音播出来。这里用的是基于 Microsoft Edge Read Aloud API 的方案,在服务端运行稳定,能调节语音的音色、语速、音调、音量。效果比很多本地纯离线 TTS 方案自然一些,工程成本也不高,能快速得到可用的播报质量。

三层串起来的逻辑就是:你说话 → Whisper 转文字 → 文字发给 Ollama → 模型回复 → Edge TTS 念出来。


最小可用流程怎么搭

我建议用最少的步骤先跑通一个"单轮问答器"——按住说话、松开得到语音回复的那种,不做唤醒词,不做持续对话,不做界面。

四步走:

  1. 录音:用 Python 的 sounddevice 或 pyaudio 录一段语音,保存成音频文件。
  2. Whisper 转写:把音频文件喂给 Whisper,拿到转写文本。
  3. 发给 Ollama:把文本通过 /api/generate 接口发给本地模型,拿到文字回复。
  4. Edge TTS 播报:把回复文本送进 Edge TTS,播放出来。

每一步都可以单独测通,再连起来。关键是:先证明这条链路能跑,再去想怎么让它好看、让它常驻、让它支持多轮对话。

这套方案是一个可控的本地原型,不是现成的消费级智能音箱。它没有语音活动检测,没有唤醒词,没有联网升级,但它让你在自己的机器上掌控整条链路——这件事本身就有价值。


适合什么人,不适合什么人

适合做这件事的人:

  • 在意数据隐私,不想录音上传到云端的人。
  • 重度 AI 用户,想把长期调用成本压下来的人。
  • 有一定动手能力,愿意花时间把录音、转写、模型、播报几段串起来的人。
  • 想在本地做语音交互原型、探索可能性的开发者或爱好者。

不适合的情况:

  • 要求开箱即用,不想处理环境配置和链路调试。
  • 期待像成熟智能音箱一样长期稳定待机、随叫随到。
  • 对延迟要求极高——本地链路的总延迟取决于硬件,Whisper 跑模型和 Ollama 推理都需要时间,不是调参能完全解决的。
  • 没有合适硬件的情况,低配设备跑起来体验会很差,先想清楚再入手。

最容易踩的几个坑

做完之后回头看,有几个弯路是很多人会走的:

一、一开始就想做完整智能音箱。 唤醒词、持续对话、漂亮界面、设备化部署,全想一次到位。结果每个环节都没跑通,最后什么都没做成。正确的顺序是先让单轮问答跑通,再一步步叠加功能。

二、忽略整条链路的延迟。 录音、Whisper 转写、Ollama 推理、TTS 合成,每一步都有延迟,加起来可能远超你的心理预期。如果你对延迟有强烈期待,最好在自己的机器上把每一步单独计时,再决定要不要继续做——而不是做完才发现慢到不能用。

三、以为 Whisper 拿来就准。 在干净录音环境下效果确实不错,但背景噪声、口音、连读、或者说话太快,都会影响转写质量。如果你的录音环境不理想,可能需要做一些前处理,或者调整自己的说话方式,而不是一味调 Whisper 的参数。

四、把 TTS 当随便补的一步。 很多人在前三步花了很多时间,最后 TTS 随手接一个,结果声音机械到难以接受,实际使用体验大打折扣。TTS 的自然度直接影响这个方案的可用性,Edge TTS 的 voice、rate、pitch、volume 都有调节空间,值得认真花时间测一下,找到你能接受的参数组合。


我的行动建议

如果你打算做,建议先做一个最小版本:

  • 能录音
  • 能用 Whisper 识别
  • 能把文字发给 Ollama 拿到回复
  • 能用 Edge TTS 把回复念出来

不求稳定,不求漂亮,不求常驻,只求这四件事在自己的机器上跑通。

跑通之后,你会对整条链路的真实情况有清晰认知:延迟在哪、质量怎么样、哪个环节是短板。这时候再决定要不要继续投入,或者在哪里做优化,是有依据的判断,不是凭空想象。

本地 AI 最难的从来不是找一个好模型,而是让整条链路稳定运行。先跑通,再谈其他。

#本地AI #语音助手 #Ollama #Whisper #EdgeTTS