Project
requiredA project is one folder holding the downloaded materials, the selected clips, the encoded shards, the LoRA checkpoints, the merged CustomVoice checkpoint and the evaluation. The GGUF lands next to the folder. Everything resumes from that folder after a reboot.
Materials
base · speech tokenizer · datasetDataset
Common Voice yue (CC-0) parquet mirrorsEach source is a Hugging Face dataset of parquet files with audio, sentence, client_id, gender, down_votes columns (the Common Voice layout). files/split limits how many parquet files per split are downloaded (0 = all; JackyHoCL/common_voice_22_yue holds ~190k validated clips in 32 files of ~1.4 GB). Your own recordings go in a JSONL ({"audio": path, "text": ..., "speaker": name, "gender": "female|male"}); each local speaker becomes a voice under that name.
Local clips (JSONL)
Voices
the contributors with the most usable clips per gender label; rows 3000, 3001, … of the codec tableLoRA & training
two phases▾
Targets: q/k/v/o and gate/up/down of the 28 talker layers (196 projections); the code predictor is never adapted (it destroys intelligibility). A phase trains a fresh LoRA; the speaker phase starts from the language phase merged in, so the export carries both as one rank-(r+r) adapter.
Output & evaluation
▾
Pipeline
Stop pauses after the current step (training saves last.pt); Start / Resume continues. Epochs of a running phase can be changed in Setup › LoRA & training and take effect within a log interval. Finished stages are skipped; the Select, Merge, Convert and Evaluate boxes are clickable to re-run them.
Training metrics
Live hardware
Hardware
Environment
Pipeline log
Exported files
The merged Hugging Face checkpoint (export/<name>/, tts_model_type custom_voice) and the adapter package (export/adapter/: PEFT-layout LoRA + extra_tensors.safetensors with the baked voice rows + apply_adapter.py, the hk-cantonese release layout) sit inside the project folder.
Voices & samples
Use it in ggk
The codec GGUF (--codec-model) is the Qwen3-TTS-Tokenizer-12Hz converted by qwen3-tts.cpp's converter — the one you already use with hk-cantonese-v0.0.5; Setup › Output can also convert it here. Keep --language chinese: the adapter carries the Cantonese. Split long text at punctuation, about 45 characters a chunk.