Fix PyTorch installation syntax error
Invalid pip requirement syntax with local version labels in version specifiers.
The +cu121 suffix is only valid with == or != operators, not with >= operators.
Now correctly passes CUDA version via --index-url instead.
Also add graceful error handling for RVC monotonic-alignment-search installation
on systems without C++ build tools.
Windows users see failed WeTextProcessing install due to missing build tools,
even though our code has graceful fallback. This causes user confusion.
Changes:
- Detect Windows and skip WeTextProcessing installation on Windows
- Use fallback text processing instead (slower for Chinese but works fine)
- Add explanatory message in install summary for Windows users
- No functional impact - all TTS generation still works normally
Now Windows users will see a clean install without error messages about
WeTextProcessing, while still getting full IndexTTS-2 functionality.
Fix IndexTTS-2 text normalization dependency handling
Technical implementation:
- Move WeTextProcessing from standard requirements to smart installer
- Add graceful fallback from WeTextProcessing to wetext package
- Implement proper testing for text normalization packages
- Handle Windows pynini compilation failures elegantly
Fix WeTextProcessing package name for IndexTTS-2 text normalization
Technical fix:
- Change from wetext>=0.0.9 to WeTextProcessing (correct package name)
- WeTextProcessing is the actual PyPI package for Chinese/English text normalization
- Keep tn as fallback dependency for Linux systems
- Fix import compatibility issues with IndexTTS-2 text processing
Add missing tn text normalization dependency for IndexTTS-2
Technical fix:
- Add tn package as fallback dependency for IndexTTS-2 text processing
- IndexTTS-2 uses wetext as primary and tn as fallback normalizer
- Some Linux systems fail wetext import and need tn fallback
- Prevents ModuleNotFoundError for tn.chinese module
Fix install script numpy downgrade issue with faiss-gpu
Technical details:
- Install faiss-gpu-cu12 with --no-deps to prevent numpy downgrade
- faiss-gpu has numpy<2 constraint that forces downgrade from numpy 2.x to 1.26.4
- All other faiss-gpu dependencies already satisfied in environment
- Preserves RVC GPU acceleration while respecting numpy compatibility logic
Fix missing julius dependency for Higgs Audio and RVC components
Technical fix:
- Add julius to manual dependency list for descript-audiotools --no-deps installation
- Resolves missing julius import error when using Higgs Audio 2 engine
- Julius required by RVC demucs models for audio separation DSP operations
- References issue #82 julius dependency missing error
- Add CUDA suffixes to torchaudio and torchvision package names
- Prevents mixed GPU PyTorch + CPU torchaudio installation
- Fixes major performance degradation and VRAM issues
- Resolves user reports of slow IndexTTS-2 generation
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
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
Fix critical Windows installation issues
Technical fixes:
- Fix Windows UTF-8 encoding errors in subprocess calls
- Fix PyTorch version parsing failure on CUDA suffix (+cu124)
- Fix PyTorch 2.6.0 availability issues with graceful fallback
- Improve CUDA version detection and compatibility logic
Fix VibeVoice model reloading and transformers compatibility
Technical changes:
- Fix unified model interface cache key missing additional_params
- Add transformers>=4.51.3 requirement for VibeVoice compatibility
- Remove excessive debug prints from VibeVoice engine
- Fix RVC numba JIT disable logic for correct Python version detection
- Fix attention_mode and quantize_llm_4bit not triggering model reloads
Implemented complete VibeVoice engine integration following unified modular architecture:
Engine Infrastructure:
- VibeVoice engine wrapper with model management and generation
- Engine adapter for standardized interface integration
- Proper ComfyUI model management integration
- Support for both 1.5B and 7B models (Microsoft + community)
Core Features:
- Two generation modes: Custom Character Switching and Native Multi-Speaker
- Character voice management with [CharacterName] tag support
- Pause tag processing with [pause:xx] syntax
- Time-based chunking UI (minutes converted to characters internally)
- Unified cache system following ChatterBox patterns with 💾 indicators
- Full integration with Character Voices node
- 90-minute generation capability and 4-speaker native mode
Technical Implementation:
- Engine configuration node with ⚙️ emoji consistency
- Unified TTS node integration via processor delegation
- Proper parameter validation and device management
- Dependency management with --no-deps installation approach
- Fixed name collision issues (vibevoice/ → vibevoice_engine/)
- Comprehensive error handling and fallback systems
Architecture Compliance:
- Follows exact Higgs Audio integration patterns
- Uses unified streaming infrastructure
- Maintains modular design under 600 lines per file
- No code duplication, reuses all existing utilities
- Proper separation: Engine → Adapter → Processor → Unified Node
Installation & Dependencies:
- Added VibeVoice to install.py with dependency conflict resolution
- Updated nodes.py with conditional imports and diagnostics
- Comprehensive PROJECT_INDEX.md documentation
Tested and verified:
- Model downloading and loading
- Voice reference handling (dropdown and Character Voices)
- Cache functionality with proper hit indicators
- Multi-character generation and pause processing
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)
- Add automatic detection for libsamplerate0-dev and portaudio19-dev in install script
- Display helpful error messages with specific install commands for Ubuntu/Debian and Fedora/RHEL
- Update README with comprehensive system dependency documentation
- Explain why these dependencies are needed (audio resampling and voice recording)
- Windows users unaffected (packages come pre-compiled)
Fixes Discord user feedback about missing libsamplerate0-dev requirement.
- descript-audiotools forces protobuf downgrade from 6.32.0 to 3.19.6
- This breaks google.protobuf.internal.builder import needed by engines
- Install descript-audiotools with --no-deps to prevent protobuf conflicts
- Maintains compatibility while fixing ChatterBox and F5-TTS engine failures
- Based on PyPI metadata analysis of cached-path, descript-audio-codec, and librosa
- Added all required dependencies for packages installed with --no-deps flag
- Ensures F5-TTS, Higgs Audio, and ChatterBox engines work without missing imports
- Uses flexible version constraints to avoid conflicts with other custom nodes
- Fixes google.cloud.storage, einops, lazy_loader, and other missing imports
Add all documented SAFE packages that were missed:
- s3tokenizer>=0.1.7 (ChatterBox - tested safe, no conflicts)
- vector-quantize-pytorch (Higgs Audio - clean install)
- resemble-perth (ChatterBox - works in ChatterBox)
- diffusers>=0.30.0 (ChatterBox - likely safe)
- audio-separator>=0.35.2 (vocal removal - heavy deps but no conflicts)
- hydra-core>=1.3.0 (F5-TTS - clean install, minimal dependencies)
Add missing dependencies for --no-deps packages:
- lazy_loader (required by librosa)
- filelock (required by cached-path)
This should resolve all missing module errors for ChatterBox, F5-TTS, and Higgs Audio engines.