第45篇:唤醒词——喊一声 Hey Hermes
Hermes 功能详解第45篇:Wake Word。免提语音唤醒 AI。
这篇讲的是:如何让 Hermes 像 Siri 或 Alexa 一样,你喊一声“Hey Hermes”它就乖乖听你说话、执行命令,全程不用碰键盘。
唤醒词是什么?
想象一下,Hermes 平时是个“待机”的助手,耳朵闭着。你打开唤醒词功能后,它就像守门员一样,一直在后台竖着耳朵听,但只对特定口令(默认是“Hey Hermes”)有反应。听到后,它立刻“醒来”,打开麦克风,录下你说的下一句话,然后执行。
最关键的是:整个过程完全在本地设备上运行,你的声音不会上传到任何第三方服务器,隐私有保障。
第1步:开启唤醒词
最简单的方式,是在 Hermes 交互界面里输入:
/wake on # 开始监听
/wake status # 查看当前状态
/wake off # 停止监听
第一次开启时,Hermes 会自动下载一个轻量级的语音识别模型(很小,一次性下载)。
桌面版用户更简单:把鼠标移到输入框旁边的麦克风上,会展开一个“耳朵”图标,点它就行。正在监听时,这个耳朵是实心的。这个开关是“全局生效”的——你在这里开了,下次启动 Hermes 还是开着的。
第2步:喊一声试试
开启后,对着麦克风说 “Hey Hermes”。你会看到:
- Hermes 自动开启一个新会话
- 麦克风开始录音(它会自动检测你什么时候说完)
- 你说的话被转成文字,发给智能体处理
- 它回答完后,自动回到“待机”状态,继续等下一个“Hey Hermes”
想结束对话? 在桌面版里,直接说“stop”、“cancel”或“goodbye”就能打断,这句话不会发给智能体,而是直接结束会话。注意:必须是完整的一句话,如果你说“stop the docker container”,它还是会正常执行的。
第3步:调灵敏度(防止误触发)
如果你在嘈杂环境里,Hermes 可能会把别人的话误听成“Hey Hermes”。这时可以调两个参数:
wake_word:
sensitivity: 0.6 # 阈值,越高越严格(默认0.6,可调到0.8)
confirmation_frames: 3 # 连续几帧都超过阈值才触发(默认3,可调到4-5)
生活化比喻:sensitivity 就像“耳力”的严格程度——调高了,它只听清你说的才算数;confirmation_frames 就像“确认次数”——它要连续听到好几声才信你,而不是听到一个相似音节就跳起来。
第4步:换一个唤醒词(可选)
默认是“Hey Hermes”,但你可以换成别的。Hermes 支持三种引擎:
| 引擎 | 特点 |
|---|---|
| openWakeWord | 免费、本地运行,内置“hey hermes”模型;自定义模型需要 .tflite 文件。Intel macOS 和原生 Windows ARM64 上不可用 |
| sherpa | 免费,支持任意自定义短语,不用训练;首次使用会下载英文模型,支持原生 Windows ARM64 |
| Porcupine | 免费版有限制,需要 API key |
注意:pyopen-wakeword 的 wheel 只支持 macOS 15 及以上的 Apple Silicon、glibc 2.35 及以上的 Linux,以及 Windows x64;这些限制只针对该引擎,不影响 Hermes 的其他功能。Termux 的核心/ACP 包不包含这套唤醒栈。
默认的 provider 是 auto,它会按 openWakeWord → sherpa → Porcupine 的顺序,自动挑选当前平台支持的第一个引擎(判断依据是后端 Python 所在的平台,而不是远程桌面客户端):
- 原生 Windows ARM64 和 Intel macOS:选 sherpa(免费、无需 key)。
- Windows x64、Apple Silicon 以及受支持的 Linux:选 openWakeWord(免费、无需 key)。
如果你手动指定了某个 provider,即使当前平台不支持,Hermes 也会保留你的选择,并直接报出依赖错误,而不是偷偷换引擎。已有的显式设置不会被自动迁移——想用自动选择,运行 hermes config set wake_word.provider auto。注意:唤醒检测在你手动开启前始终是关闭的。
想换词的话,在配置里改:
wake_word:
provider: auto # auto | openwakeword | sherpa | porcupine(Porcupine 需要 access key)
phrase: "hey hermes" # 这只是个标签,实际识别靠下面的模型
openwakeword:
model: hey_hermes # 内置默认,或自定义 .tflite 文件的绝对路径
phrase 的用法因引擎而异:对 sherpa 来说,它就是实际检测的短语;对 openWakeWord 和 Porcupine 来说,它只是显示标签,真正决定识别内容的是模型或关键词。
小提示:远程桌面场景
如果你用桌面版连接一台没有麦克风的远程服务器(比如 Docker 容器),唤醒词会自动切换到“客户端采集”模式——你的电脑麦克风负责收音,检测仍在服务器上跑(用的还是同一套引擎和模型),音频通过加密通道传输,同样不会发给第三方。
另外,如果 /wake status 显示“正在监听”却怎么喊都没反应,多半是麦克风权限的问题:macOS 是按进程授权麦克风的,语音转文字能用不代表后台的唤醒监听器拿到了权限,去“系统设置 → 隐私与安全性 → 麦克风”里把 Hermes 后台(可能显示为你的终端、python 或 Hermes)勾上,再把唤醒词关掉重开即可。
小提示:引擎依赖与平台限制
如果选中的引擎还没装好,Hermes 会在你开启唤醒词时自动请求安装对应的 PM extra,是否允许由 security.allow_lazy_installs 控制;新装的依赖环境可能需要重启 Hermes 才能加载引擎。打包版本会自带各自目标平台支持的引擎依赖。
需要留意的是,pyopen-wakeword 的 macOS wheel 虽然标着 universal2,里面其实只有 ARM64 库,所以 Hermes 在 Intel Mac 和原生 Windows ARM64 上会排除这个引擎,改用 sherpa 提供免 key 的检测。另外,Porcupine 的默认关键词是 “jarvis” 而不是 “hey hermes”,它的 phrase 只是显示标签,真正决定识别内容的是内置关键词或自定义 .ppn 模型。它的 access key 要放在你 profile 的 .env 里(PORCUPINE_ACCESS_KEY),而不是 config.yaml,可在 console.picovoice.ai 获取。
总结一下:开启唤醒词 = 一句 /wake on,然后你就可以解放双手,像跟人说话一样指挥 Hermes 了。记得调好灵敏度,避免误触发。
下篇预告:唤醒词只是“入口”,下一篇我们来聊聊 Hermes 的语音模式——怎么让它听懂你说的整句话,并给出自然流畅的回答。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/wake-word