使用赫尔墨斯的语音模式
本指南是语音模式功能参考的实践配套文档。
若功能页面解释了语音模式能做什么,本指南则展示如何实际有效地使用它。
语音模式适用场景
语音模式特别适用于以下情况:
- 希望实现无手操作的 CLI 工作流
- 希望在 Telegram 或 Discord 中获得语音回复
- 希望赫尔墨斯进入 Discord 语音频道进行实时对话
- 希望在行走时快速捕捉想法、调试或进行来回交流,而非打字
选择你的语音模式配置
赫尔墨斯实际上提供了三种不同的语音体验。
| 模式 | 适用场景 | 平台 |
|---|---|---|
| 交互式麦克风循环 | 编码或研究时个人无手操作使用 | CLI |
| 聊天中的语音回复 | 与正常消息并行的语音回复 | Telegram、Discord |
| 实时语音频道机器人 | 在语音频道中进行群组或个人实时对话 | Discord 语音频道 |
推荐路径是:
- 首先确保文本模式正常工作
- 然后启用语音回复
- 如果需要完整体验,最后再切换到 Discord 语音频道
第一步:确保普通赫尔墨斯正常工作
在启用语音模式前,请确认以下事项:
- 赫尔墨斯能够启动
- 你的服务提供商已正确配置
- 代理可以正常响应文本提示
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-ng
Ubuntu / Debian
sudo apt install portaudio19-dev ffmpeg libopus0
sudo apt install espeak-ng
这些依赖项的重要性如下:
portaudio→ CLI 语音模式的麦克风输入/播放支持ffmpeg→ TTS 和消息传递所需的音频转换opus→ Discord 语音编解码器支持espeak-ng→ NeuTTS 的音素化后端
第四步:选择 STT 和 TTS 提供商
赫尔墨斯支持本地和云端语音处理方案。
最简单 / 最经济的配置
使用本地 STT 和免费的 Edge TTS:
- STT 提供商:
local - TTS 提供商:
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→ 质量居中
如果你使用 hermes setup
如果你在设置向导中选择了 NeuTTS,赫尔墨斯会检查 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
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
进入 CLI 界面:
/voice on
录音流程
默认快捷键:
Ctrl+B
操作流程:
- 按下
Ctrl+B - 开始说话
- 等待静音检测自动停止录音
- 赫尔墨斯完成语音转文字并作出回应
- 若 TTS 已启用,它将朗读答案
- 循环可自动重启,实现连续使用
实用命令
/voice
/voice on
/voice off
/voice tts
/voice status
优秀的 CLI 工作流
举步调试
说出:
I keep getting a docker permission error. Help me debug it.
然后继续无手操作:
- “再读一遍上一个错误”
- “用更简单的语言解释根本原因”
- “现在给我具体的修复方案”
研究 / 头脑风暴
非常适合:
- 边走边思考
- 口述尚未成型的想法
- 让赫尔墨斯实时帮你整理思路
可访问性 / 低打字量会话
当打字不便时,语音模式是保持完整赫尔墨斯工作流的最快方式之一。
调整 CLI 行为
静音阈值
如果赫尔墨斯启动/停止过于敏感,可调整:
voice:
silence_threshold: 250
阈值越高,灵敏度越低。
静音持续时间
如果你在句子之间停顿较多,可增加:
voice:
silence_duration: 4.0
录音快捷键
如果 Ctrl+B 与你的终端或 tmux 设置冲突:
voice:
record_key: "ctrl+space"
用例 2:Telegram 或 Discord 中的语音回复
此模式比完整语音频道更简单。
赫尔墨斯保持为普通聊天机器人,但可发出语音回复。
启动网关
hermes gateway
开启语音回复
在 Telegram 或 Discord 中:
/voice on
或
/voice tts
模式
| 模式 | 含义 |
|---|---|
off | 仅文本 |
voice_only | 仅当用户发送语音时才进行语音回复 |
all | 每次回复都进行语音播报 |
何时使用哪种模式
/voice on:若你希望仅对语音消息进行语音回复/voice tts:若你希望始终拥有全程语音交互的助手
优秀的消息交互工作流
手机上的 Telegram 助手
适用场景:
- 你远离电脑设备
- 希望发送语音消息并快速获得语音回复
- 希望 Hermes 表现得像一个便携式研究或运维助手
Discord 私聊中的语音输出
适用于希望进行私密交互,避免在服务器频道中被提及的情况。
使用场景 3:Discord 语音频道
这是最高级的模式。
Hermes 加入 Discord 语音频道,监听用户语音,进行语音识别(STT),执行标准代理处理流程,并将回复以语音形式返回至频道。
所需的 Discord 权限
除了常规的文本机器人设置外,请确保机器人拥有以下权限:
- 连接(Connect)
- 发言(Speak)
- 建议启用:使用语音活动(Use Voice Activity)
同时在开发者门户中启用高权限意图(privileged intents):
- 状态意图(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
常见故障模式
“未找到音频设备”
安装 portaudio。
“机器人已加入但听不到任何声音”
请检查:
- 你的 Discord 用户 ID 是否在
DISCORD_ALLOWED_USERS列表中 - 你是否被静音
- 高权限意图是否已启用
- 机器人是否拥有“连接”和“发言”权限
“能转录但无法语音播报”
请检查:
- TTS 提供商配置
- ElevenLabs 或 OpenAI 的 API 密钥 / 配额
- Edge 转换路径所需的
ffmpeg是否已安装
“Whisper 输出乱码”
尝试:
- 更安静的环境
- 提高
silence_threshold值 - 更换 STT 提供商或模型
- 发送更短、更清晰的语音片段
“在私聊中正常工作,但在服务器频道中不行”
这通常是提及策略(mention policy)导致的。
默认情况下,机器人在 Discord 服务器文本频道中需要被 @提及 才能响应,除非另行配置。
建议的第一周设置
若希望最快获得成功体验:
- 先让文本版 Hermes 正常运行
- 安装
hermes-agent[voice] - 使用 CLI 语音模式,搭配本地 STT + Edge TTS
- 然后在 Telegram 或 Discord 中启用
/voice on - 仅在上述步骤成功后,再尝试 Discord 语音频道模式
此流程可保持调试范围最小化。