Added example for urgent messages with higher volume playback.
Also updated voice example to use lessac-high.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added optional 'urgent' boolean field to POST /notify requests.
When urgent=true, audio is played at 1.5x volume with clipping
protection for critical messages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tests now check for valid values rather than hardcoded defaults,
allowing the default voice to be configured via .env without
breaking tests.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed voice field in NotifyRequest from hardcoded default to None,
allowing the route handler to use settings.default_voice from .env.
Added EnvironmentFile directive to systemd service for reliable config loading.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents:
- systemd service management (start/stop/restart)
- Log viewing with journalctl
- API endpoints and examples
- Configuration via environment variables
- Troubleshooting common issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- User service file for ~/.config/systemd/user/
- Restarts on failure with 5s delay
- Logs to journald
Install with:
cp voice-server.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now voice-server
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
A local HTTP service that accepts text via POST and speaks it through
system speakers using Piper TTS neural voice synthesis.
Features:
- POST /notify - Queue text for TTS playback
- GET /health - Health check with TTS/audio/queue status
- GET /voices - List installed voice models
- Async queue processing (no overlapping audio)
- Non-blocking audio via sounddevice
- 73 tests covering API contract
Tech stack:
- FastAPI + Uvicorn
- Piper TTS (neural voices, offline)
- sounddevice (PortAudio)
- Pydantic for validation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>