Skip to content

v2.0.0 - Major Setup & Stability Improvements

Choose a tag to compare

@pjdoland pjdoland released this 23 Dec 21:15
· 130 commits to main since this release

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-version for 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_active flag 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 state instead of current_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:

  1. Ensure you're using Python 3.10.x (setup script will help with this)
  2. Re-run ./setup.sh to recreate venv with correct Python version if needed
  3. RVC users: Setup will offer to install RVC dependencies automatically
  4. Regenerate filler audio if you skipped during setup: python scripts/generate_fillers.py