字节笔记本
2026年5月16日
Hermes Agent 语音模式:用声音与 AI Agent 对话
Hermes Agent 提供了完整的语音模式支持,让你可以用声音与 AI Agent 进行实时对话。无论是 CLI 环境下的免提调试、Telegram/Discord 中的语音回复,还是 Discord 语音频道中的群组实时对话,语音模式都能显著提升交互效率。本文将从安装配置到实际使用,全面介绍 Hermes 语音模式的设置方法。
语音模式适用场景
语音模式在以下场景中特别有用:
- 编码或研究时需要免提的 CLI 工作流
- 在 Telegram 或 Discord 中需要语音回复
- 希望 Hermes 加入 Discord 语音频道进行实时对话
- 散步时快速记录想法、调试问题或来回讨论,而非打字输入
选择你的语音模式配置
Hermes 中有三种不同的语音体验。
| 模式 | 最适合 | 平台 |
|---|---|---|
| 交互式麦克风循环 | 编码或研究时的个人免提使用 | CLI |
| 聊天中的语音回复 | 在普通消息旁提供语音响应 | Telegram、Discord |
| 实时语音频道机器人 | 在语音频道中的群组或个人实时对话 | Discord 语音频道 |
推荐的进阶路径:
- 先让文本模式正常工作
- 再启用语音回复
- 最后尝试 Discord 语音频道以获得完整体验
第一步:确保普通模式正常工作
在接触语音模式之前,先验证:
- Hermes 能正常启动
- 你的 provider 已配置
- Agent 能正常回答文本提示
hermes问一个简单的问题:
What tools do you have available?
如果文本模式还不稳定,先解决文本模式的问题。
第二步:安装对应的额外依赖
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]"第三步:安装系统依赖
macOS
brew install portaudio ffmpeg opus
brew install espeak-ngUbuntu / Debian
sudo apt install portaudio19-dev ffmpeg libopus0
sudo apt install espeak-ng这些依赖的作用:
portaudio→ CLI 语音模式的麦克风输入/播放ffmpeg→ TTS 和消息传递的音频转换opus→ Discord 语音编解码支持espeak-ng→ NeuTTS 的音素化后端
第四步:选择 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=***提供商推荐
语音转文字 (STT)
local→ 注重隐私和零成本使用的最佳默认选择groq→ 非常快速的云端转录openai→ 不错的付费备选方案
文字转语音 (TTS)
edge→ 免费且对大多数用户足够好neutts→ 免费的本地/设备端 TTSelevenlabs→ 最佳音质openai→ 不错的折中选择mistral→ 多语言,原生 Opus
如果你使用 hermes setup
如果你在设置向导中选择了 NeuTTS,Hermes 会检查 neutts 是否已安装。如果缺失,向导会提示你需要 Python 包 neutts 和系统包 espeak-ng,并提议为你安装它们——先用平台包管理器安装 espeak-ng,然后运行:
python -m pip install -U neutts[all]如果你跳过安装或安装失败,向导会回退到 Edge TTS。
第五步:推荐配置
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使用场景一: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.
然后继续免提操作:
- "Read the last error again"
- "Explain the root cause in simpler terms"
- "Now give me the exact fix"
研究 / 头脑风暴
适合:
- 边走边想
- 口述半成形的想法
- 让 Hermes 实时帮你组织思路
无障碍 / 低打字场景
如果打字不方便,语音模式是保持完整 Hermes 交互的最快方式之一。
调整 CLI 行为
静音阈值
如果 Hermes 过于灵敏地开始/停止录音,调整:
voice:
silence_threshold: 250阈值越高 = 灵敏度越低。
静音持续时间
如果你说话时句子间停顿较多,增加:
voice:
silence_duration: 4.0录音快捷键
如果 Ctrl+B 与你的终端或 tmux 习惯冲突:
voice:
record_key: "ctrl+space"使用场景二:Telegram 或 Discord 中的语音回复
这个模式比完整的语音频道模式更简单。
Hermes 保持为普通聊天机器人,但可以朗读回复。
启动网关
hermes gateway开启语音回复
在 Telegram 或 Discord 中输入:
/voice on
或者
/voice tts
模式说明
| 模式 | 含义 |
|---|---|
off | 仅文本 |
voice_only | 仅在用户发送语音时才回复语音 |
all | 每条回复都用语音 |
何时使用哪种模式
/voice on— 如果你只想对语音消息回复语音/voice tts— 如果你想要一个全程语音的助手
推荐的消息平台工作流
手机上的 Telegram 助手
适用于:
- 你不在电脑旁
- 你想发送语音备忘并获得快速语音回复
- 你想让 Hermes 像便携式研究或运维助手一样工作
带语音输出的 Discord 私聊
当你想要私密交互,不受服务器频道 @mention 行为影响时很有用。
使用场景三:Discord 语音频道
这是最高级的模式。
Hermes 加入 Discord 语音频道,监听用户语音,转录后运行正常的 Agent 管道,然后将回复语音播报到频道中。
Discord 所需权限
除了普通的文本机器人设置外,确保机器人拥有:
- Connect(连接)
- Speak(说话)
- 最好还有 Use Voice Activity(使用语音活动)
同时在开发者门户中启用特权意图:
- Presence Intent
- Server Members Intent
- Message Content Intent
加入和离开
在机器人所在的 Discord 文本频道中:
/voice join
/voice leave
/voice status加入后发生的事情
- 用户在语音频道中说话
- Hermes 检测语音边界
- 转录文本发布到关联的文本频道
- Hermes 以文本和音频形式回复
- 文本频道就是发出
/voice join命令的那个频道
Discord 语音频道使用的最佳实践
- 保持
DISCORD_ALLOWED_USERS范围紧凑 - 起初使用专门的测试频道
- 在尝试语音频道模式之前,先验证 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中 - 你没有静音
- 特权意图已启用
- 机器人拥有 Connect/Speak 权限
"It transcribes but does not speak"
检查:
- TTS 提供商配置
- ElevenLabs 或 OpenAI 的 API key / 配额
- Edge 转换路径所需的
ffmpeg安装
"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 语音频道模式
这个渐进过程可以将调试范围控制在最小。