$ show voicepaw/so-vits-svc-fork
This is a Python application and library for singing voice conversion and real-time voice changing, forked from so-vits-svc and rebuilt around PyTorch, PyTorch Lightning, and a Click-based CLI. The actual code provides two user-facing entry points: the `svc` CLI with commands for inference, realtime microphone conversion, dataset preprocessing, training, clustering, and cleanup, and the `svcg` PySimpleGUI desktop application for interactive and realtime inference. Inference loads a HuBERT content encoder from Hugging Face, extracts pitch using CREPE, DIO, Harvest, or Parselmouth, then runs a VITS-style SynthesizerTrn with either HiFi-GAN or MS/MB-iSTFT decoders conditioned on speaker embeddings. Despite fastapi being listed as a dependency, no HTTP API server exists in the source; the project is a desktop/CLI tool, not a web service.
The LLM identified 4 files worth highlighting for reuse:
Implements silence-aware audio chunking plus two realtime voice-conversion strategies: SOLA crossfade (`sola_crossfade`, `Crossfader`) and a silence-compression streaming buffer (`RealtimeVC2`). The `split_silence` generator and SOLA function use only numpy/librosa and can be lifted into any streaming audio project needing low-latency, artifact-free chunk stitching.
Provides a single `compute_f0` dispatch over CREPE, CREPE-tiny, pyworld DIO/Harvest, and Parselmouth pitch trackers, with normalization, interpolation, and mel-scale coarse encoding. This is a clean, extractable audio feature module; only `get_optimal_device` is imported from the package.
Implements a near-perfect-reconstruction pseudo-QMF filterbank using a Kaiser-window prototype filter, with analysis and synthesis convolutions. It is a portable PyTorch module, used here for MB-iSTFT decoding, and directly applicable to subband audio processing outside this repo.
Manual STFT-to-mel pipeline that caches Hann windows and mel filterbanks per dtype, device, and fmax, avoiding repeated filter construction in training loops. The caching pattern and standalone functions are reusable audio feature-engineering utilities for other PyTorch audio projects.