Commit Graph
65 Commits
Author SHA1 Message Date
diodiogod 5a28a46010 Add audio.cpp multi-task support 2026-08-13 21:41:16 -03:00
diodiogod 237765af9e Add character alias management and refresh support 2026-07-23 14:03:34 -03:00
diodiogod 3cf49110ae Direct dependency warnings to suite installer
- Print the active ComfyUI Python executable with install.py
- Remove misleading requirements.txt and package-specific repair advice
- Add regression coverage for installation guidance
2026-07-16 15:03:40 -03:00
diodiogod 97f4a0c365 Add unified MOSS audio generation workflows 2026-07-16 12:35:01 -03:00
diodiogod 4ccc0aa5ee Unify Hugging Face download output 2026-07-15 22:52:14 -03:00
diodiogod f344099e3b Add unified voice design and character saving 2026-07-15 00:22:32 -03:00
diodiogod 7ff08f6070 Version 5.4.7
Enhance Character Voices reference editing

Implementation details:
- Add automatic transcription loading and workflow-local overrides
- Add modular trim-range controls and reference_audio_only output
- Preserve source provenance while preventing stale path fallbacks
- Unify tensor-first voice reference resolution across affected engines

Fixes #318
2026-07-13 11:54:19 -03:00
diodiogod 068c3f1f1e Add IndexTTS-2 inline emotion controls 2026-07-10 23:21:53 -03:00
diodiogod 35e0b27913 Persist OmniVoice builder presets and layout 2026-06-19 14:38:44 -03:00
diodiogod 9cb78c3157 Finalize Higgs Audio v3 transformers 5 integration 2026-06-11 01:16:55 -03:00
diodiogod 86f29abfa5 Add audio analyzer file preview refresh 2026-05-25 13:28:42 -03:00
diodiogod 2b69130a42 Add MOSS-TTS engine family with native TTSD support (#295)
* docs: add new engine integration guide flow

* docs: link new engine guide navigation

* docs: clarify SRT is required for TTS engines

* docs: document SRT reuse of TTS processor

* docs: move new engine guide link below timeline

* Add MOSS-TTS engine integration

* docs: add reference input mode to engine research

* Add MOSS-TTS engine checkpoint

* Refine MOSS prompt fields and parameter switching

* Refine MOSS prompt field warnings and caching

* Improve MOSS inline edit handling and VRAM handoff

* Improve MOSS native dialogue mapping and UI

* docs: add long-form model analysis and VibeVoice reference

* Improve MOSS TTSD chunking, interrupts, and SRT mapping

* Refine MOSS mapping, device checks, and metadata

* Make MOSS native incompatibilities hard-fail

* Document MOSS native hard-fail compatibility rules
2026-05-18 16:42:53 -03:00
diodiogod 4521ffbc79 Add unified RVC training workflow and improve RVC UX 2026-04-05 11:09:06 -03:00
diodiogod 025c7b09b6 Version 4.22.7
Fix Python 3.13 numba and librosa compatibility handling

Technical details:
- Stop forcing NUMBA_DISABLE_JIT at startup on Python 3.13
- Use safe audio loading and resampling in IndexTTS-2 and ChatterBox Official 23-Lang
- Update audio hashing and fallback paths for newer numba stacks
2026-03-13 12:34:46 -03:00
diodiogod adf615a8af Version 4.22.6
Address issue #271 Voice Capture startup and input device handling

Technical details:
- Defer sounddevice import and PortAudio probing until Voice Capture is actually used
- Restore the Voice Capture record button and replace the temporary raw device text field with a lazy dropdown
- Resolve system default input devices explicitly and use native sample rate for the default path
- Keep IndexTTS-2 unchanged because it reproduces successfully in our Python 3.13 environment
2026-03-13 10:13:31 -03:00
diodiogod fdb79d16e3 Version 4.21.20
fix: catch numba JIT crash at startup and disable JIT automatically

- Silent except in numba compat check was swallowing the crash
- When librosa.resample test crashes at startup, JIT is now disabled
- Affected users: numba 0.64.0 + NumPy 2.x on specific hardware (RTX 5080 confirmed)
- verbose=True so users can see when JIT gets disabled and why
2026-02-28 21:38:02 -03:00
diodiogod 2e43bfd9f7 Version 4.21.18
Fix: Restore Numba/librosa JIT compatibility test at startup for NumPy 2.x

- Restore full librosa JIT test at startup for NumPy 2.x environments
- PR 262 lazy-import optimization had deferred this test too late, after numba
  was already loaded, making NUMBA_DISABLE_JIT ineffective
- NumPy 1.x users still skip the test entirely (zero cost)
- Python 3.13+ still handled by preemptive env var (zero cost)
- Addresses get_call_template AttributeError crash in librosa on affected hardware
2026-02-28 09:28:17 -03:00
diodiogod d8af6a6d5b Version 4.21.14
Enhance Character Voices preview UX with native audio controls

Technical details:
- Add Character Voices frontend preview extension with in-node audio controls (seek/scrub/volume)
- Add /api/tts-audio-suite/voice-preview endpoint for dropdown voice playback
- Fix Character Voices source metadata when direct audio input overrides dropdown selection
- Preserve workflow compatibility by keeping existing node I/O signatures unchanged
2026-02-21 12:35:10 -03:00
diodiogodandNicolas Martel 6195d5407a Merge true lazy node PR 262 but keep instant check_dependencies
Co-authored-by: Nicolas Martel <teoxysoft@gmail.com>
2026-02-20 17:45:50 -03:00
diodiogod d74eef703d Version 4.20.2
Restrict Transformers to Qwen3-TTS-compatible range

Implementation details:
- Cap transformers<=4.57.3 in requirements and installer
- Add startup warning when Transformers 5.x is detected
- Add investigation report for Qwen3-TTS + Transformers 5.x
2026-02-02 22:24:27 -03:00
diodiogod 7bf270cae9 Version 4.19.12
Add Qwen3-TTS torch.compile optimizations (based on dffdeeq/Qwen3-TTS-streaming)

Implementation:
- Integrate streaming optimizations from dffdeeq/Qwen3-TTS-streaming fork
- Add torch.compile support with mode selection (default/reduce-overhead/max-autotune)
- Add manual CUDA graph capture option for additional optimization
- Update to support PyTorch 2.10+ and triton-windows 3.6+
- Remove obsolete inductor patches (not needed for PyTorch 2.10+)
- Add comprehensive optimization documentation with benchmark results
- Enable TensorFloat32 for Ampere+ GPUs automatically

Credit: Streaming implementation based on work by dffdeeq
https://github.com/dffdeeq/Qwen3-TTS-streaming
2026-01-30 17:30:22 -03:00
diodiogod a2e11108e2 Version 4.19.5
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.
2026-01-28 13:22:29 -03:00
diodiogod e840c6df4d Version 4.19.2
Add configurable VC engine for <restore> tags

Technical implementation:
- Add ComfyUI settings menu option for VC engine selection
- Support three VC engines: ChatterBox 23-Lang, ChatterBox, CosyVoice
- Fix module import to use shared sys.modules instance
- Implement file-based settings cache for persistence across restarts
- Add beforeQueuing hook to ensure settings sync before workflows
2026-01-28 12:18:54 -03:00
diodiogod c4ef2acf03 Version 4.15.8
Address issue #191: utils namespace conflict

Technical details:
- Detect and remove poisoned utils module from sys.modules
- Check for single-file utils.py masquerading as package
- Clear before loading nodes.py to prevent import failures
- Add detailed warning message for debugging
2025-12-17 09:53:38 -03:00
diodiogod cce58d3fed Version 4.15.2
Fix utils package import conflicts

Technical details:
- Replace all from utils... imports with direct file path loading in __init__.py
- Use importlib.util.spec_from_file_location for numba_compat, ffmpeg_utils, and API endpoints
- Prevent Python path pollution from other extensions with utils.py files
- Maintain silent success behavior for numba compatibility checks
2025-12-12 22:36:18 -03:00
diodiogod 9907e8964c Add ComfyUI settings menu for inline edit tag precision/device control
Features:
- New settings menu under "TTS Audio Suite > Step Audio EditX (Inline Tags)"
- Precision options: auto, fp32, fp16, bf16, int8, int4
- Device options: auto, cuda, cpu, xpu
- Settings persist across ComfyUI restarts
- API endpoint for JavaScript-Python communication
- Automatic dead engine detection and reload

Implementation:
- web/tts_audio_suite_settings.js: Frontend settings UI
- __init__.py: API endpoint /api/tts-audio-suite/settings
- edit_post_processor.py: Global settings storage and retrieval
- step_audio_editx_audio_editor_node.py: Settings detection and engine reload logic

Notes:
- Settings require browser refresh (F5) to take effect (documented in tooltips)
- Only affects inline edit tags, not Step Audio EditX node direct usage
- Fixes dead engine detection after memory management unloads quantized models
2025-12-09 09:56:57 -03:00
diodiogod c8f7a4759f Fix Step Audio EditX non-quantized model CPU offloading
Fixed CPU offloading for non-quantized (bfloat16/float16/float32) models:

- StepAudioTTS components (llm, cosy_model) don't have .to() method directly
- Handler now moves model.llm and model.cosy_model.cosy_impl individually
- Updates CosyVoice.device tracker when moving cosy_impl to CPU
- Properly handles both raw StepAudioTTS and wrapped models

Fixes unload behavior for non-quantized models to actually free VRAM
instead of silently failing with "no memory freed (model may already be on CPU)"
2025-12-09 01:14:11 -03:00
diodiogod 4ed2a36aef Fix Step Audio EditX transformers 4.54+ compatibility
Fixes critical bug where transformers 4.54+ incorrectly ties lm_head weights
to embed_tokens, causing Step Audio EditX to generate text tokens instead of
audio tokens (silent/gibberish output).

Root cause:
- Transformers 4.54+ ties lm_head to embed_tokens even when checkpoint has different values
- Step-Audio-EditX has lm_head (norm=227) and embed_tokens (norm=255) as separate weights
- Tying overwrites correct lm_head, breaking audio generation

Changes:
- model_loader.py: Add workaround to restore correct lm_head weights after loading
  - Detects incorrect weight tying by comparing data pointers
  - Loads correct lm_head.weight from safetensors
  - Works with transformers 4.54-4.57+
- Clean up debug code and console spam:
  - Remove torch_complex warnings (funasr_detach files)
  - Remove sox import and unused audio functions
  - Silence FunASR registration tables
  - Filter torchaudio deprecation warnings

Upstream fix:
- Submitted PR to transformers: https://github.com/huggingface/transformers/pull/42612
- Workaround will remain for backward compatibility with unfixed versions

Tested with transformers 4.57.3 - generates audio tokens correctly.
2025-12-03 23:18:39 -03:00
diodiogod efe8d295d4 Update comments to explain PyTorch 2.9 bug fixes comprehensively
- Clarify that global patch solves TWO issues: TorchCodec DLL + int16 normalization
- Explain timing criticality: patch must apply before torchaudio import
- Remove redundant pytorch_patches call from apply_all_compatibility_patches()
- Update save_audio_safe docstring to explain defense-in-depth approach
- Add detailed docstring to pytorch_patches explaining both issues and fixes
2025-11-07 03:30:36 -03:00
diodiogod ecde6be1c8 Fix PyTorch 2.9 TorchCodec patch timing - apply before any module imports torchaudio 2025-11-07 03:26:13 -03:00
diodiogod 46fda45944 Fix: Remove torchcodec dependency to eliminate FFmpeg system requirement
Removed torchcodec from requirements.txt and install.py to eliminate the FFmpeg
system dependency that was causing Windows installation failures.

Implementation:
- Removed torchcodec>=0.2.0 from requirements.txt
- Removed torchcodec>=0.2.0 from install.py core_packages list
- Removed torchaudio 2.9+ migration warnings (no longer applicable)
- Added AudioProcessingUtils.safe_load_audio() utility for robust audio loading
- Updated all audio loading calls to use fallback-aware utility function

Audio Loading Changes:
- character_voices_node.py: Uses safe_load_audio() with fallback support
- tts_text_node.py: Uses safe_load_audio() for narrator and character voices (2x)
- tts_srt_node.py: Uses safe_load_audio() for narrator voice
- higgs_audio_tts_processor.py: Uses safe_load_audio() (2x)
- higgs_audio_srt_processor.py: Uses safe_load_audio() (2x)
- index_tts_processor.py: Uses safe_load_audio() (2x)
- f5tts_streaming_adapter.py: Uses safe_load_audio()
- higgs_audio_adapter.py: Uses safe_load_audio()
- subprocess.py: Uses safe_load_audio()

Compatibility:
- torchaudio.load() works fine with fallback backends (soundfile, scipy)
- No quality loss - only negligible audio loading speed difference (~milliseconds)
- All existing audio formats supported
- Better error handling with graceful fallbacks
2025-11-05 22:26:10 -03:00
diodiogod 3df2f92cb9 Include character aliases in available-characters API endpoint
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.
2025-10-31 18:14:16 -03:00
diodiogod d8b5d10be0 Use canonical LANGUAGE_ALIASES from language_mapper as API source
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.
2025-10-31 17:56:03 -03:00
diodiogod 368ccd0dd4 Create language constants source of truth and fix language tag logic
- 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
2025-10-31 17:48:06 -03:00
diodiogod 15cd521e28 Fix API response format - return aiohttp web.json_response
The endpoint was returning a dict instead of a proper aiohttp response object.
Now correctly returns web.json_response() which aiohttp expects.
2025-10-31 02:40:00 -03:00
diodiogod 8dd363b75e Add API endpoint for character voice discovery in widget
- 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
2025-10-31 02:37:32 -03:00
diodiogod dffd6f4cab Reduce verbose init logging - remove success messages for FFmpeg, numba JIT, engine loading, and model discovery
- Remove 'FFmpeg available' success message (only show when unavailable)
- Remove 'numba JIT enabled' success message
- Remove 'ChatterboxTTS/VC loaded from bundled package' success messages
- Remove 'F5-TTS loaded from system package' success message
- Remove 'Using ComfyUI ChatterBox models' legacy success message
- Keep important diagnostic messages like 'Failed to load GPU Faiss' and package versions
2025-10-23 22:02:42 -03:00
diodiogod 793722aa9a Version 4.10.12
Fix VibeVoice accelerate compatibility issues

Technical implementation:
- Add comprehensive transformers patches for accelerate detection
- Fix missing check_tied_parameters_on_same_device function
- Fix missing dispatch_model function for device mapping
- Smart patch application only when compatibility issues detected
- Add accelerate to critical dependencies monitoring
2025-09-26 14:54:28 -03:00
diodiogod cc544e9558 Version 4.10.9
Fix Python 3.12 VRAM spikes with ComfyUI compatibility patch

Technical implementation:
- Add automatic CUDNN benchmark disabling for Python 3.12
- Implement compatibility patch system in utils/comfyui_compatibility.py
- Apply fix before TTS generation in unified text and SRT nodes
- Resolve ComfyUI v0.3.57+ regression affecting memory management
2025-09-26 01:18:35 -03:00
diodiogod 8a5b8dad45 Version 4.10.5
Add centralized FFmpeg dependency handling with graceful fallbacks

Technical details:
- Create centralized FFmpegUtils class for dependency detection
- Add FFmpeg status to initial startup logs alongside package versions
- Implement graceful MP3 conversion fallbacks in vocal separation
- Maintain backward compatibility with existing FFmpeg usage across project
2025-09-23 21:08:05 -03:00
diodiogod e6b9a5ab80 Version 4.8.27
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
2025-09-09 00:40:06 -03:00
diodiogod 3e5f9a3721 Fix RVC Python 3.13 compatibility - comprehensive numba/librosa solution
Major compatibility overhaul for RVC engine in Python 3.13 environments:

🔧 Core Compatibility Fixes:
• Disabled numba JIT compilation for Python 3.13+ via environment variables
• Added comprehensive librosa compatibility patches for missing functions:
  - pad_center, tiny (as function), fill_off_diagonal, is_positive_int, expand_to
• Replaced librosa.resample with torchaudio.resample to eliminate numba dependency
• Fixed all relative imports in RVC implementation (. notation)

⚡ Performance Improvements:
• Manual RMS calculation replacing librosa.feature.rms (avoids numba)
• Higher quality audio resampling using torchaudio
• Maintains backward compatibility with Python 3.12

🐛 Bug Fixes:
• Fixed 'function' object has no attribute 'get_call_template' errors
• Resolved 'float' object is not callable in librosa.sequence.viterbi
• Fixed ImportError for missing librosa utility functions
• Enhanced error handling and debugging throughout RVC pipeline

✨ Features:
• Comprehensive monkey-patching system for librosa compatibility
• Automatic fallbacks for failed operations
• Detailed logging for troubleshooting

Successfully tested with full RVC voice conversion workflow in Python 3.13.6.
2025-09-06 17:22:33 -03:00
diodiogod a1e2bd06bb Version 4.5.7: Fix Python 3.13 compatibility: Replace librosa with torchaudio in Higgs Audio engine 2025-08-25 10:17:26 -03:00
diodiogod 95d3b691a4 feat: Add viseme detection (vowel classification) to mouth movement analyzer
- 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
2025-08-15 01:06:41 -03:00
diodiogod 91617effe8 Fix relative import errors in unified nodes
- 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
2025-08-06 18:32:45 -03:00
diodiogod 53925dfb3f Version 3.2.2: Add detailed F5-TTS diagnostic messages to help users troubleshoot installation issues. F5-TTS import errors are now always shown during initialization, making it easier to identify missing dependencies without requiring development mode. 2025-07-21 10:02:23 -03:00
diodiogod 1cc542897c Clean up old F5-TTS Edit node references from main branch 2025-07-15 08:54:28 -03:00
diodiogod 27790a660f Implement F5-TTS Edit Options node with advanced crossfade and caching
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"
2025-07-14 22:48:38 -03:00
diodiogod b27d7b4447 Change F5-TTS Speech Editor emoji from 🎛️ to 👄 2025-07-13 15:10:00 -03:00
diodiogod 7b44654250 Rename Audio Analyzer to Audio Wave Analyzer and fix F5-TTS nfe_step bug
- 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
2025-07-13 01:02:08 -03:00