使用Hermes的語音模式
本指南是語音模式功能參考的實踐配套文檔。
若功能頁面解釋了語音模式能做什麼,本指南則展示如何實際有效地使用它。
語音模式適用場景
語音模式特別適用於以下情況:
- 希望實現無手操作的 CLI 工作流
- 希望在 Telegram 或 Discord 中獲得語音回覆
- 希望Hermes進入 Discord 語音頻道進行實時對話
- 希望在行走時快速捕捉想法、調試或進行來回交流,而非打字
選擇你的語音模式配置
Hermes實際上提供了三種不同的語音體驗。
| 模式 | 適用場景 | 平臺 |
|---|---|---|
| 交互式麥克風循環 | 編碼或研究時個人無手操作使用 | CLI |
| 聊天中的語音回覆 | 與正常消息並行的語音回覆 | Telegram、Discord |
| 實時語音頻道機器人 | 在語音頻道中進行群組或個人實時對話 | Discord 語音頻道 |
推薦路徑是:
- 首先確保文本模式正常工作
- 然後啟用語音回覆
- 如果需要完整體驗,最後再切換到 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→ 免費的本地/設備端 TTSelevenlabs→ 最佳音質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
操作流程:
- 按下
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.
然後繼續無手操作:
- “再讀一遍上一個錯誤”
- “用更簡單的語言解釋根本原因”
- “現在給我具體的修復方案”
研究 / 頭腦風暴
非常適合:
- 邊走邊思考
- 口述尚未成型的想法
- 讓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或 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 語音頻道模式
此流程可保持調試範圍最小化。