| name | learn-voice |
| description | Train RVC voice models from artist names. Full pipeline: YouTube search, download, stem separation, preprocessing, training, and model indexing. Builds a library of singing voices organized by category (voice/instrument).
|
| allowed-tools | ["Bash","Read","Write","Task"] |
| triggers | ["learn voice","train voice","train voice model","voice training","clone voice","rvc training","voice library","add voice to library"] |
| metadata | {"short-description":"Train RVC voice models from artist names","author":"Horus","version":"0.1.0"} |
| provides | ["learn-voice"] |
| composes | ["learn-artist","discover-music","memory","create-music","task-monitor"] |
learn-voice
Train RVC (Retrieval-based Voice Conversion) models from artist names. Creates a searchable library of singing voices.
Quick Start - For Agents
The simplest way for an agent to learn a voice:
cd /home/graham/workspace/experiments/pi-mono/.pi/skills/learn-voice
./run.sh learn "Sierra Ferrell"
./run.sh learn "Miles Davis" trumpet
./run.sh learn "Keith Moon" drummer
Agent Workflow
When an agent encounters a singer or instrumentalist they want to learn:
- Express interest:
./run.sh learn "Artist Name"
- Daemon trains automatically (if running)
- Use trained voice later via
create-music skill
./run.sh learn "Yasamin Shahhosseini"
cd ../create-music
./run.sh rvc-infer --model-name yasamin-shahhosseini --input vocals.wav --output converted.wav
Manual Training (if needed)
./run.sh train "Brennen Leigh" --epochs 200
./run.sh train-batch "Artist 1" "Artist 2" "Artist 3"
./run.sh daemon &
Pipeline
The full pipeline for each artist:
- Search - Find YouTube videos via
discover-music
- Download - Download audio tracks
- Separate - Extract vocals using Demucs (htdemucs model)
- Preprocess - Slice audio into training segments
- Extract F0 - Pitch extraction (RMVPE method)
- Extract Features - Hubert embeddings
- Train - RVC v2 training with pretrained weights
- Index - Build FAISS index for fast inference
- Register - Add to voice library with metadata
Storage Layout
/mnt/storage12tb/media/music/
├── rvc-training/ # Raw training data
│ └── <artist-slug>/
│ ├── vocals_all/ # Consolidated vocal stems
│ └── <video-id>/ # Per-track stems
│
└── rvc-models/ # Trained models
├── voice/
│ ├── brennen-leigh/
│ │ ├── brennen-leigh.pth
│ │ ├── brennen-leigh.index
│ │ └── metadata.json
│ ├── billie-holiday/
│ └── ...
└── instrument/
├── pedal-steel/
└── ...
Commands
train
Train a voice model from an artist name.
./run.sh train "Artist Name" [options]
Options:
--epochs N Training epochs (default: 200)
--batch-size N Batch size (default: 4, reduce if OOM)
--category CAT voice or instrument (default: voice)
--min-tracks N Minimum tracks to download (default: 10)
--min-minutes N Minimum audio duration (default: 30)
--skip-download Use existing vocals in rvc-training/
train-batch
Train multiple voices sequentially.
./run.sh train-batch "Artist 1" "Artist 2" "Artist 3"
./run.sh train-batch --file artists.txt
./run.sh train-batch --epochs 300 --file artists.txt
list
List all trained voice models.
./run.sh list
./run.sh list --voice
./run.sh list --instrument
./run.sh list --json
status
Check training status for a model.
./run.sh status brennen-leigh
Output:
Model: brennen-leigh
Status: training
Epoch: 45/200
Loss: mel=18.2, kl=1.5
ETA: ~2.5 hours
export
Export a model for use with create-music.
./run.sh export brennen-leigh --to /path/to/destination
Quality Gates
Models are automatically evaluated after training:
| Metric | Good | Warning | Fail |
|---|
| loss_mel | <20 | 20-30 | >30 |
| loss_kl | <2 | 2-4 | >4 |
Failed models are flagged in metadata and excluded from default listings.
Integration with Other Skills
discover-music
learn-voice calls discover-music for:
- YouTube search (
youtube-search)
- Audio download + stem separation (
youtube-stems)
create-music
Once trained, use models with create-music:
./run.sh rvc-infer \
--model-name brennen-leigh \
--input vocals.wav \
--output converted.wav
Docker Container
Training runs inside the RVC Docker container:
docker run -d --gpus all --name rvc-training \
--shm-size=8g \
-p 7865:7865 \
-v /path/to/logs:/app/logs \
-v /path/to/datasets:/app/datasets \
cherrymint/rvc_webui:rvc_boss
The skill manages container lifecycle automatically.
Model Metadata
Each trained model has a metadata.json:
{
"name": "brennen-leigh",
"artist": "Brennen Leigh",
"category": "voice",
"tracks": 12,
"duration_minutes": 38.5,
"epochs": 200,
"batch_size": 4,
"sample_rate": "40k",
"version": "v2",
"trained_at": "2026-02-04T01:15:00Z",
"training_time_minutes": 180,
"final_loss": {
"mel": 18.2,
"kl": 1.5,
"gen": 2.1
Examples
Train a Single Artist
./run.sh train "Elizabeth Fraser" --epochs 200
Batch Training Overnight
cat > artists.txt << EOF
Lucinda Williams
Beth Gibbons
Elizabeth Fraser
Billie Marten
Joni Mitchell
EOF
./run.sh train-batch --file artists.txt --epochs 200
./run.sh status --all
Troubleshooting
CUDA Out of Memory
Reduce batch size:
./run.sh train "Artist" --batch-size 2
Not Enough Training Data
Increase track count:
./run.sh train "Artist" --min-tracks 15 --min-minutes 45
Training Stuck
Check container logs:
docker logs rvc-training --tail 50