v2.0.0 - Major Setup & Stability Improvements
J.F. Sebastian v2.0.0
Major release with improved setup experience, Python 3.10 enforcement for RVC compatibility, enhanced audio playback stability, and new personality support.
🚀 Setup & Installation Improvements
Python 3.10 Enforcement & Auto-Installation
- Auto-detect Python 3.10: Automatically finds and uses Python 3.10 if available on system
- Auto-install Python 3.10: Offers to install via pyenv or Homebrew if not found
- Smart venv management: Detects and offers to recreate venv if using wrong Python version
- RVC compatibility: Enforces Python 3.10.x specifically (3.11+ not compatible with RVC)
- Version file: Added
.python-versionfor automatic version selection with pyenv
Integrated RVC Installation
- One-step setup: RVC installation now integrated into main setup script
- Automatic pip management: Handles pip downgrade to 24.0, RVC installation, and pip upgrade automatically
- Interactive prompts: Optional RVC installation during setup (defaults to No)
- Verification testing: Automatically tests RVC import after installation
Enhanced Setup Experience
- Optional filler generation: Filler audio generation now optional during setup (saves 2-3 minutes)
- Improved error messages: Clear guidance when Python version requirements not met
- Better documentation: Comprehensive RVC installation guide with troubleshooting
🎯 Audio Playback Stability
Sequential Queue Architecture
- Eliminated race conditions: Restructured audio system to use single sequential playback queue
- Seamless transitions: Filler audio flows directly into response chunks without gaps
- Interruptible playback: Audio now writes in chunks, allowing graceful interruption
- No more hangs: Fixed blocking PyAudio calls that prevented playback interruption
State Management Improvements
- Prevent premature transitions: System now waits for all audio chunks to complete before transitioning to IDLE
- Recovery system fixes: Recovery timeout disabled during active sequential playback
- Extended timeouts: Increased PROCESSING timeout from 15s to 30s to accommodate normal processing
- Better state tracking: Added
_sequential_playback_activeflag for proper state coordination
Performance Optimizations
- Pre-loaded filler audio: All filler audio loaded at startup (eliminates 14s conversation pauses)
- Faster audio loading: Switched to soundfile library for faster WAV parsing
- Capture post-wake audio: Records audio immediately after wake word to prevent missing first words
- Optimized transitions: Seamless filler-to-response transitions without delays
🤖 New Features
K.I.T.T. Personality
- Knight Rider's AI: Added K.I.T.T. personality from the classic TV series
- Custom wake word: Trained "Hey Kitt" wake word model with 90s F1 score
- Optimized speech: K.I.T.T. speech rate adjusted to 0.92 for better character accuracy
RVC Voice Conversion Support
- Custom voices: Full support for Retrieval-based Voice Conversion (RVC)
- Streaming compatible: RVC integrated with streaming TTS pipeline
- Comprehensive docs: Added detailed RVC setup and configuration guide
- Pip compatibility workaround: Documented and automated pip 24.0 workaround for RVC dependencies
🏗️ Architecture Improvements
Modular Device System
- Device architecture: Refactored to support multiple device types (Teddy Ruxpin, Squawkers McCaw)
- Device-specific audio: Each device can have custom filler audio and PPM configurations
- Extensible design: Easy to add new animatronic devices
Wake Word Improvements
- Better detection: Fixed wake word detection during active interactions
- Improved models: Updated wake word models with 90s+ F1 scores
- Leopold model update: Refreshed Leopold personality wake word
🐛 Bug Fixes
- Fixed AttributeError in state machine (use
stateinstead ofcurrent_state) - Fixed filler playback timeout and flag management issues
- Fixed missing import for
find_audio_device_by_name - Resolved git tracking issues with personality configurations
- Fixed wake word filename references after model updates
📦 Configuration Changes
- El Rey personality: Excluded from version control (private personality)
- Updated configs: Refreshed personality configurations for Leopold and K.I.T.T.
- Python version: All documentation updated to specify Python 3.10.x requirement
Breaking Changes
- Python 3.10 required: Python 3.11+ no longer supported due to RVC dependency requirements
- Setup script changes: Setup now includes RVC installation step (step 6/12)
- Filler generation: Now optional during setup (was previously automatic)
Upgrade Notes
If upgrading from v1.0.0:
- Ensure you're using Python 3.10.x (setup script will help with this)
- Re-run
./setup.shto recreate venv with correct Python version if needed - RVC users: Setup will offer to install RVC dependencies automatically
- Regenerate filler audio if you skipped during setup:
python scripts/generate_fillers.py