跳到主要内容

在 Hermes 中使用语音模式

本指南是语音模式功能参考的实践配套手册。

如果说功能页面解释了语音模式能做什么,那么本指南将展示如何真正用好它。

提示

Nous 门户通过单一 OAuth 集成了 LLM 和 TTS——语音模式可以端到端工作,无需额外凭证。

语音模式的适用场景

语音模式在以下情况下特别有用:

  • 你想要免提的命令行界面工作流
  • 你希望在 Telegram 或 Discord 中获得语音回复
  • 你希望 Hermes 坐镇 Discord 语音频道进行实时对话
  • 你希望在走动时快速捕捉想法、调试或进行来回交流,而不是打字

选择你的语音模式设置

Hermes 中实际上有三种不同的语音体验。

模式最适合于平台
交互式麦克风循环编码或研究时的个人免提使用命令行界面
聊天中的语音回复在正常消息旁获得语音回复Telegram, Discord
实时语音频道机器人语音频道中的小组或个人实时对话Discord 语音频道

一个好的路径是:

  1. 首先让文本功能正常工作
  2. 然后启用语音回复
  3. 如果你想要完整的体验,最后再尝试 Discord 语音频道

第一步:确保基础 Hermes 能正常工作

在接触语音模式之前,请验证:

  • Hermes 能启动
  • 你的提供商已配置
  • 智能体能正常回答文本提示
hermes

问一个简单的问题:

你有哪些可用的工具?

如果这一步还不顺畅,请先修复文本模式。

第二步:安装正确的附加组件

命令行界面麦克风 + 播放

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 → 用于命令行界面语音模式的麦克风输入/播放
  • ffmpeg → 用于 TTS 和消息传递的音频转换
  • opus → Discord 语音编解码器支持
  • espeak-ng → NeuTTS 的音素化器后端

第四步:选择 STT 和 TTS 提供商

Hermes 支持本地和云端语音技术栈。

最简单/最便宜的设置

使用本地 STT 和免费的 Edge TTS:

  • STT 提供商: local
  • TTS 提供商: edge

这通常是开始的最佳选择。

环境变量文件示例

添加到 ~/.hermes/.env

# 云端 STT 选项(本地模式无需密钥)
GROQ_API_KEY=***
VOICE_TOOLS_OPENAI_KEY=***

# 高级 TTS (可选)
ELEVENLABS_API_KEY=***

提供商推荐

语音转文字

  • local → 隐私和零成本的最佳默认选择
  • groq → 非常快的云端转录
  • openai → 良好的付费备用选项

文字转语音

  • edge → 免费且对大多数用户足够好
  • neutts → 免费的本地/设备端 TTS
  • elevenlabs → 最佳质量
  • openai → 良好的中间选择
  • mistral → 多语言,原生 Opus 格式

如果你使用 hermes setup

如果你在设置向导中选择了 NeuTTS,Hermes 会检查 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
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:命令行界面语音模式

启动它

启动 Hermes:

hermes

在命令行界面内:

/voice on

录制流程

默认按键:

  • Ctrl+B

工作流程:

  1. 按下 Ctrl+B
  2. 说话
  3. 等待静音检测自动停止录制
  4. Hermes 转录并回复
  5. 如果 TTS 开启,它会说出答案
  6. 循环可以自动重新开始以供持续使用

常用命令

/voice
/voice on
/voice off
/voice tts
/voice status

良好的命令行界面工作流

即时调试

说:

我一直遇到 docker 权限错误。帮我调试一下。

然后继续免提操作:

  • “再读一遍最后的错误”
  • “用更简单的话解释根本原因”
  • “现在给我确切的修复方法”

研究/头脑风暴

非常适合:

  • 边走边思考
  • 口述半成型的想法
  • 让 Hermes 实时整理你的思绪

辅助功能/低打字量会话

如果打字不方便,语音模式是保持完整 Hermes 循环的最快方式之一。

调整命令行界面行为

静音阈值

如果 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

模式

模式含义
off仅文本
voice_only仅当用户发送语音时才朗读
all朗读每一条回复

何时使用哪种模式

  • 如果你希望仅对语音来源的消息进行语音回复,请使用 /voice on
  • 如果你希望始终有一个完整的语音助手,请使用 /voice tts

良好的消息工作流

手机上的 Telegram 助手

适用于:

  • 你不在电脑旁
  • 你想发送语音便条并获得快速的语音回复
  • 你希望 Hermes 像一个便携式研究或运维助手一样工作

带语音输出的 Discord 私信

当你希望进行私人互动而不涉及服务器频道提及行为时很有用。

用例 3: Discord 语音频道

这是最高级的模式。

Hermes 加入一个 Discord 语音频道,监听用户语音,将其转录,运行正常的智能体流程,并将回复语音播报回频道。

所需的 Discord 权限

除了正常的文本机器人设置外,请确保机器人拥有:

  • 连接
  • 说话
  • 最好还有 使用语音活动

同时在开发者门户中启用特权意图:

  • 存在意图
  • 服务器成员意图
  • 消息内容意图

加入和离开

在机器人所在的 Discord 文本频道中:

/voice join
/voice leave
/voice status

加入后会发生什么

  • 用户在语音频道中说话
  • Hermes 检测语音边界
  • 转录文本会发布在关联的文本频道中
  • Hermes 以文本和音频形式回复
  • 文本频道是发出 /voice join 命令的那个频道

Discord 语音频道使用的最佳实践

  • 保持 DISCORD_ALLOWED_USERS 范围严格
  • 首先使用专用的机器人/测试频道
  • 在尝试语音频道模式之前,先在普通文本聊天的语音模式下验证 STT 和 TTS 是否正常工作

语音质量推荐

最佳质量设置

  • STT: 本地 large-v3 或 Groq whisper-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 提供商/模型
  • 更短、更清晰的语句

“它在私信中工作,但在服务器频道中不行”

这通常是提及策略问题。

默认情况下,在 Discord 服务器文本频道中,机器人需要一个 @提及,除非另行配置。

建议的第一周设置

如果你想要最短的成功路径:

  1. 让文本版 Hermes 工作起来
  2. 安装 hermes-agent[voice]
  3. 使用本地 STT + Edge TTS 的命令行界面语音模式
  4. 然后在 Telegram 或 Discord 中启用 /voice on
  5. 只有在这之后,再尝试 Discord 语音频道模式

这个进程能将调试面保持在最小。

下一步阅读