跳到主要內容

使用Hermes的語音模式

本指南是語音模式功能參考的實踐配套文檔。

若功能頁面解釋了語音模式能做什麼,本指南則展示如何實際有效地使用它。

語音模式適用場景

語音模式特別適用於以下情況:

  • 希望實現無手操作的 CLI 工作流
  • 希望在 Telegram 或 Discord 中獲得語音回覆
  • 希望Hermes進入 Discord 語音頻道進行實時對話
  • 希望在行走時快速捕捉想法、調試或進行來回交流,而非打字

選擇你的語音模式配置

Hermes實際上提供了三種不同的語音體驗。

模式適用場景平臺
交互式麥克風循環編碼或研究時個人無手操作使用CLI
聊天中的語音回覆與正常消息並行的語音回覆Telegram、Discord
實時語音頻道機器人在語音頻道中進行群組或個人實時對話Discord 語音頻道

推薦路徑是:

  1. 首先確保文本模式正常工作
  2. 然後啟用語音回覆
  3. 如果需要完整體驗,最後再切換到 Discord 語音頻道

第一步:確保普通Hermes正常工作

在啟用語音模式前,請確認以下事項:

  • Hermes能夠啟動
  • 你的服務提供商已正確配置
  • 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-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 提供商

Hermes支持本地和雲端語音處理方案。

最簡單 / 最經濟的配置

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

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

這通常是最佳起點。

環境文件示例

將以下內容添加至 ~/.hermes/.env

# 雲STT選項(本地無需密鑰)
GROQ_API_KEY=***
VOICE_TOOLS_OPENAI_KEY=***

# 高級版 TTS(可選)
ELEVENLABS_API_KEY=***

提供商推薦

語音識別(STT)

  • local → 隱私保護和零成本使用的最佳默認選擇
  • groq → 非常快速的雲端轉錄
  • openai → 質量良好的付費備用方案

語音合成(TTS)

  • edge → 免費且對大多數用戶已足夠
  • neutts → 免費的本地/設備端 TTS
  • elevenlabs → 最佳音質
  • openai → 質量居中

如果你使用 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
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

操作流程:

  1. 按下 Ctrl+B
  2. 開始說話
  3. 等待靜音檢測自動停止錄音
  4. Hermes完成語音轉文字並作出回應
  5. 若 TTS 已啟用,它將朗讀答案
  6. 循環可自動重啟,實現連續使用

實用命令

/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

模式

模式含義
off僅文本
voice_only僅當用戶發送語音時才進行語音回覆
all每次回覆都進行語音播報

何時使用哪種模式

  • /voice on:若你希望僅對語音消息進行語音回覆
  • /voice tts:若你希望始終擁有全程語音交互的助手

優秀的消息交互工作流

手機上的 Telegram 助手

適用場景:

  • 你遠離電腦設備
  • 希望發送語音消息並快速獲得語音回覆
  • 希望 Hermes 表現得像一個便攜式研究或運維助手

Discord 私聊中的語音輸出

適用於希望進行私密交互,避免在服務器頻道中被提及的情況。

使用場景 3:Discord 語音頻道

這是最高級的模式。

Hermes 加入 Discord 語音頻道,監聽用戶語音,進行語音識別(STT),執行標準 Agent 處理流程,並將回覆以語音形式返回至頻道。

所需的 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 或 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 提供商或模型
  • 發送更短、更清晰的語音片段

“在私聊中正常工作,但在服務器頻道中不行”

這通常是提及策略(mention policy)導致的。

默認情況下,機器人在 Discord 服務器文本頻道中需要被 @提及 才能響應,除非另行配置。

建議的第一週設置

若希望最快獲得成功體驗:

  1. 先讓文本版 Hermes 正常運行
  2. 安裝 hermes-agent[voice]
  3. 使用 CLI 語音模式,搭配本地 STT + Edge TTS
  4. 然後在 Telegram 或 Discord 中啟用 /voice on
  5. 僅在上述步驟成功後,再嘗試 Discord 語音頻道模式

此流程可保持調試範圍最小化。