Add MOSS LoRA loading support and compatibility validation
Implementation details:
- Add managed MOSS LoRA discovery and Hugging Face install flow under models/TTS/moss_tts/loras
- Wire PEFT adapter loading through the MOSS engine, adapter, cache, generation info, and unified model interface
- Validate adapter base-model compatibility before loading to prevent huge PEFT mismatch errors
- Raise real ComfyUI popup errors for MOSS LoRA/base model mismatches instead of generic engine creation failures
- Patch bundled MOSS Delay and TTSD classes for PEFT generation compatibility
- Upgrade installer requirement handling so outdated packages like peft are upgraded automatically
- Document the MOSS LoRA folder contract and update MOSS metadata
Fix Qwen3-TTS auto attention fallback for broken flash-attn installs
Technical details:
- Validate flash_attn package metadata before selecting flash_attention_2 in auto mode
- Fall back to sdpa when flash-attn is missing or partially installed on Windows
- Add runtime retry to sdpa when auto-selected flash_attention_2 fails during model load
Address issue #294
- discover local community VibeVoice folders from both TTS roots and direct vibevoice paths
- support nested snapshot layouts such as VibeVoice7b-low-vram/4bit
- align node dropdown discovery with runtime model path resolution
- avoid startup-time VibeVoice import poisoning by switching to lazy package loading
- apply transformers compatibility patches on the unified VibeVoice load path
- move quantized inner-model buffers on the real writable object instead of the read-only wrapper property
Technical details:
- Add model_mmap_residency fallback to the shared ComfyUI wrapper
- Add pinned memory, dtype, patcher, and device compatibility methods
- Return full model memory for non-mmap-backed engines instead of a zero stub
- Add regression coverage for wrapper compatibility behavior
Fixes#276Fixes#278
Fix ChatterBox SRT multiline segment routing and 23-Lang language tag switching
Technical details:
- Route Classic ChatterBox and ChatterBox Official 23-Lang multiline SRT subtitles through segmented generation
- Fix ChatterBox Official 23-Lang multilingual SRT processing to keep per-segment language tags like [pt:]
- Add generic pt alias so language-only Portuguese tags parse correctly
Add Granite ASR engine and expand unified ASR support
Implementation details:
- Add Granite ASR engine node, adapter, runtime, and unified downloader integration
- Reuse the Qwen forced aligner for optional custom Granite timestamps and SRT output
- Expose engine-side ASR translation target and prompt templates for Granite and Qwen
- Fix SRT overflow splitting so subtitle text is no longer silently dropped
- Update README and engine metadata for the expanded ASR lineup
Improve ChatterBox community model loading and Russian model handling
Technical details:
- preserve language context when loading local ChatterBox models
- repair missing files in existing ChatterBox model folders before fallback
- infer ChatterBox T3 text vocabulary size from checkpoint weights for community finetunes
- adapt bundled tokenizer wrapper to community tokenizer space and case conventions
- remove unsupported Russian classic Cyrillic experimental dropdown entry after validation
- Fix inline edit tags (e.g. <Laughter>) incorrectly applying to entire
combined audio when pause tags are present. Now parse pause tags first,
extract edit tags per text fragment, apply edit post-processing per
fragment before combining with silence.
- Fix force_speaker_kv + short fragments: replace hard error with smart
auto-disable for fragments under 20 chars. Long fragments still benefit
from force_speaker_kv; short ones generate cleanly without noisy tails.
- Fix VRAM unload/reload crash ("Inference tensors do not track version
counter"): clone pca_state dict tensors before .to() to escape
inference-mode version tracking after ComfyUI "Unload Models".
- Add Echo-TTS to tts_audio_suite_engines.yaml source of truth
(English-only, ~7GB total, diffusion-based, CC-BY-NC-SA).
- add echo-tts factory in unified model interface
- ensure fish-s1-dac-min loads via the same managed path
- load echo-tts via unified interface for VRAM management
Integrate Egyptian Arabic (oddadmix) model and fix vocab mismatch
Technical details:
- Added 'oddadmix/chatterbox-egyptian-v0' to chatterbox-23l engine
- Implemented automatic download of 'resemble-ai/chatterbox' config.json to resolve vocabulary mismatch
- Updated engine documentation source of truth (YAML) with consistent Arabic flags
Fix Higgs Audio CUDA graph crashes on model reload
Implementation:
- Only reset cuda_graphs_initialized flag on unload, minimal intervention
- Let Higgs Audio's natural lazy initialization recreate graphs and caches
- Removed overly aggressive dict clearing that broke generation
- Cleaned up unnecessary debug prints from handler and engine startup
- Updated tooltip to clarify CUDA graphs are now safely manageable
- Removed legacy corruption flag checking in adapter (no longer needed)
This enables safe VRAM unloading with CUDA graphs enabled while preserving
audio quality and generation speed after model recreation.
Fix Qwen3-TTS CUDA graph memory corruption on Windows
Technical details:
- Add Qwen3TTSHandler with proper CUDA graph cleanup
- Delete static tensors and graph objects before unload
- Force garbage collection to release memory pools
- Fix SRT node cache key to include optimization settings
- Prevent double-initialization when switching between TTS/SRT nodes
Address Windows cudaMallocAsync allocation conflicts that prevented
model reloading after VRAM clear when CUDA graphs enabled.
Fix ComfyUI model wrapper compatibility for TTS engines
Technical details:
- Add partially_unload_ram shim in ComfyUIModelWrapper
- Delegate to existing partial unload path to avoid AttributeError on newer ComfyUI
Fix Qwen3-TTS device mismatch via adapter refactoring
Technical details:
- Refactor adapter to query unified interface instead of storing engine references
- Add _get_engine() method that always fetches current engine from unified interface
- Remove self.engine storage to prevent stale CPU-bound references
- Add cache invalidation when unified interface unloads model variants
- Fix language dropdown being ignored (character parser language default)
- Improve device management centralization in unified model interface
Fix CosyVoice device mismatch in voice restoration
Technical implementation:
- Add CosyVoiceHandler.partially_load() for proper device reload
- Update base_wrapper.model_load() to use handler's partially_load()
- Move all CosyVoice components (llm, flow, hift, campplus) with nested modules
- Simplify CosyVoice engine wrapper device management (delegate to handler)
- Add CosyVoice variant setting for <restore> tags (RL/standard options)
- Update settings UI and API endpoint for variant selection
Fixes device tensor mismatch errors when TTS and VC restoration run sequentially
and prevents unnecessary model unload/reload when variants match.
Add Vietnamese (Viterbox) community finetune support
Implementation details:
- Add Vietnamese (Viterbox) as model_version option for ChatterBox Official 23-Lang
- Support dolly-vn/viterbox repository with expanded Vietnamese tokenization (2549 tokens)
- Add flexible T3 model filename detection for community finetunes
- Add version normalization for file lookups and tokenizer selection
- Add Vietnamese language code mapping in language_mapper.py
- Fix vocab size detection by loading tokenizer before T3 model initialization
- Support 'as-is' format handling for mixed .pt/.safetensors community models
Fixes issue #63 - voices folder not being picked up from extra_model_paths.yaml
Changes:
- Add 'voices' to folder_type lookup in _load_tts_paths()
- Always call _setup_default_tts_paths() but skip already-configured keys
- Prevents overwriting user-configured voices paths from extra_model_paths.yaml
Co-authored-by: Andy Williams <sobakasu@users.noreply.github.com>
Fix IndexTTS-2 external installation detection
Technical changes:
- Replace keyword-based path detection with path-based detection
- Check if indextts module is inside TTS Audio Suite directory structure
- Fix false positives when ComfyUI installed in directories containing 'conda', 'pip', etc.
- Improve error message to show both detected and expected paths
Address issue #213 - User reported false positive when using conda environment
Implements support for Fun-CosyVoice3-0.5B (standard) and Fun-CosyVoice3-0.5B-RL variants with lazy downloading:
- Only downloads variant-specific LLM file (~2GB) when needed
- Shared files (flow.pt, hift.pt, etc.) downloaded once and reused
- Both variants use same folder: Fun-CosyVoice3-0.5B
- Proper cache invalidation when switching between variants
Technical changes:
- Patched bundled CosyVoice library to accept llm_filename parameter
- Modified downloader to use SHARED_FILES + variant-specific LLM
- Audio cache now includes model_variant in hash calculation
- Model loading cache uses llm_filename in additional_params
- Added variant detection in path resolution and verification