# Agent voice example kit

Reference implementation, October31,2026. Educational example scripts; inspect and adapt for your environment. No voice recordings or credentials included.

Full setup guide: https://learn.meekertechnologies.com/docs/chatterbox-hooks/

1. Inspect voice_hook.py, voice_worker.py, and config.example.json.
2. Create a private Python3.11 virtual environment; install chatterbox-tts using upstream compatibility guidance: https://github.com/resemble-ai/chatterbox .
3. Copy config.example.json to config.json; supply permissioned reference WAVs.
4. Send a synthetic Stop JSON payload on stdin to voice_hook.py.
5. Run voice_worker.py --once --dry-run with the same config. This uses no inference or playback but checks the voice reference exists. Change turn_id before the next test.
6. Test --once --no-play, inspect/listen to the WAV, then test actual playback.
7. Run one worker in a terminal; merge the Stop handler into the applicable Claude Code/Codex hook config and review it through /hooks. Don't replace existing settings or register twice.

Example marker: 🗣️ riley: Your draft is ready. Nothing was sent.

No network service is exposed; model weights can download on first model loading. Queue processing has no hard model-inference timeout. Manual restart required for failed jobs; no automatic replay. Mute is checked between jobs, not during synthesis/playback. Queue entries briefly contain the selected spoken text; --no-play retains audio. Voices and reference files are entirely local configuration, not product account IDs. Code snippets in the guide use macOS/Linux Python paths; Windows uses .venv/Scripts/python.exe.

Verified:19 synthetic parser/queue checks, no-model dry-run consumption. Not verified:fresh dependency/model installation, live hook dispatch, GPU platforms, or audible playback. No promise of unattended production reliability.
