Voice Clone Lab
Clone a voice from a few minutes of audio and generate speech from text — locally, on your
own GPU. Give it 5–15 minutes of clean speech (a recording, or a YouTube link) and it
fine-tunes Qwen3-TTS into a personal voice model you
can drive from a CLI or a web UI.
- Any source: upload a recording, record from your mic, or paste a YouTube/URL link
- Guided pipeline: extract → clean → split → transcribe → proofread in an editable table → train
- Your voices, organized by name: train as many as you like, pick one and type text
- Zero-shot mode: try a voice instantly from a single clip, no training
- Fully local: audio, transcripts, and voice models never leave your machine
Consent notice
Use this project only for your own voice or a voice where you have explicit written
permission from the speaker. Do not use it for impersonation, fraud, bypassing consent,
harassment, or cloning public figures or private people without permission. The same rule
applies to URLs: only download content you have the rights to use.
Requirements
- Linux with an NVIDIA CUDA GPU
- Training: 24 GB VRAM minimum (RTX 3090/4090 class,
batch-size 2). 32 GB+ is comfortable.
- Generation only (using a checkpoint someone else trained): any ~8 GB card works.
- Python ≥ 3.10 (3.12 recommended),
ffmpeg, git
Install
git clone https://github.com/tetsuo-ai/voice_clone_lab.git
cd voice_clone_lab
pip install -e '.[ui]' # core + web UI; drop [ui] for CLI-only
vcl setup --download # fetch Qwen3-TTS (pinned + patched) and the 1.7B base weights (~4 GB)
vcl check # verify your machine is ready
Optional extras: pip install -e '.[asr,yt,vad,denoise,dev]' — WhisperX (word timestamps),
yt-dlp (URL sources), WebRTC VAD (better chunking), mild denoising, and the test suite.
Quickstart
1. Get some audio of your voice
Record 5–15 minutes in a quiet room, one mic, natural reading pace
(ready-made reading text: recording_scripts/voice_dataset_reading_script.txt).
Or skip recording and paste a link to something you're in:
vcl run --speaker alex --input "https://www.youtube.com/watch?v=…"
# or a local file (wav/mp4/m4a/mp3):
vcl run --speaker alex --input ~/recordings/alex.wav
That one command extracts, cleans, splits, transcribes, and