How satiricalguru/rvc-voicechanger works
RVC Voicechanger is a desktop voice-conversion application: users select or import a voice, configure audio and effects, and process microphone audio through a local backend for playback. The documented Electron, Next.js, and FastAPI architecture connects the interface to model management and the real-time audio engine; the RVC pipeline supplies AI inference. The README also describes image scraping, soundboard, themes, and localization. A separate Swift native app is represented as a device-selection prototype; its audio engine explicitly does not yet process live audio. Backend links follow excerpts or README documentation; unsampled feature links are omitted where wiring is not shown.
Main entry points: main.py FastAPI server · backend-api.ts Backend API client · page.tsx Voice changer UI · engine.py Audio engine
Components 24
Desktop and UI
- Electron shell
electron/main.js - Voice changer UI
ui/app/page.tsx - Backend API client
ui/lib/voice-changer/backend-api.ts - Voice and settings
ui/components/voice-changer/settings-view.tsx - Voice grid
ui/components/voice-changer/voice-grid.tsx - Model import
ui/components/voice-changer/upload-dialog.tsx - Soundboard UI
ui/components/voice-changer/soundboard-view.tsx - Translations
ui/lib/voice-changer/translations.ts
Backend services
- FastAPI server
main.py - Configuration
app/backend/config_manager.py - Model manager
app/backend/models_manager.py - Image search services
- Soundboard storage
main.py
Audio conversion
- Audio engine
app/backend/engine.py - DSP effects
app/backend/engine.py - RVC pipeline
app/backend/rvc_pipeline.py - Inference pipeline
app/backend/rvc/infer/pipeline.py
RVC model architecture
- Synthesizer models
app/backend/rvc/lib/algorithm/synthesizers.py - Vocoder generators
app/backend/rvc/lib/algorithm/generators
Native prototype
- Native app model
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/App/VoiceChangerAppModel.swift - Audio device service
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/Audio/AudioDeviceService.swift - Device descriptor
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/Models/AudioDeviceDescriptor.swift - Native engine shell
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/Audio/AudioEngineController.swift
Other components
- User
Connections 23
- User → Voice changer UI: uses
- Electron shell → Voice changer UI: hosts
- Electron shell → FastAPI server: launches
- Voice changer UI → Backend API client: uses
- Backend API client → FastAPI server: REST and WebSocket
- Voice and settings → Backend API client: configures
- Voice grid → Backend API client: requests voices
- Model import → Backend API client: imports models
- Soundboard UI → Backend API client: requests sounds
- Voice changer UI → Translations: supports languages
- FastAPI server → Configuration: reads and updates
main.py - FastAPI server → Model manager: lists and imports
main.py - Model manager → Image search services: searches images
app/backend/models_manager.py - FastAPI server → Audio engine: controls audio
main.py - FastAPI server → Soundboard storage: writes sounds
main.py - Audio engine → RVC pipeline: infers chunks
app/backend/engine.py - Audio engine → DSP effects: applies DSP
app/backend/engine.py - RVC pipeline → Synthesizer models: uses model
app/backend/rvc_pipeline.py - Synthesizer models → Vocoder generators: selects vocoder
app/backend/rvc/lib/algorithm/synthesizers.py - Native app model → Audio device service: enumerates devices
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/App/VoiceChangerAppModel.swift - Native app model → Native engine shell: starts and stops
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/App/VoiceChangerAppModel.swift - Audio device service → Device descriptor: creates descriptors
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/Audio/AudioDeviceService.swift - Native engine shell → Device descriptor: uses device IDs
native/AiVoiceChangerNative/Sources/AiVoiceChangerNative/Audio/AudioEngineController.swift