[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93602":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":29,"readmeContent":30,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},93602,"voice_clone_lab","tetsuo-ai\u002Fvoice_clone_lab","tetsuo-ai","Clone a voice from a few minutes of audio and generate speech locally — Qwen3-TTS fine-tuning pipeline with CLI and web UI",null,"Python",128,16,1,0,13,23,49,77.14,"Apache License 2.0",false,"main",true,[24,25,26,27,28],"gradio","qwen","text-to-speech","tts","voice-cloning","2026-07-23 04:02:10","# Voice Clone Lab\n\nClone a voice from a few minutes of audio and generate speech from text — locally, on your\nown GPU. Give it 5–15 minutes of clean speech (a recording, or a YouTube link) and it\nfine-tunes [Qwen3-TTS](https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen3-TTS) into a personal voice model you\ncan drive from a CLI or a web UI.\n\n![Voice Clone Lab web UI](docs\u002Fscreenshot.png)\n\n- **Any source**: upload a recording, record from your mic, or paste a YouTube\u002FURL link\n- **Guided pipeline**: extract → clean → split → transcribe → proofread in an editable table → train\n- **Your voices, organized by name**: train as many as you like, pick one and type text\n- **Zero-shot mode**: try a voice instantly from a single clip, no training\n- **Fully local**: audio, transcripts, and voice models never leave your machine\n\n## Consent notice\n\nUse this project only for **your own voice** or a voice where you have **explicit written\npermission** from the speaker. Do not use it for impersonation, fraud, bypassing consent,\nharassment, or cloning public figures or private people without permission. The same rule\napplies to URLs: only download content you have the rights to use.\n\n## Requirements\n\n- Linux with an NVIDIA CUDA GPU\n- **Training**: 24 GB VRAM minimum (RTX 3090\u002F4090 class, `batch-size 2`). 32 GB+ is comfortable.\n- **Generation only** (using a checkpoint someone else trained): any ~8 GB card works.\n- Python ≥ 3.10 (3.12 recommended), `ffmpeg`, `git`\n\n## Install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ftetsuo-ai\u002Fvoice_clone_lab.git\ncd voice_clone_lab\n\npip install -e '.[ui]'     # core + web UI; drop [ui] for CLI-only\nvcl setup --download       # fetch Qwen3-TTS (pinned + patched) and the 1.7B base weights (~4 GB)\nvcl check                  # verify your machine is ready\n```\n\nOptional extras: `pip install -e '.[asr,yt,vad,denoise,dev]'` — WhisperX (word timestamps),\nyt-dlp (URL sources), WebRTC VAD (better chunking), mild denoising, and the test suite.\n\n## Quickstart\n\n### 1. Get some audio of your voice\n\nRecord 5–15 minutes in a quiet room, one mic, natural reading pace\n(ready-made reading text: `recording_scripts\u002Fvoice_dataset_reading_script.txt`).\nOr skip recording and paste a link to something you're in:\n\n```bash\nvcl run --speaker alex --input \"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=…\"\n# or a local file (wav\u002Fmp4\u002Fm4a\u002Fmp3):\nvcl run --speaker alex --input ~\u002Frecordings\u002Falex.wav\n```\n\nThat one command extracts, cleans, splits, transcribes, and builds the dataset into\n`data\u002Fvoices\u002Falex\u002F`.\n\n### 2. Proofread the transcripts (2 minutes, worth it)\n\n```bash\nvcl transcribe --speaker alex --review     # writes an editable TSV\n# ...fix any wrong words in data\u002Fvoices\u002Falex\u002Ftranscripts\u002Ftranscripts_review.tsv...\nvcl transcribe --speaker alex --apply-review --force\n```\n\nBad transcripts are the #1 cause of weird pronunciation — don't skip this.\n\n### 3. Train\n\n```bash\nvcl prepare --speaker alex          # add Qwen audio codes\nvcl train --speaker alex            # fine-tune (add --batch-size 2 on a 24 GB card)\n```\n\n### 4. Talk\n\n```bash\nvcl generate --speaker alex --text \"Hello, this is my cloned voice.\"\n# -> outputs\u002Fgenerated\u002Falex\u002Ftest.wav\n```\n\nThat's it. Train more voices the same way — everything lives under the speaker name.\n\n## Web UI\n\n```bash\nvcl ui    # http:\u002F\u002F127.0.0.1:7860\n```\n\nFour tabs mirror the CLI: **Setup** (system check), **Data** (upload or paste a URL, run the\npipeline, edit transcripts right in the table), **Train** (hyperparameters, live log),\n**Generate** (pick voice + checkpoint, sampling sliders, in-browser playback, zero-shot mode).\n\n## How it organizes your data\n\nEverything derives from the speaker name — no config editing per voice:\n\n```\ndata\u002Fvoices\u002F\u003Cname>\u002F        audio, chunks, transcripts, dataset, reference clip\noutputs\u002Fcheckpoints\u002F\u003Cname>\u002Fcheckpoint-epoch-*\u002F    trained voice snapshots\noutputs\u002Fgenerated\u002F\u003Cname>\u002F                         your generated wavs\n```\n\nRetraining a name replaces its old checkpoints (the CLI asks for `--force`; the UI asks you\nto tick Overwrite). Epoch snapshots are independent — later is not always better, so compare\na couple and keep the one that sounds best.\n\n## Useful commands\n\n| Command | What it does |\n|---|---|\n| `vcl check` | Verify GPU, deps, models are ready |\n| `vcl run --speaker X --input SRC` | Full data pipeline in one step (file or URL) |\n| `vcl transcribe --review` \u002F `--apply-review` | Proofread transcripts via TSV |\n| `vcl prepare` \u002F `vcl train` | Audio codes, then fine-tune |\n| `vcl generate --speaker X --text \"…\"` | Speech from the newest checkpoint |\n| `vcl generate --zeroshot --ref clip.wav --text \"…\"` | Instant clone, no training |\n| `vcl generate --spec lines.json --outdir out\u002F` | Batch: `[{\"id\",\"text\"}, …]` → wavs |\n| `vcl ui` | Web UI |\n\nEvery step refuses to overwrite existing outputs unless you pass `--force`. Full details:\n`vcl \u003Ccommand> --help`.\n\n## Troubleshooting\n\n- **CUDA not found** → `nvidia-smi`, then `python -c \"import torch; print(torch.cuda.is_available())\"`.\n  Install a CUDA-enabled PyTorch matching your driver.\n- **Out of memory during training** → `--batch-size 2` (or 1). 24 GB VRAM is the floor.\n- **Robotic \u002F unstable voice** → cleaner source audio, fix transcripts, compare epoch\n  checkpoints, go easy on denoise.\n- **FlashAttention missing** → fine, everything falls back to `sdpa` automatically.\n\n## Development\n\n```bash\npip install -e '.[dev]'\npython -m pytest tests\u002F     # CPU-only test suite\n```\n\nLayout: `src\u002Fvoice_clone_lab\u002F` (pipeline modules + `cli.py` + `ui.py`), `config\u002Fdefault.yaml`\n(single config source), `patches\u002F` (vendor patch applied by `vcl setup`). See `AGENTS.md`\nfor conventions.\n\n## Acknowledgements\n\nBuilt on [Qwen3-TTS](https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen3-TTS) (Apache-2.0) by Alibaba's Qwen team,\nplus [faster-whisper](https:\u002F\u002Fgithub.com\u002FSYSTRAN\u002Ffaster-whisper), [Gradio](https:\u002F\u002Fgradio.app),\nand [yt-dlp](https:\u002F\u002Fgithub.com\u002Fyt-dlp\u002Fyt-dlp).\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE).\n",2,"2026-07-21 02:30:09","CREATED_QUERY"]