zhisheng01 commited on
Commit
317ebd0
Β·
verified Β·
1 Parent(s): 5d8e41e

Add model card

Browse files
Files changed (1) hide show
  1. README.md +85 -0
README.md ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ language:
4
+ - en
5
+ library_name: ctrlspeech
6
+ pipeline_tag: text-to-speech
7
+ tags:
8
+ - text-to-speech
9
+ - speech-synthesis
10
+ - prosody-control
11
+ - controllable-tts
12
+ - flow-matching
13
+ ---
14
+
15
+ # CtrlSpeech
16
+
17
+ Checkpoints for **CtrlSpeech** β€” expressive speech synthesis with coarse-to-fine
18
+ latent control. Code, CLI and interactive demo:
19
+ **https://github.com/zszheng147/CtrlSpeech**
20
+
21
+ CtrlSpeech is a zero-shot TTS model you can steer after generating. It exposes
22
+ the pitch contour, loudness contour and phoneme boundaries of any utterance,
23
+ lets you edit one of them, and resynthesises following the edit while leaving
24
+ the others alone. Prosody is conditioned **per phoneme token**, so a single word
25
+ can be stretched while the rest of the sentence keeps its timing.
26
+
27
+ ## Contents
28
+
29
+ | Path | Params | Prosody control | Notes |
30
+ |---|---|---|---|
31
+ | `control-600m/` | 692 M | pitch Β· loudness Β· duration | Default |
32
+ | `control-150m/` | 150 M | pitch Β· loudness Β· duration | Smaller |
33
+ | `base-600m/` | 689 M | β€” | Ablation baseline, no control |
34
+ | `base-150m/` | 148 M | β€” | Ablation baseline, no control |
35
+ | `svae/` | β€” | β€” | SVAE (DAC + BigVGAN) 16 kHz codec, 40 Hz latents |
36
+ | `shared/campplus.onnx` | β€” | β€” | CAM++ speaker embedding |
37
+ | `shared/vocab.json` | β€” | β€” | Phoneme vocabulary (ARPAbet) |
38
+
39
+ Each model folder holds `model.safetensors`, a training-free `config.yaml`, and
40
+ the `qwen_config.json` describing the AR backbone architecture. The fine-tuned
41
+ backbone weights are inside the checkpoint; no Qwen weights are redistributed
42
+ and none are downloaded at load time.
43
+
44
+ ## Usage
45
+
46
+ ```bash
47
+ pip install git+https://github.com/zszheng147/CtrlSpeech
48
+ ```
49
+
50
+ ```python
51
+ from ctrlspeech import CtrlSpeech, shift_pitch_semitones
52
+
53
+ tts = CtrlSpeech.from_pretrained("control-600m") # downloads on first use
54
+ baseline = tts.from_audio("clip.wav", "the transcript of that clip")
55
+ tts.regenerate(baseline, pitch=shift_pitch_semitones(baseline.gen_f0, 5)) \
56
+ .save("higher.wav")
57
+ ```
58
+
59
+ Duration editing and adopting your own recording require
60
+ [Montreal Forced Aligner](https://montreal-forced-aligner.readthedocs.io) with
61
+ the `english_us_arpa` acoustic model and dictionary.
62
+
63
+ ## Control representation
64
+
65
+ Analysis runs at 100 frames/s (16 kHz, hop 160).
66
+
67
+ - **Pitch** β€” 128 mel-spaced bins; bin 0 is unvoiced.
68
+ - **Loudness** β€” 64 A-weighted dB bins, about 1.05 bins per dB.
69
+ - **Duration** β€” per-phoneme frame counts, at most 191 frames (1.91 s) per
70
+ phoneme; an edited timeline is capped at 2001 frames (20 s).
71
+
72
+ ## Training data
73
+
74
+ English speech from Emilia, GigaSpeech, LibriTTS / LibriTTS-R, HiFi-TTS and
75
+ LibriLight, with forced-aligned ARPAbet phoneme annotations.
76
+
77
+ ## Licence and intended use
78
+
79
+ **CC BY-NC 4.0 β€” non-commercial.** The training mix includes Emilia, which is
80
+ distributed under CC BY-NC 4.0, so these weights inherit that restriction. The
81
+ source code is MIT.
82
+
83
+ These models clone a speaker's voice from a few seconds of reference audio.
84
+ Only use recordings you have the right to use, disclose synthetic speech as
85
+ synthetic, and do not use this to impersonate anyone without their consent.