经 AI Skill Hub 精选评估,Hermes语音集成 获评「推荐使用」。这款Agent工作流在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
Hermes语音集成 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
Hermes语音集成 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:pip 安装(推荐)
pip install hermes-voice-ha-integration
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install hermes-voice-ha-integration
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/rusty4444/hermes-voice-ha-integration
cd hermes-voice-ha-integration
pip install -e .
# 验证安装
python -c "import hermes_voice_ha_integration; print('安装成功')"
# 命令行使用
hermes-voice-ha-integration --help
# 基本用法
hermes-voice-ha-integration input_file -o output_file
# Python 代码中调用
import hermes_voice_ha_integration
# 示例
result = hermes_voice_ha_integration.process("input")
print(result)
# hermes-voice-ha-integration 配置文件示例(config.yml) app: name: "hermes-voice-ha-integration" debug: false log_level: "INFO" # 运行时指定配置文件 hermes-voice-ha-integration --config config.yml # 或通过环境变量配置 export HERMES_VOICE_HA_INTEGRATION_API_KEY="your-key" export HERMES_VOICE_HA_INTEGRATION_OUTPUT_DIR="./output"
You need:
---
Install Hermes using the official installer:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
Restart your shell, then verify:
hermes --version
hermes doctor
Run the setup wizard if this is your first Hermes install:
hermes setup
Choose a model/provider. For a local-first HA assistant, configure Hermes to use your local model endpoint (for example Ollama, vLLM, or llama.cpp). Remote providers also work.
---
Clone this repository:
mkdir -p ~/dev
cd ~/dev
git clone https://github.com/rusty4444/hermes-voice-ha-integration.git
cd hermes-voice-ha-integration
Copy the plugins into your Hermes plugin directory:
mkdir -p ~/.hermes/plugins
cp -R plugins/home_assistant ~/.hermes/plugins/home_assistant
cp -R plugins/voice_stack ~/.hermes/plugins/voice_stack
Configure Home Assistant connection details for Hermes. The plugin reads standard environment variables:
```bash cat >> ~/.hermes/.env <<'EOF'
Start Hermes:
hermes
Ask:
Search my Home Assistant lights.
Then try a read-only state check:
Is the living room light on?
Expected result:
ha_search_entities or ha_get_state.If this fails, skip ahead to Troubleshooting before enabling write actions.
---
From this repo checkout, copy the custom component into HA's config directory:
cp -R custom_components/hermes /config/custom_components/hermes
If you are copying over SSH/Samba from another machine, the target is the Home Assistant config directory:
/config/custom_components/hermes
Restart Home Assistant after copying.
---
cd ~/dev/hermes-voice-ha-integration
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
python -m pytest tests/ -q
Run static compilation:
python -m compileall -q custom_components plugins tests
Build package metadata:
python -m build --sdist --wheel
Run release integrity checks:
python scripts/check_release_integrity.py
See docs/release.md for the full release checklist and artifact semantics.
The tests are mocked and do not require a live Home Assistant instance.
---
HERMES_HA_WS_TOKEN= EOF
**About the `HASS_URL` format:** The URL must include a scheme (`http://` or `https://`) and a hostname or IP address. For example `http://192.168.1.50:8123`. If you see `"No host part in the URL"`, the URL is missing the `http://` prefix or the hostname.
**About `HERMES_HA_WS_TOKEN`:** This is optional and used to secure the connection **from Home Assistant to Hermes**. Most users do not need it:
- **Leave empty** (or omit) for unauthenticated WebSocket connections.
- **Set to any string** (e.g. `my-hermes-token`) if you want to require a matching token on the HA side. If you set this, enter the same value in the HA custom integration setup form field "Hermes API / WebSocket token".
- If unset, the system falls back to `API_SERVER_KEY` or `HERMES_API_KEY` if either is configured.
If your HA URL is different, use that instead, for example:
bash HASS_URL=http://192.168.1.50:8123
Enable the plugins in `~/.hermes/config.yaml`:
yaml plugins: enabled: - home_assistant - voice_stack
If your config already has a `plugins.enabled` list, add the two entries instead of replacing the whole section.
Restart Hermes after changing plugins or `.env`.
**How the WebSocket receiver starts:** The WebSocket receiver does not require a standalone `server.py` file. It starts automatically when the `voice_stack` plugin loads. After restarting Hermes, check that the WebSocket is active:
bash
https://github.com/rusty4444/hermes-voice-ha-integration
After adding the integration, open Settings → Devices & services → Hermes Voice Assistant → Options.
The options flow has two pages.
The plugin blocks dangerous service domains by default, including:
shell_commandcommand_linepython_scriptpyscripthassiorest_commandFor extra safety, create an allow-list at:
~/.hermes/ha_allow_list.json
Example:
{
"enabled": true,
"rules": [
{"entity_id": "light.*", "services": ["turn_on", "turn_off", "toggle"]},
{"entity_id": "scene.*", "services": ["turn_on"]},
{"entity_id": "media_player.living_room", "services": ["play_media", "volume_set"]}
]
}
When enabled, service calls not matching the allow-list are denied.
Audit logs are written as JSON lines to:
~/.hermes/ha_audit.log
---
Install optional voice dependencies in the Python environment that runs Hermes.
pip install edge-tts
Configure:
cat >> ~/.hermes/.env <<'EOF'
HERMES_TTS_ENGINE=edge
HERMES_TTS_VOICE=en-US-AriaNeural
EOF
pip install piper-tts
Download a Piper voice model from:
https://huggingface.co/rhasspy/piper-voices
Configure:
cat >> ~/.hermes/.env <<'EOF'
HERMES_TTS_ENGINE=piper
HERMES_TTS_VOICE=en_US-lessac-medium
EOF
pip install faster-whisper sounddevice numpy
Configure:
cat >> ~/.hermes/.env <<'EOF'
HERMES_STT_ENGINE=faster-whisper
HERMES_STT_MODEL=tiny
EOF
pip install pvporcupine pyaudio
Create a Picovoice key, then add:
cat >> ~/.hermes/.env <<'EOF'
HERMES_WAKE_WORD_ENGINE=porcupine
HERMES_WAKE_WORD=computer
PORCUPINE_ACCESS_KEY=replace-with-picovoice-key
EOF
pip install openwakeword pyaudio numpy
Configure:
cat >> ~/.hermes/.env <<'EOF'
HERMES_WAKE_WORD_ENGINE=openwakeword
EOF
This repository includes an early HA add-on scaffold in addon/. Use it if you want Hermes voice services to run under Home Assistant Supervisor instead of a separate machine.
High-level flow:
The add-on is intentionally marked boot: manual in v0.0.5. Start it manually first, verify logs, then decide whether to change boot behaviour later.
---
curl -N --no-buffer -H "Accept: text/event-stream" http://localhost:7860/api/hermes/ws
The `voice_stack` plugin starts a small HA-facing WebSocket receiver at:
text ws://<hermes-host>:7860/api/hermes/ws ```
Home Assistant connects to this endpoint through the Hermes URL you enter below. If HERMES_HA_WS_TOKEN, API_SERVER_KEY, or HERMES_API_KEY is set, the HA custom integration token must match it.
---
<p align="center"> <a href="https://buymeacoffee.com/rusty4" target="_blank"> <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="50"> </a> </p>

Connect Hermes Agent to Home Assistant so Hermes can understand your home, call HA services, and optionally run a wake-word → STT → LLM → TTS voice loop.
This repository is a bundle of three pieces:
| Piece | Path | What it does |
|---|---|---|
| Home Assistant custom integration | custom_components/hermes/ | Adds the hermes integration, HA services, status sensors, and the Lovelace action bar. |
| Hermes Home Assistant plugin | plugins/home_assistant/ | Gives Hermes tools for entity search, state lookup, service calls, bulk control, scene/script discovery, and HA context. |
| Hermes voice-stack plugin | plugins/voice_stack/ | Adds wake-word, speech-to-text, text-to-speech, and voice pipeline helpers. |
| Install target | Mechanism | Artifact/source | Current maturity |
|---|---|---|---|
| HA custom integration | HACS custom repository or manual copy | GitHub tag/source distribution, custom_components/hermes/ | Supported |
| Hermes plugins | Copy into ~/.hermes/plugins or install the Python wheel | Wheel/source distribution, plugins/* | Supported |
| HA add-on | Home Assistant Supervisor add-on scaffold | GitHub tag/source distribution, addon/ | Early scaffold |
The Python wheel is intentionally plugin-focused. Use the GitHub tag or source distribution for the full HACS/custom-component/add-on bundle.
Release: v0.0.5 — ships runtime Home Assistant translations so the setup form explains exactly what the Hermes URL and token fields mean.
---
| Tool | Purpose |
|---|---|
ha_search_entities | Search entities by name, domain, area-like metadata, or entity ID. |
ha_get_state | Fetch current state and attributes for one entity. |
ha_call_service | Call a Home Assistant service with safety checks. |
ha_get_overview | Build a compact overview of the home. |
ha_list_services | Discover service domains and service names. |
control_light_and_set_scene | Compound helper for common light + scene actions. |
turn_off_all_except | Turn off a domain while preserving chosen entities. |
ha_bulk_control | Run multiple service calls and summarise results. |
| Tool | Purpose |
|---|---|
voice_status | Show engine availability and pipeline state. |
voice_enable | Enable continuous wake-word listening. |
voice_disable | Disable continuous voice mode. |
voice_speak | Speak text through the configured TTS engine. |
voice_listen | One-shot record + transcription. |
voice_prompt | Build the voice-optimised prompt with HA context. |
---
hermes plugins | grep voice_stack

| Setup field | What it means | Example |
|---|---|---|
| **Hermes Agent API URL** | The base URL of the machine or container running Hermes Agent's HA-facing API/WebSocket receiver. This must be reachable from Home Assistant. It is **not** your Home Assistant URL. | http://192.168.1.20:7860 or http://hermes.local:7860 |
| **Hermes API / WebSocket token** | The bearer token expected by Hermes for the HA WebSocket/API receiver. Use HERMES_HA_WS_TOKEN if you set it; otherwise use the fallback token configured as API_SERVER_KEY or HERMES_API_KEY. This is **not** a Home Assistant long-lived access token. | the same shared Hermes token from ~/.hermes/.env |
Visual check:
Home Assistant → http://<hermes-host>:7860 → /api/hermes/ws
Do not enter http://homeassistant.local:8123 in the Hermes URL field. That URL is only used by Hermes itself when Hermes talks back to Home Assistant via HASS_URL.
The integration adds:
hermes.hermes_command service for HA-native service dispatch.hermes.voice_settings service for voice/dashboard helpers.sensor.hermes_gateway_status — Hermes gateway reachable or offlinesensor.hermes_uptime_hours — how long Hermes has been runningsensor.hermes_total_interactions — number of voice interactionssensor.hermes_total_errors — number of voice errorssensor.ha_ws_connection — HA WebSocket connection statesensor.hermes_voice_ready — voice pipeline ready flagsensor.hermes_tts_voice — configured default TTS voicesensor.hermes_stt_engine — configured STT enginesensor.hermes_wake_word — configured wake-word keyword(s)sensor.hermes_media_player — configured media player for TTS---

Mockup of the Step 2 — Voice pipeline options page. The Step 1 — Allow-listed entities & SSL page appears first, with an entity-ID editor and an SSL toggle.
| Field | What to enter |
|---|---|
| **TTS engine** | edge (default, network), piper (local), elevenlabs, or openai |
| **Default TTS voice / voice-ID** | Voice name or ID for the chosen TTS engine (e.g. en-US-AriaNeural for Edge TTS) |
| **STT engine** | faster-whisper (default, local) or whisper-cpp |
| **STT model size** | Model size for the chosen STT engine: tiny, base, small, medium, large |
| **Wake-word engine** | porcupine (default), openwakeword, or command |
| **Wake-word keyword(s)** | One keyword per line or comma-separated (e.g. hey jarvis, computer) |
| **Media player entity ID** | HA media_player.* entity used for TTS playback (e.g. media_player.living_room_speaker) |
Values are persisted in the config entry options. After saving, Hermes reads them from entry.options on every restart. Screenshots of the live UI are welcome via PR.
---
高质量的语音控制集成,易于使用
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:Hermes语音集成 的核心功能完整,质量良好。对于自动化工程师和运维人员来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | hermes-voice-ha-integration |
| 原始描述 | 开源AI工作流:Home Assistant voice stack integration for Hermes Agent — on-device voice contro。⭐17 · Python |
| Topics | 语音控制Home AssistantAI |
| GitHub | https://github.com/rusty4444/hermes-voice-ha-integration |
| License | MIT |
| 语言 | Python |
收录时间:2026-05-28 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端