Modified /api/tts-audio-suite/available-characters to return both
character filenames and their aliases from the character alias map.
This allows the tag editor dropdown to show friendly alias names like
'Alice' alongside actual voice files.
Changed /api/tts-audio-suite/available-languages endpoint to derive
languages from the authoritative LANGUAGE_ALIASES dictionary in
language_mapper.py instead of hardcoded list. This ensures the tag
editor always has all supported language codes.
- Added language-constants.js with API-driven language list (fallback to hardcoded)
- Added /api/tts-audio-suite/available-languages endpoint in __init__.py
- Updated widget-ui-builder.js to use getSupportedLanguages()
- Updated widget-event-handlers.js to use isLanguageCode() for detection
- Fixes issue where [seed:5|steps:3] now correctly becomes [de:|seed:5|steps:3]
instead of [de:5|steps:3] by properly detecting language codes vs parameters
- Create /api/tts-audio-suite/available-characters endpoint
- Make widget's populateCharacters() async and try to fetch from API
- Falls back to hardcoded defaults if API unavailable
- Endpoint returns sorted list of discovered character voices
Centralize numba compatibility system with smart testing
Technical implementation:
- Replace 15+ duplicate JIT workaround blocks with unified system
- Add utils/compatibility/numba_compat.py with startup testing
- Implement fallback for environments without compatibility module
- Test librosa.stft() at startup and apply workarounds only when needed
- Eliminate contradictory startup messages between init and nodes
- Maintain backward compatibility with legacy Python 3.13 fixes
- Enhanced geometric feature extraction for comprehensive mouth shape analysis
- Implemented vowel classification (A, E, I, O, U) based on lip geometry
- Added new SRT format option to display detected viseme sequences
- New toggle for enabling/disabling viseme detection
- Caching system supports viseme detection state
- Viseme sequences grouped for readability (A3-E2-I-O4)
Technical implementation:
- Extract 8 geometric features: lip width/height, mouth area, roundedness, curvature
- Rule-based vowel classification with confidence scoring
- Frame-by-frame viseme detection integrated with existing movement analysis
- ~20% performance impact when enabled, fully cached for repeated analysis
- Replace relative imports with absolute imports using importlib.util
- Fixes 'attempted relative import with no known parent package' error
- All unified nodes (TTS Text, TTS SRT, Voice Changer) now use consistent import pattern
- Preserves engine delegation functionality while fixing startup issues
Phase 1 Complete: F5-TTS Edit Improvements Plan
- Add 🔧 F5-TTS Edit Options node following Audio Analyzer pattern
- Implement smart caching system with LRU eviction for fast iteration
- Enhanced crossfade with configurable curves (linear, cosine, exponential)
- Adaptive crossfade adjusts duration based on segment size
- Cache system supports 10-1000 entries with MD5-based keys
- Backward compatibility: main node works without options node
- Restore F5-TTS Speech Editor (OLD) for comparison testing
Technical improvements:
- core/f5tts_edit_cache.py: Complete caching infrastructure
- core/audio_compositing.py: Enhanced with curve types and adaptive behavior
- core/f5tts_edit_engine.py: Integrated cache and options support
- nodes/f5tts_edit_options_node.py: New options node with all parameters
- nodes/f5tts_edit_node_old.py: Restored original version for comparison
Ready for testing problematic segments like "55" to "7 year"
- Renamed '🎵 Audio Analyzer' to '🌊 Audio Wave Analyzer' throughout project
- Updated all node display names, tooltips, documentation, and web interface
- Preserved class names and internal identifiers for ComfyUI compatibility
- Fixed nfe_step bug in F5-TTS nodes: limited max value to 71 to prevent ODE solver issues
- Added validation clamping and warning messages in F5-TTS Node and F5-TTS Edit Node
- Updated tooltips to warn about ODE solver issues above 71
- Update display names to use 🔧 emoji in both __init__.py and nodes.py
- Ensure consistent branding across all registration files
- Complete Audio Analyzer Options Node architecture implementation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Renamed nodes with '(diogod)' suffix to avoid conflicts with original ChatterBox Voice repository
- SRT Voice TTS node remains unchanged as it was unique to this implementation
- Fixed model detection to properly identify local models by checking for s3gen.pt files
- Added support for both standard and legacy model directory structures
- Resolved UnboundLocalError in SRT generation by initializing 'any_segment_cached'
- Simplified startup messages for cleaner end-user experience
- Removed unnecessary debug output while maintaining dev capabilities
These changes ensure more reliable operation and better user experience