Address issue #312 with MPS-safe RVC tensor typing
Technical details:
- Keep RVC pitch indices integer on Apple MPS devices.
- Normalize phone features to the linear layer weight dtype.
- Normalize pitch values to torch.long at the encoder boundary.
- Preserve CUDA half-precision compatibility.
Fix RVC HuBERT subdirectory double-nesting issue
Technical fix:
- Add check to detect if .pt file is already in correct subdirectory
- Prevent creating nested subdirectories (e.g., chinese_hubert_base/chinese_hubert_base/)
- Use existing subdirectory path when model is already correctly placed
Fix RVC HuBERT model loading and compatibility
Technical changes:
- Fix Japanese HuBERT download URL (moved to public prj-beatrice repo)
- Fix content-vec-best model reference (was hubert-base-rvc)
- Add transformers HuBERT support with TransformersHubertWrapper
- Implement subdirectory structure for transformers models to avoid config conflicts
- Add auto-migration for existing models to new subdirectory structure
- Fix HubertConfig import scope issue in loaders.py
- Add config.json auto-download for transformers models
- Fix dtype conversion (float16/float32) in feature extraction
- Add dimension mismatch detection with helpful user messages
- Fix hubert_path parameter passthrough in conversion pipeline
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
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
- Add safe_stft(), safe_istft(), and safe_resample() fallback functions
- Replace problematic librosa calls in UVR spec_utils.py with safe versions
- Try librosa first, fall back to torchaudio on numba compilation errors
- Use librosa-compatible defaults for torchaudio (Hann window, center=True)
- Fixes 'get_call_template' AttributeError in Python 3.13
- Preserves audio quality while maintaining compatibility
Fix comprehensive librosa compatibility for RVC engine
Technical implementation:
- Handle pad_center, tiny, and normalize import failures separately
- Add manual implementations for all three librosa utility functions
- Support any librosa version including latest releases that moved/removed functions
- Individual function fallbacks prevent partial import failures
Resolves: #47 (additional fix)
Fix RVC librosa pad_center compatibility issue
Technical implementation:
- Add librosa version compatibility layer in rmvpe.py
- Support both old and new librosa API versions
- Manual pad_center implementation using numpy as fallback
- Handles ImportError gracefully without breaking RVC functionality
Resolves: #47
Fix ffmpeg-python dependency issue in RVC vocal removal
Replace ffmpeg-python imports with subprocess calls in RVC audio processing.
The ffmpeg-python package was causing import errors during node loading.
- Updated engines/rvc/impl/rvc_audio.py to use subprocess
- Updated engines/rvc/impl/lib/audio.py to use subprocess
- Fixed corrupted Chinese comment in audio.py
- Maintains same ffmpeg functionality using system binary
Resolves vocal removal node failing to load with 'No module named ffmpeg' error.
- Keep SCNet as experimental due to audio buzzing artifacts
- Add clear warnings in CLI and UI tooltips about quality issues
- Implementation functionally complete with chunked processing
- Users warned about potential audio artifacts before use
- Fixed batch size calculation in SCNet forward pass to prevent division by zero
- Added chunked processing with overlap blending for large audio files to avoid OOM on RTX 4090
- Fixed uvr5_cli.py to handle both tuple returns (SCNet) and dict returns (other models)
- Removed debug print statements for production readiness