MACR0VC is a macOS-first RVC workstation that combines a Swift desktop client with an integrated Python voice engine for single-file conversion, batch jobs, realtime voice conversion, text-to-audio voice matching, UVR separation, task tracking, and result archiving.
English | 简体中文
What MACR0VC Is · Core Capabilities · Screenshots · Quick Start · Common Commands · Architecture · Workflow Highlights · Contribution · License · Star History
MACR0VC is built for creators and voice workflow operators who want one local macOS interface for the full RVC loop instead of stitching together separate scripts and tools.
The project combines:
- A Swift macOS desktop client in
mac-client/ - A Python/FastAPI voice engine in
engine/ - A packaging and release flow centered on
dist/SwiftRVCMacClient.app
The app is designed around real production-facing flows rather than isolated demos:
- load a source file and convert it into a target voice
- queue batch conversions
- run realtime voice conversion when explicitly enabled
- generate source speech from text, then convert it into the selected target voice
- separate vocals and instrumental stems with UVR
- monitor active work in
TASK - revisit outputs and linked artifacts in
RES
- Single-file voice conversion with shared patch controls
- Batch conversion for queued directories or file sets
- Realtime voice conversion with explicit route selection and lifecycle feedback
- Text-to-audio generation routed into the active RVC target voice
- UVR vocal / instrumental separation for source preparation
TASKqueue visibility for active work, status, and run windowsRESarchive with historical outputs, linked source artifacts, and cleanup actions- Background merge and playback tools for output review
- Release app packaging into
dist/SwiftRVCMacClient.app - Shared
makeentrypoints for development checks and release verification - Explicit command surface for app summary, launch, and release gate validation
The main workspace brings patch selection, realtime controls, offline conversion controls, playback, and runtime indicators into one screen.
The input panel supports direct audio loading as well as text-driven speech generation into the current target voice.
Completed conversion results remain immediately playable, reviewable, and merge-ready from the main workspace.
The archive keeps historical outputs, source links, model context, and cleanup actions in one place.
The task queue surfaces the active job, run progress, current input, and recent status transitions.
- macOS 14 or later
- Swift toolchain compatible with
swift-tools-version: 6.2 - A local Python environment for the integrated backend under
engine/ - At least one RVC voice model checkpoint available for inference
git clone git@github.com:boogieLing/MACR0VC.git
cd MACR0VC
git submodule update --init --recursiveengine/ is tracked as a submodule. If you skip submodule initialization, the backend code, bundled assets, and any sample model snapshot inside the engine repository may be missing locally.
MACR0VC will not be usable until both the voice model files and the base inference assets are available.
Required model locations:
engine/assets/weights/should contain at least one.pthvoice model checkpointengine/assets/indices/can contain matching.indexfiles for the selected voice model
Required base inference assets:
engine/assets/hubert/hubert_base.ptengine/assets/rmvpe/rmvpe.ptengine/assets/rmvpe/rmvpe.onnx
Current repository snapshots may already include sample weights and indices. If your local clone does not include them, add your own .pth and optional .index files before expecting single, batch, realtime, or text-driven conversion to work.
Model selection rules:
VOICE MODELwill stay onChoose target voiceuntil at least one valid.pthfile is visible to the backend.indexfiles are optional, but they improve similarity for many voices- the client tries to auto-match an index whose filename resembles the selected model name
SPEAKER IDmatters only for multi-speaker models; single-speaker models should stay on0
After the app is running, use:
ASSETto review integrity and trigger the built-in asset downloader when base assets are missingSYNCto refresh the model catalog after adding or changing.pth/.indexfiles
make helpmake dev-checkmake packageExpected artifact:
dist/SwiftRVCMacClient.app
make app-info
make run-appOn first launch, the minimum ready sequence is:
BOOTthe backend- open
ASSETand confirm the base inference assets are available - press
SYNCso the app refreshes the available model list - select a voice model from the patch area
If no model appears in the app:
- confirm
git submodule update --init --recursivehas been run - check that
engine/assets/weights/contains at least one.pth - press
SYNCagain after adding files - open
ASSETif the app still reports missing base resources
make release-check| Command | Purpose |
|---|---|
make help |
Show the current command index |
make status |
Show root repository status |
make engine-status |
Show nested engine/ repository status |
make dev-check |
Run the shared development validation gate |
make package |
Build dist/SwiftRVCMacClient.app and print the app summary |
make app-info |
Print packaged app metadata and size summary |
make run-app |
Launch the packaged app from dist/ |
make release-check |
Run the local release gate and verify the app bundle |
MACR0VC keeps the desktop client, Python engine, and packaging workflow clearly separated.
MACR0VC/
├── mac-client/ # SwiftPM macOS client
├── engine/ # Python FastAPI voice engine and realtime/audio pipeline
├── scripts/ # packaging, validation, and workflow helpers
├── docs/ # project and workflow documentation
├── dist/ # packaged app outputs and screenshots
├── Makefile # preferred local entrypoints
└── AGENTS.md # repository-specific operating rules
mac-client/Swift desktop interface, application state, bridge client, and app packaging resourcesengine/FastAPI phase1 backend, realtime voice conversion controller, runtime management, and audio toolingscripts/Build, packaging, version-sync, and release validation helpers
The project is centered on a packaged macOS app rather than a browser-first control surface. The packaged target is:
dist/SwiftRVCMacClient.app
Realtime voice conversion is treated as an explicit workflow, not a default startup behavior. Offline voice conversion and text-driven generation remain the default accessible flows when realtime is idle.
The repository already exposes a small command surface for daily work:
- development validation through
make dev-check - packaging through
make package - artifact inspection through
make app-info - smoke launch through
make run-app - release gating through
make release-check
Contributions are welcome through:
- GitHub Issues for bug reports and workflow gaps
- Pull Requests for implementation changes
- Documentation improvements for onboarding and packaging
- Feedback on desktop voice workflows, realtime usability, and task visibility
When submitting changes, it helps to include:
- what changed
- why the change was needed
- how you validated it
- whether the packaged app or release gate was re-run
This repository is licensed under PolyForm Noncommercial 1.0.0.
- Commercial use is not allowed
- The full license text is available in the top-level
LICENSEfile - Use, sharing, and modification should follow the restrictions defined by
PolyForm Noncommercial 1.0.0
This README intentionally avoids calling the project OSI-style open source because the selected license prohibits commercial use.
- GitHub: boogieLing/MACR0VC
- Issues: github.com/boogieLing/MACR0VC/issues
- Pull Requests: github.com/boogieLing/MACR0VC/pulls
- SSH Clone:
git@github.com:boogieLing/MACR0VC.git





