ByteNoteByteNote

字节笔记本

2026年5月16日

Hermes Agent 语音模式:用声音与 AI Agent 对话

API中转
¥120

Hermes Agent 提供了完整的语音模式支持,让你可以用声音与 AI Agent 进行实时对话。无论是 CLI 环境下的免提调试、Telegram/Discord 中的语音回复,还是 Discord 语音频道中的群组实时对话,语音模式都能显著提升交互效率。本文将从安装配置到实际使用,全面介绍 Hermes 语音模式的设置方法。

语音模式适用场景

语音模式在以下场景中特别有用:

  • 编码或研究时需要免提的 CLI 工作流
  • 在 Telegram 或 Discord 中需要语音回复
  • 希望 Hermes 加入 Discord 语音频道进行实时对话
  • 散步时快速记录想法、调试问题或来回讨论,而非打字输入

选择你的语音模式配置

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

模式最适合平台
交互式麦克风循环编码或研究时的个人免提使用CLI
聊天中的语音回复在普通消息旁提供语音响应Telegram、Discord
实时语音频道机器人在语音频道中的群组或个人实时对话Discord 语音频道

推荐的进阶路径:

  1. 先让文本模式正常工作
  2. 再启用语音回复
  3. 最后尝试 Discord 语音频道以获得完整体验

第一步:确保普通模式正常工作

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

  • Hermes 能正常启动
  • 你的 provider 已配置
  • Agent 能正常回答文本提示
bash
hermes

问一个简单的问题:

What tools do you have available?

如果文本模式还不稳定,先解决文本模式的问题。

第二步:安装对应的额外依赖

CLI 麦克风 + 播放

bash
pip install "hermes-agent[voice]"

消息平台

bash
pip install "hermes-agent[messaging]"

高级 ElevenLabs TTS

bash
pip install "hermes-agent[tts-premium]"

本地 NeuTTS(可选)

bash
python -m pip install -U neutts[all]

安装全部

bash
pip install "hermes-agent[all]"

第三步:安装系统依赖

macOS

bash
brew install portaudio ffmpeg opus
brew install espeak-ng

Ubuntu / Debian

bash
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

bash
# 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 → 免费的本地/设备端 TTS
  • elevenlabs → 最佳音质
  • openai → 不错的折中选择
  • mistral → 多语言,原生 Opus

如果你使用 hermes setup

如果你在设置向导中选择了 NeuTTS,Hermes 会检查 neutts 是否已安装。如果缺失,向导会提示你需要 Python 包 neutts 和系统包 espeak-ng,并提议为你安装它们——先用平台包管理器安装 espeak-ng,然后运行:

bash
python -m pip install -U neutts[all]

如果你跳过安装或安装失败,向导会回退到 Edge TTS。

第五步:推荐配置

yaml
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 部分改为:

yaml
tts:
  provider: "neutts"
  neutts:
    ref_audio: ''
    ref_text: ''
    model: neuphonic/neutts-air-q4-gguf
    device: cpu

使用场景一:CLI 语音模式

开启语音模式

启动 Hermes:

bash
hermes

在 CLI 中输入:

/voice on

录音流程

默认快捷键:

  • Ctrl+B

工作流程:

  1. 按下 Ctrl+B
  2. 开始说话
  3. 静音检测会自动停止录音
  4. Hermes 转录并回复
  5. 如果开启了 TTS,它会朗读回答
  6. 循环可以自动重启以实现持续使用

常用命令

text
/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 过于灵敏地开始/停止录音,调整:

yaml
voice:
  silence_threshold: 250

阈值越高 = 灵敏度越低。

静音持续时间

如果你说话时句子间停顿较多,增加:

yaml
voice:
  silence_duration: 4.0

录音快捷键

如果 Ctrl+B 与你的终端或 tmux 习惯冲突:

yaml
voice:
  record_key: "ctrl+space"

使用场景二:Telegram 或 Discord 中的语音回复

这个模式比完整的语音频道模式更简单。

Hermes 保持为普通聊天机器人,但可以朗读回复。

启动网关

bash
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 文本频道中:

text
/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

常见问题排查

"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,除非另有配置。

建议的首周设置

如果你想以最短路径获得成功:

  1. 让文本模式的 Hermes 正常工作
  2. 安装 hermes-agent[voice]
  3. 使用 CLI 语音模式 + 本地 STT + Edge TTS
  4. 然后在 Telegram 或 Discord 中启用 /voice on
  5. 之后才尝试 Discord 语音频道模式

这个渐进过程可以将调试范围控制在最小。

延伸阅读

分享: