将语音模式用于 Hermes
本指南是 Voice Mode feature reference 的实用配套文档。
如果功能参考页解释的是“语音模式能做什么”,那么这篇指南解释的就是“怎样把它真正用顺手”。
语音模式适合哪些场景
语音模式尤其适合以下情况:
- 你想在 CLI 里免提操作
- 你希望在 Telegram 或 Discord 中收到语音回复
- 你想让 Hermes 待在 Discord 语音频道里进行实时对话
- 你想在走动时快速记录想法、调试问题,或来回讨论,而不是一直打字
选择你的语音模式方案
Hermes 实际上提供三种不同的语音体验。
| Mode | Best for | Platform |
|---|---|---|
| Interactive microphone loop | 编码或做研究时个人免提交互 | CLI |
| Voice replies in chat | 在普通聊天消息旁边返回语音答复 | Telegram, Discord |
| Live voice channel bot | 在语音频道里进行实时群聊或个人对话 | Discord voice channels |
一个很好的推进顺序是:
- 先把文本模式跑通
- 再启用语音回复
- 如果你想要完整体验,最后再上 Discord 语音频道
第 1 步:先确认普通 Hermes 可以正常工作
在碰语音模式之前,先确认:
- Hermes 能正常启动
- 你的大模型提供商(provider)配置已经完成
- agent 能正常回答文本提示
hermes
问一个简单问题:
What tools do you have available?
如果这一步还不稳定,先把文本模式修好。
第 2 步:安装正确的额外依赖
CLI 麦克风 + 播放
pip install "hermes-agent[voice]"
消息平台
pip install "hermes-agent[messaging]"
高级 ElevenLabs TTS
pip install "hermes-agent[tts-premium]"
本地 NeuTTS(可选)
python -m pip install -U neutts[all]
全部安装
pip install "hermes-agent[all]"
第 3 步:安装系统依赖
macOS
brew install portaudio ffmpeg opus
brew install espeak-ng
Ubuntu / Debian
sudo apt install portaudio19-dev ffmpeg libopus0
sudo apt install espeak-ng
这些依赖的作用分别是:
portaudio-> CLI 语音模式中的麦克风输入与播放ffmpeg-> TTS 和消息投递所需的音频转换opus-> Discord 语音编解码支持espeak-ng-> NeuTTS 的 phonemizer 后端
第 4 步:选择 STT 和 TTS 提供方
Hermes 同时支持本地和云端语音栈。
最简单 / 最省钱的方案
使用本地 STT 和免费的 Edge TTS:
- STT provider:
local - TTS provider:
edge
这通常是最好的起点。
环境文件示例
把下面内容加到 ~/.hermes/.env:
# Cloud STT options (local needs no key)
GROQ_API_KEY=***
VOICE_TOOLS_OPENAI_KEY=***
# Premium TTS (optional)
ELEVENLABS_API_KEY=***
提供方推荐
Speech-to-text
local-> 默认首选,隐私最好且零成本groq-> 非常快的云端转录openai-> 不错的付费备选
Text-to-speech
edge-> 免费,而且对大多数用户已经足够好neutts-> 免费,本地 / 设备端 TTSelevenlabs-> 质量最佳openai-> 比较均衡mistral-> 多语言,原生 Opus
如果你使用 hermes setup
如果你在设置向导里选择 NeuTTS,Hermes 会先检查 neutts 是否已安装。若缺失,向导会提示 NeuTTS 需要 Python 包 neutts 与系统包 espeak-ng,并提供为你安装的选项:它会先用你平台对应的包管理器安装 espeak-ng,然后执行:
python -m pip install -U neutts[all]
如果你跳过安装,或者安装失败,向导会回退到 Edge TTS。
第 5 步:推荐配置
voice:
record_key: "ctrl+b"
max_recording_seconds: 120
auto_tts: false
beep_enabled: true
silence_threshold: 200
silence_duration: 3.0
stt:
provider: "local"
local:
model: "base"
tts:
provider: "edge"
edge:
voice: "en-US-AriaNeural"
对大多数人来说,这是一个稳妥且保守的默认配置。
如果你想改用本地 TTS,把 tts 这一段切换成:
tts:
provider: "neutts"
neutts:
ref_audio: ''
ref_text: ''
model: neuphonic/neutts-air-q4-gguf
device: cpu
用例 1:CLI 语音模式
打开它
启动 Hermes:
hermes
在 CLI 内输入:
/voice on
录音流程
默认按键:
Ctrl+B
工作流如下:
- 按下
Ctrl+B - 开始说话
- 等待静音检测自动停止录音
- Hermes 转写并给出回复
- 如果 TTS 已开启,它会把回答读出来
- 如果是连续使用场景,这个循环还能自动重启
常用命令
/voice
/voice on
/voice off
/voice tts
/voice status
适合 CLI 的工作流
走动式调试
你可以说:
I keep getting a docker permission error. Help me debug it.
然后继续免提交互:
- “再读一遍最后那个错误”
- “用更简单的话解释根因”
- “现在给我准确的修复方法”
研究 / 头脑风暴
很适合以下场景:
- 一边走动一边思考
- 口述还没有完全成形的想法
- 让 Hermes 实时帮你整理思路
无障碍 / 低打字场景
如果打字不方便,语音模式是保持完整 Hermes 交互闭环的最快方式之一。
调整 CLI 行为
静音阈值
如果 Hermes 开始或停止录音过于激进,可以调整:
voice:
silence_threshold: 250
阈值越高,敏感度越低。
静音时长
如果你句子之间停顿比较多,可以增大:
voice:
silence_duration: 4.0
录音键
如果 Ctrl+B 和你的终端或 tmux 习惯冲突,可以改成:
voice:
record_key: "ctrl+space"
用例 2:Telegram 或 Discord 中的语音回复
这个模式比完整语音频道模式更简单。
Hermes 仍然是普通聊天机器人,但它可以把回复说出来。
启动网关
hermes gateway
开启语音回复
在 Telegram 或 Discord 中输入:
/voice on
或者
/voice tts
模式
| Mode | Meaning |
|---|---|
off | 只发文本 |
voice_only | 只有用户发送语音时才回语音 |
all | 每条回复都带语音 |
何时用哪种模式
- 如果你只想对语音消息返回语音,使用
/voice on - 如果你想让它始终像一个会说话的助手,使用
/voice tts
适合消息平台的工作流
手机上的 Telegram 助手
适合这些情况:
- 你不在电脑旁
- 你想发送语音便签并收到快速语音回复
- 你希望 Hermes 像一个可移动的研究或运维助手
带语音输出的 Discord 私聊
如果你想私下交互,又不想触发服务器频道里的 mention 行为,这种方式很好用。
用例 3:Discord 语音频道
这是最进阶的模式。
Hermes 会加入 Discord VC,监听用户语音、进行转写、跑完整的 agent 流程,然后把回复以语音形式播回频道。
Discord 所需权限
除了常规文本机器人配置外,请确保机器人还拥有:
- Connect
- Speak
- 最好还有 Use Voice Activity
同时还要在 Developer Portal 中启用特权 intents:
- Presence Intent
- Server Members Intent
- Message Content Intent
加入和离开
在机器人所在的 Discord 文本频道中输入:
/voice join
/voice leave
/voice status
加入后会发生什么
- 用户在 VC 中说话
- Hermes 检测语音边界
- 转写文本会发布到关联的文本频道
- Hermes 会同时给出文字和语音回复
- 所关联的文本频道就是你执行
/voice join的那个频道
使用 Discord VC 的最佳实践
- 尽量把
DISCORD_ALLOWED_USERS控制得更严格 - 一开始先用专用机器人 / 测试频道
- 在尝试 VC 模式前,先确认 STT 和 TTS 在普通文本聊天语音模式下已经正常
语音质量建议
质量优先
- STT: 本地
large-v3或 Groqwhisper-large-v3 - TTS: ElevenLabs
速度 / 便利优先
- STT: 本地
base或 Groq - TTS: Edge
零成本优先
- STT: 本地
- TTS: Edge
常见故障模式
“No audio device found”
安装 portaudio。
“Bot joins but hears nothing”
检查以下项目:
- 你的 Discord 用户 ID 是否在
DISCORD_ALLOWED_USERS中 - 你自己是否被静音
- 特权 intents 是否已经启用
- 机器人是否拥有 Connect / Speak 权限
“It transcribes but does not speak”
检查:
- TTS 提供方配置
- ElevenLabs 或 OpenAI 的 API key / 配额
ffmpeg是否已安装(Edge 转换链路会用到)
“Whisper outputs garbage”
可以尝试:
- 更安静的环境
- 更高的
silence_threshold - 更换 STT 提供方 / 模型
- 更短、更清晰的语句
“It works in DMs but not in server channels”
这通常和 mention 策略有关。
默认情况下,除非另有配置,否则机器人在 Discord 服务器文本频道中需要 @mention 才会响应。
建议的第一周配置路径
如果你想用最短路径跑通:
- 先让文本版 Hermes 正常工作
- 安装
hermes-agent[voice] - 在 CLI 中用本地 STT + Edge TTS 跑通语音模式
- 然后在 Telegram 或 Discord 中启用
/voice on - 最后再尝试 Discord VC 模式
这样的推进顺序能把调试面尽量压小。