INTEGRATED: Silero TTS (tts-1-silero)
- Added silero_wrapper class to speech.py for PyTorch Hub integration
- CPU-friendly, no GPU required (48kHz sample rate)
- Supports 5 languages: English (117 speakers), Russian, German, Spanish, French
- Loads on-demand via torch.hub from snakers4/silero-models
- Added 6 OpenAI-compatible voice mappings (alloy, echo, fable, etc.)
PREPARED: Chatterbox & Kokoro TTS
- Added dependencies to requirements.txt:
* git+https://github.com/resemble-ai/chatterbox.git
* transformers>=4.35.0 (for Kokoro)
* huggingface-hub[cli] (for model downloads)
- Created Makefile targets for downloading models
- Created test targets for all three new engines
Makefile Enhancements:
- make voices-silero: Download Silero models (en, ru, de, es, fr)
- make test-silero: Test Silero TTS endpoint
- make voices-chatterbox: Download Chatterbox models via HF CLI
- make test-chatterbox: Test Chatterbox with emotion control
- make voices-kokoro: Download Kokoro models via HF CLI
- make test-kokoro: Test Kokoro fast synthesis
speech.py Changes:
- Added silero_wrapper class with tts() method
- Added tts-1-silero model handler in generate_speech()
- Registered tts-1-silero model in app
- Added PCM media type for Silero (48000 Hz)
- Global state: silero_model, silero_speakers dict
Configuration:
- Updated voice_to_speaker.default.yaml with tts-1-silero section
- Mapped all 6 OpenAI voices to Silero speakers (en_0 through en_5)
Documentation:
- Updated docs/MODELS.md: Silero marked as ✅ INTEGRATED
- Updated roadmap: Phase 1 task 3 completed
- Updated status footer: 3 models rescued
- Added integration examples and Makefile commands
Next Steps:
- Test Silero integration in Docker
- Implement Chatterbox emotion control engine
- Implement Kokoro fast decoder engine
SOLUTION FOUND! Piper requires ABSOLUTE paths to model files, not relative paths.
Changes:
- Update voice_to_speaker.default.yaml to use /app/voices/... absolute paths
- Update Makefile voices target to set absolute paths via sed
- Tested: Piper works with /app/voices/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx
Root cause: PyPI piper-tts package doesn't auto-download voices or support
voice name resolution. Must use full absolute file paths.
Co-Authored-By: Claude <noreply@anthropic.com>