- New utils/text/segment_parameters.py with parameter validation, aliases, and engine compatibility
- Extended CharacterSegment to include per-segment parameters
- Extended language resolver to parse pipe-separated parameters: [Alice|seed:42|temp:0.5]
- Support for: seed, temperature, cfg, speed, top_p, top_k, inference_steps, exaggeration, emotion_alpha
- Case-insensitive aliases and order-independent syntax
- Integrated into VibeVoice Custom Character Switching mode (text and SRT)
- Fixed grouping logic to break groups when parameters change
- Added PARAMETER_SWITCHING_GUIDE.md documentation
- Updated PROJECT_INDEX.md
NOTE: Currently implemented for VibeVoice Custom Character Switching only.
Native Multi-Speaker mode and other engines will be added in future updates.
Add Step 9.5 to NEW_ENGINE_IMPLEMENTATION_GUIDE.md:
- Explain ComfyUI interrupt mechanism and why it's critical
- Provide import pattern and code examples
- Show where to add interrupt checks in SRT and TTS processors
- Add test checklist item for interrupt handling
- Reference real implementation examples
- Add interrupt checking to critical integration points list
This ensures future engine implementations include proper cancellation support from day one.
- Add prominent warning that special tokens have limited effectiveness
- Link to ResembleAI issue #186 showing lack of official documentation
- Note that implementation is ready for future improvements
- Be honest about testing results: tokens may produce minimal effects
- Don't recommend v1 over v2 (v2 has other improvements beyond tags)
Implemented full support for ChatterBox v2 with enhanced tokenization featuring
30+ special tokens for emotions, sounds, and vocal effects.
Key Features:
- Model version selection (v1/v2) in engine configuration node
- Auto-download of v2 model files (t3_mtl23ls_v2.safetensors, grapheme mappings)
- Special tags system using <emotion> syntax to avoid character switching conflicts
- Automatic conversion of <giggle>, <sigh>, <whisper> etc. to v2 format
- Cache invalidation between v1/v2 to prevent conflicts
- Full integration with character switching and pause tags
Technical Changes:
- Added model_version parameter throughout TTS and SRT processing chain
- Created chatterbox_v2_special_tags.py for tag conversion
- Updated cache keys to include model_version
- Version-aware model loading and validation
- Tag conversion happens after character/pause parsing, before engine
User can now write:
[Alice] Hello! <giggle> Nice to meet you. [pause:0.5] <whisper> Secret!
Documentation added in docs/CHATTERBOX_V2_SPECIAL_TOKENS.md
Update bundled IndexTTS-2 to latest upstream version
Technical implementation:
- Sync with https://github.com/index-tts/index-tts commits 8336824..64cb31a
- Add normalize_emo_vec() function from commit 8aa8064 for voice identity protection
- Add _load_and_cut_audio() helper from commit 0828dcb for 15s audio truncation
- Add persistent cache clearing from commit 64cb31a with torch.cuda.empty_cache()
- Fix BigVGAN CUDA kernel import path from commits ee23371, e409c4a
- Enhance emotion vector logging for better user feedback
- Add IndexTTS-2 to Multi-Engine TTS feature list
- Add IndexTTS-2 With Emotion Control section to What's New
- Add IndexTTS-2 Model Downloads section with correct model structure
- Include proper repository links (IndexTeam/IndexTTS-2, facebook/w2v-bert-2.0)
- Document unified emotion control architecture and features
- Add comprehensive IndexTTS-2 Emotion Control Guide
- Initial IndexTTS-2 TTS engine implementation
- Basic unified interface integration
- Auto-download system for IndexTTS-2 models
- Character voice switching support via QwenEmotion
- Token-based chunking system
- ComfyUI model management integration
- Fixed debug output and basic inference working
- Multi-language text preprocessing foundation
- Basic error handling framework
Note: Initial implementation - requires further testing and refinement
Major Features:
• IndexTTS-2 engine with zero-shot voice cloning and emotion control
• Multi-modal emotion support (audio refs, text descriptions, manual vectors)
• Character switching with emotion references: [Alice:angry_bob]
• Native IndexTTS-2 token-based chunking integration
• Comprehensive parameter exposure with 25+ engine-specific options
Core Components:
• engines/processors/index_tts_processor.py - Main processor with emotion support
• nodes/engines/index_tts_engine_node.py - Engine configuration node
• Updated unified TTS Text node with IndexTTS-2 integration
• Node registration in main nodes.py
Dependencies:
• Added 8 safe IndexTTS-2 dependencies to install.py and requirements.txt
• Dependency testing confirmed only descript-audiotools conflicts (already handled)
• All new deps use flexible versioning (>=) to avoid lock conflicts
Character Parser Fix:
• Fixed circular import by moving CharacterSegment to separate types.py
• Maintains backward compatibility while supporting emotion references
• Modular structure preserved (4 modules under 500 lines each)
Technical Details:
• Emotion disentanglement separates speaker identity from emotional expression
• Supports [character:emotion] syntax for per-segment emotion control
• IndexTTS-2 native chunking overrides character-based chunking when enabled
• Full caching integration and pause tag support included
• Error handling with graceful fallbacks for missing voices/emotions
MAJOR: IndexTTS-2 TTS engine integration
- Core IndexTTS engine with unified model interface integration
- Auto-downloader for HuggingFace models + GitHub source code
- Engine adapter with emotion support [Alice:angry_bob] syntax
- Cache integration for IndexTTS-2 parameters
- Factory registration for proper model management
MAJOR: Character parser modularization (930 → 300 lines each)
- Split into base_parser.py, language_resolver.py, segment_processor.py, validation.py
- Added emotion support with backward compatibility
- New split_by_character_with_emotions() method for advanced engines
- Flexible tag parsing: [de:Alice:angry_bob] support
- Language disambiguation to avoid Alice vs language code conflicts
- Full backward compatibility maintained
FEATURES:
- IndexTTS-2 emotion disentanglement (speaker vs emotion separation)
- Duration control and precise voice cloning
- Multi-modal emotion control (audio refs, text, vectors)
- Character switching with emotion references
- All official IndexTTS-2 parameters exposed
DOCS: Implementation plan and architectural TODO items added
Fix pkg_resources deprecation warning in installer
- Replace deprecated pkg_resources with importlib.metadata
- Add fallback support for Python < 3.8 compatibility
- Suppress warnings when using legacy fallback
Update VibeVoice 7B to official Microsoft repository
Technical details:
- Change repo from WestZhang/VibeVoice-Large-pt to microsoft/VibeVoice-Large
- Update documentation and downloader references
- Maintain backward compatibility with existing installations
Technical details:
- Add VibeVoice model loading and caching to ModelManager class
- Modify VibeVoice adapter to use ModelManager instead of creating own engine instances
- Add load_vibevoice_model() and unload_vibevoice_models() methods to ModelManager
- Import VibeVoice components into ModelManager with availability checking
- Update adapter to cache model and processor instances via ModelManager
- Follow ChatterBox pattern for persistent model caching across node executions
Fix F5-TTS model name case sensitivity issue
- Fix uppercase V1 being rejected in model validation
- Add regex normalization for version numbers (V1 -> v1)
- Ensure backward compatibility with saved workflows
Fix Higgs Audio model management with CUDA Graph compatibility toggle
Technical implementation:
- Add enable_cuda_graphs parameter to resolve CUDA Graph vs model unloading conflict
- Implement DynamicCache support for safe memory management mode
- Fix DynamicCache compatibility issues (reset, seq_length, copying)
- Add conditional cache creation and cleanup logic
- Update tooltip with accurate performance trade-offs (12 vs 55+ tok/s)
Documents all critical dependency conflicts, solutions, and compatibility constraints for universal Python/platform support. Includes troubleshooting guide and testing matrix.
- Fix HiggsAudioEngineNode return type from HIGGS_AUDIO_ENGINE to TTS_ENGINE for unified node compatibility
- Remove duplicated parameters: seed, enable_cache, enable_chunking, max_tokens_per_chunk, silence_between_chunks_ms
- Keep engine-specific parameters: max_new_tokens (generation limit), voice_preset, audio_priority, system_prompt
- Update TTS Text node to pass max_chars_per_chunk to Higgs Audio adapter
- Maintain character-based chunking via ImprovedChatterBoxChunker with token-to-char conversion
- Preserve clean separation: universal parameters in TTS Text, engine-specific in Engine nodes
The Higgs Audio Engine Node now properly connects to unified TTS Text and TTS SRT nodes
while maintaining engine-specific generation parameters that other engines don't have.
- Created StatelessChatterBoxWrapper to eliminate shared state corruption
- Wrapper calculates conditions fresh for each generation (no self.conds)
- Updated streaming processor to use stateless wrapper with batch_size control
- Modified streaming model manager to provide stateless wrappers
- Updated SRT nodes to use stateless generation in streaming mode
- Added comprehensive tensor detaching to prevent autograd issues
- Initial testing shows parallel generation working without immediate crashes
Note: Requires extensive testing to confirm stability with high worker counts
- Create universal streaming module in utils/streaming/
- Implement StreamingCoordinator to replace all format-specific routers
- Create universal StreamingSegment data structure (no more format conversions)
- Implement UniversalWorkQueueProcessor for engine-agnostic parallel processing
- Add ChatterBox streaming adapter preserving all existing functionality
- Add F5-TTS streaming adapter with language model switching support
- Document complete streaming integration plan in F5TTS_STREAMING_INTEGRATION_PLAN.md
This creates the foundation for eliminating the current spaghetti code where
each node type needs its own router and format conversions. The universal
system works with any engine through adapters while preserving all existing
functionality.
- Remove orphaned dynamic_worker_manager.py (never imported/used)
- Update PROJECT_INDEX.md to reflect file removal
- Enhance STREAMING_ARCHITECTURE.md with feasibility analysis for F5-TTS
- Document that StreamingWorkQueueProcessor is the active implementation
- Confirm streaming architecture is engine-extensible via adapter pattern
Implement RVC (Real-time Voice Conversion) as unified engine in TTS Audio Suite:
• RVC Engine Node: Consolidates RVC model, Hubert model, and voice conversion parameters into single interface
• RVC Pitch Extraction Options: Advanced pitch settings for professional control
• Vocal Removal Node: UVR5-based audio source separation for vocals/instrumentals
• Merge Audio Node: Advanced audio mixing with multiple algorithms
• Voice Changer Integration: Extended to support both ChatterBox and RVC engines
Architecture Features:
• Modular engine adapter following existing TTS Suite patterns
• Intelligent model management with caching and auto-discovery
• Seamless audio format conversion between ComfyUI and RVC formats
• Progressive complexity (simple presets to advanced controls)
• Professional error handling with graceful degradation
Integration Benefits:
• Compatible with Character Voices and existing TTS workflow
• Supports complex audio production workflows
• Foundation for future RVC enhancements and model training
Co-authored-by: SayanoAI <noreply@github.com>
- 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
- Make separate commit/changelog descriptions the default (no more broken auto-categorization)
- Add auto-increment support: use 'patch', 'minor', 'major' instead of manual version numbers
- Fix categorization algorithm that was misclassifying bug fixes as Added items
- Add simple mode to bypass automatic categorization entirely
- Fix manual changelog entry for v3.4.2 (was previously miscategorized)
- Update documentation with new recommended usage patterns
- Add --commit and --changelog flags for separate descriptions
- Add interactive mode with separate prompts for each
- Add file input support (--commit-file, --changelog-file)
- Maintain backward compatibility with legacy single-description mode
- Update documentation with clear commit vs changelog guidelines
- Establish principle: "Commit = Development diary, Changelog = User release notes"
- Enhanced keyword matching with domain-specific terms for better categorization
- Added context-aware parsing for emoji section headers
- Fixed title skipping to prevent main description from being categorized
- Changed default from 'Fixed' to 'Added' for feature releases
- Corrected v3.4.0 changelog formatting manually
- Updated version management guide with script improvements and lessons learned
- Character parser now uses original text instead of processed text for character parsing
- Follows F5-TTS pattern: parse characters from inputs["text"], then handle pause tags per segment
- Fixes issue where final narrator text was incorrectly attributed to last character
- Maintains all existing multilingual and caching functionality
- Preserves line structure needed for proper character attribution
- Add [language:character] syntax support for multilingual TTS
- Implement language model switching for F5-TTS and ChatterBox
- Add cache optimization to skip model loading when all segments cached
- Fix character parser setup order to ensure proper character recognition
- Add pause tag awareness to cache pre-checking
- Support language defaults in character alias files
- Update documentation with language switching examples
Correct misleading .wav-only references throughout the guide to reflect
actual supported audio formats. The voice discovery system supports
.wav, .mp3, .flac, .ogg, .m4a, and .aac files, but documentation
incorrectly suggested only .wav files were supported.
Changes:
- Update file structure examples to show mixed audio formats
- Add comprehensive supported formats list in multiple sections
- Fix engine differences section (audio files vs .wav files)
- Update setup instructions for both F5TTS and ChatterBox engines
- Enhance troubleshooting section with format information
- Update all example directory structures with diverse formats
- Add comprehensive F5-TTS best practices section to README.md
- Include inference optimization guidelines in CHARACTER_SWITCHING_GUIDE.md
- Cover reference audio duration, case handling, punctuation, and pause control
- Help users avoid common F5-TTS generation failures and audio artifacts
- Fixed ChatterBox sequential generation bug causing CUDA tensor indexing crashes
- Added dynamic space padding for short text segments in character switching mode
- Space padding preserves speech quality while providing sufficient tokens
- Improved version bump script to prevent downgrade attempts