c44e65e3810f5ed4b7326454a6297d2779986e08
Add 15 test cases covering manifest validation, monkey-patch logic, idempotency, error handling, lifecycle hooks, and plugin registration. Update README with test instructions and corrected install URL.
Hermes Piper Plugin
Makes Piper TTS the default provider instead of Microsoft Edge TTS.
Zero modifications to the Hermes repo. No fork required. The plugin
monkey-patches tools.tts_tool.DEFAULT_PROVIDER at plugin load time.
Why
- Piper is local, free, CPU-only — no API key, no cloud dependency
- Edge TTS requires internet access and ffmpeg for Telegram voice bubbles
- This eliminates the need to maintain a fork just to change the default
How it works
# At plugin load time, this single line runs:
tools.tts_tool.DEFAULT_PROVIDER = "piper"
That's it. DEFAULT_PROVIDER is read at call time, so changing it after
import is safe. The plugin also logs the effective default at session start.
Installation
# 1. Ensure piper-tts is installed
pip install piper-tts
# 2. Install the plugin from the internal Hermes repo
hermes plugins install ssh://git@code.lazyworkhorse.net:2222/Hermes/hermes-piper-plugin.git
# 3. Restart gateways to load the plugin
Testing
cd /opt/data/projects/hermes-piper-plugin
pip install pytest pyyaml
python -m pytest tests/ -v
Tests cover:
- Manifest validation — confirms plugin.yaml structure and required fields
- Monkey-patch logic — verifies DEFAULT_PROVIDER is changed to 'piper'
- Idempotency — calling
_apply_piper_patch()twice is safe - Error handling — import failures and exceptions are caught gracefully
- Lifecycle hooks — on_session_start fires without errors
- Plugin registration — register() wires tools, hooks, and logging correctly
Config
The plugin changes the default provider. You can still override per
session by setting tts.provider in ~/.hermes/config.yaml:
tts:
provider: elevenlabs # override per-session
voice: "Adam" # ElevenLabs voice
Requires
piper-ttsPython package (installed via pip)- Piper voice models (downloaded automatically on first use, ~50MB each)
Safety
- If
piper-ttsis not installed, the TTS tool returns an error asking the user to install it — no silent fallback to Edge - Removing the plugin restores the original Hermes default (Edge)
- No data loss risk. No changes to any file in the Hermes repo.
Description
Hermes TTS plugin — makes Piper the default TTS provider instead of Edge. Runtime monkey-patch, zero fork needed.
Languages
Python
100%