- Default to FP32 (is_half=False) to prevent HalfTensor/FloatTensor dtype
mismatch in SawitProject/rvc pipeline. FP16 can be re-enabled via
RVC_HALF_PRECISION=1 env var if desired.
- Fix Config singleton bypass for FP32 retry by clearing the closure's
instances dict instead of using __wrapped__ (which doesn't exist).
- Add two-level FAISS index validation: header check + actual faiss.read_index()
to catch corrupt/incompatible index files before they reach the pipeline.
- Validate RVC output files after inference to catch silent failures.
- Improve fallback to use soundfile -> librosa -> pydub chain for reliable
audio copying when RVC inference fails.
- Add try/except around sf.SoundFile() in main.py to prevent crash when
RVC output is invalid or missing.
Fix FAISS index error and FP16/FP32 dtype mismatch
1. FAISS index error fix:
- Add _validate_index_file() to detect invalid .index files
- Files starting with ASCII (e.g. 'This...' text files) are skipped
- Prevents 'Index type 0x73696854 (This) not recognized' error
2. FP16/FP32 dtype mismatch fix:
- Add _should_use_half() to check GPU compute capability
- Only enable FP16 on NVIDIA GPUs with cc >= 7.0 (Volta+)
- Older GPUs default to FP32 to avoid HalfTensor/FloatTensor mismatch
- Add _retry_with_fp32() fallback: if FP16 inference fails with
dtype mismatch, automatically retries with FP32 config
- Resets Config singleton and VoiceConverter on retry
Remove rmvpe+, add all SawitProject/rvc supported f0 methods
- Remove rmvpe+ from UI dropdown and defaults (use rmvpe instead)
- Add all SawitProject/rvc f0 methods to UI dropdown:
rmvpe, rmvpe-legacy, mangio-crepe variants (tiny/small/medium/large/full),
crepe variants (tiny/small/medium/large/full), fcpe, fcpe-legacy,
djcm, harvest, yin, pyin, swipe, dio, pm
- Simplify _map_f0_method: only alias mangio-crepe/crepe shorthands
- Show hop_length slider for all crepe-containing methods
- Include hop_length in filename for all crepe variants (not just mangio-crepe)
Rename params to match SawitProject/rvc API naming
- Rename src/rvc.py to src/rvc_voice.py to avoid naming conflict with the rvc package
- Rewrite rvc_voice.py to use SawitProject/rvc VoiceConverter API
- Update main.py import: from rvc_voice import rvc_infer
- Update requirements.txt to use git+https://github.com/SawitProject/rvc.git
- Remove rvc-python dependency (incompatible with Python 3.13+ due to fairseq/omegaconf)
- Add f0_method mapping (rmvpe+ -> rmvpe, mangio-crepe -> mangio-crepe-medium)
refactor: replace rvc-python with SawitProject/rvc
Z User
4bb0497
- Rewrite src/rvc.py to use SawitProject/rvc (github.com/SawitProject/rvc)
instead of rvc-python which is broken on Python 3.12+
- Use VoiceConverter from rvc.infer.cli for direct voice conversion
- Map AIGCP parameter names to SawitProject/rvc:
- rms_mix_rate -> volume_envelope
- mangio-crepe -> mangio-crepe-medium
- rmvpe+ -> rmvpe
- crepe_hop_length -> hop_length
- Cache VoiceConverter instance to avoid reloading model on each call
- Update requirements.txt to use git+https://github.com/SawitProject/rvc.git
- Remove rvc-python, fairseq, hydra-core dependencies
- Add assets/models/ directory for rvc embedder/predictor auto-downloads
- Graceful fallback when rvc package is not installed
fix: resolve all app errors and bugs
Z User
f6715ad
- Rewrite src/rvc.py: fix undefined vars (cpt, steps), missing model_path param,
broken inference logic; add rvc_python API integration with graceful fallback
- Fix src/main.py: remove extra 'steps' arg in voice_change call, fix os.path.isdir
relative path bug, fix YouTube /watch/ URL parsing (wrong index), fix noisereduce
integer samples, fix yt-dlp conflicting codec settings, update ins_path after
run_mdx, add librosa pitch_shift fallback, fix mono detection
- Fix src/webui.py: 'amr' missing dot prefix, zip_path.name crash on Gradio 6.x,
lambda return count mismatch (19 vs 18 outputs)
- Fix src/mdx.py: model hash not found crash, division by zero on silent audio,
scale mismatch in inversion formula
- Fix app.py: shell injection vulnerability (os.system -> subprocess.run)
- Update requirements.txt with all missing dependencies