◉ Pulse
tetsuo-ai avatar
#21 today ▲ 2

tetsuo-ai/voice_clone_lab

Python AI #gradio #qwen #text-to-speech #tts

Clone a voice from a few minutes of audio and generate speech locally — Qwen3-TTS fine-tuning pipeline with CLI and web UI

Created Jul 18, 2026
Stars
62
Today
+14
Forks
7
Quality
100/100
Momentum
22

README

Fetched from GitHub on Oct 30, 2026, 11:07 PM UTC · README.md

View original on GitHub

Third-party content — Open Source Pulse is not the owner of this repository.

This README belongs to tetsuo-ai/voice_clone_lab and its contributors. We fetch it directly from the project’s public GitHub repository and display it for reference only. All text, code, images and trademarks remain the property of their respective authors. See the repository for its license terms. Copyright / takedown policy.

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.

Voice Clone Lab 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 builds the dataset into data/voices/alex/.

2. Proofread the transcripts (2 minutes, worth it)

vcl transcribe --speaker alex --review     # writes an editable TSV
# ...fix any wrong words in data/voices/alex/transcripts/transcripts_review.tsv...
vcl transcribe --speaker alex --apply-review --force

Bad transcripts are the #1 cause of weird pronunciation — don't skip this.

3. Train

vcl prepare --speaker alex          # add Qwen audio codes
vcl train --speaker alex            # fine-tune (add --batch-size 2 on a 24 GB card)

4. Talk

vcl generate --speaker alex --text "Hello, this is my cloned voice."
# -> outputs/generated/alex/test.wav

That's it. Train more voices the same way — everything lives under the speaker name.

Web UI

vcl ui    # http://127.0.0.1:7860

Four tabs mirror the CLI: Setup (system check), Data (upload or paste a URL, run the pipeline, edit transcripts right in the table), Train (hyperparameters, live log), Generate (pick voice + checkpoint, sampling sliders, in-browser playback, zero-shot mode).

How it organizes your data

Everything derives from the speaker name — no config editing per voice:

data/voices/<name>/        audio, chunks, transcripts, dataset, reference clip
outputs/checkpoints/<name>/checkpoint-epoch-*/    trained voice snapshots
outputs/generated/<name>/                         your generated wavs

Retraining a name replaces its old checkpoints (the CLI asks for --force; the UI asks you to tick Overwrite). Epoch snapshots are independent — later is not always better, so compare a couple and keep the one that sounds best.

Useful commands

Command What it does
vcl check Verify GPU, deps, models are ready
vcl run --speaker X --input SRC Full data pipeline in one step (file or URL)
vcl transcribe --review / --apply-review Proofread transcripts via TSV
vcl prepare / vcl train Audio codes, then fine-tune
vcl generate --speaker X --text "…" Speech from the newest checkpoint
vcl generate --zeroshot --ref clip.wav --text "…" Instant clone, no training
vcl generate --spec lines.json --outdir out/ Batch: [{"id","text"}, …] → wavs
vcl ui Web UI

Every step refuses to overwrite existing outputs unless you pass --force. Full details: vcl <command> --help.

Troubleshooting

  • CUDA not found → nvidia-smi, then python -c "import torch; print(torch.cuda.is_available())". Install a CUDA-enabled PyTorch matching your driver.
  • Out of memory during training → --batch-size 2 (or 1). 24 GB VRAM is the floor.
  • Robotic / unstable voice → cleaner source audio, fix transcripts, compare epoch checkpoints, go easy on denoise.
  • FlashAttention missing → fine, everything falls back to sdpa automatically.

Development

pip install -e '.[dev]'
python -m pytest tests/     # CPU-only test suite

Layout: src/voice_clone_lab/ (pipeline modules + cli.py + ui.py), config/default.yaml (single config source), patches/ (vendor patch applied by vcl setup). See AGENTS.md for conventions.

Acknowledgements

Built on Qwen3-TTS (Apache-2.0) by Alibaba's Qwen team, plus faster-whisper, Gradio, and yt-dlp.

License

Apache-2.0 — see LICENSE.

Rendered by GitHub from the repository’s README. Scroll to read the full file.
First trending

Jul 18, 2026

first spotted on the list

Best rank

#7

highest position reached

Appearances

3

times on the trending list

Quality score

100

out of 100

Momentum

22

trend strength indicator

Star velocity

0.60

stars per day since creation

Activity — last 60 days

daily counts, collected every 6 hours
  • Stars
  • Forks
  • Merged PRs
  • Issues
  • Closed issues

Collecting activity data since launch — check back in a few days.

Star history

total stars per snapshot
10203040506070tetsuo-ai/voice_clone_lab · Jul 18, 7 PM UTC: 19 starstetsuo-ai/voice_clone_lab · Jul 19, 3 AM UTC: 48 starstetsuo-ai/voice_clone_lab · Jul 19, 8 AM UTC: 62 stars7 PM1 AM8 AM

Rank history

position on trending · lower is better
#1#6#8#10#12#14#16#18#20#22Jul 18, 7 PM UTC: rank #16Jul 19, 3 AM UTC: rank #7Jul 19, 8 AM UTC: rank #217 PM1 AM8 AM

3D card for your website

Live HTML card with a glass surface and pointer tilt. Paste the iframe on any website.

<iframe src="https://www.notionpulse.cc/embed/tetsuo-ai/voice_clone_lab" width="420" height="240" style="border:0;max-width:100%;background:transparent" loading="lazy" title="tetsuo-ai/voice_clone_lab — trending on Open Source Pulse"></iframe>

Stars badge

Show current stars in your README or profile. Auto-updates every 6 hours.

tetsuo-ai/voice_clone_lab stars badge
Markdown
[![tetsuo-ai/voice_clone_lab](https://www.notionpulse.cc/api/badge/tetsuo-ai/voice_clone_lab.svg)](https://www.notionpulse.cc/repo/tetsuo-ai/voice_clone_lab)
HTML
<a href="https://www.notionpulse.cc/repo/tetsuo-ai/voice_clone_lab"><img src="https://www.notionpulse.cc/api/badge/tetsuo-ai/voice_clone_lab.svg" alt="tetsuo-ai/voice_clone_lab stars badge" /></a>

Repository of the Day

#7 Repository of the Day

Repository of the Week

#7 Repository of the Week

Repository of the Month

#7 Repository of the Month