audio-cpp commited on
Commit
235f70e
·
verified ·
1 Parent(s): f861648

Add Plapre 3 BF16 and F32 GGUFs

Browse files
.gitattributes CHANGED
@@ -153,3 +153,5 @@ Phonon-2-GGUF/phonon-2-mixed-f16.gguf filter=lfs diff=lfs merge=lfs -text
153
  Phonon-2-GGUF/phonon-2-mixed-q8.gguf filter=lfs diff=lfs merge=lfs -text
154
  Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf filter=lfs diff=lfs merge=lfs -text
155
  Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-q8_0.gguf filter=lfs diff=lfs merge=lfs -text
 
 
 
153
  Phonon-2-GGUF/phonon-2-mixed-q8.gguf filter=lfs diff=lfs merge=lfs -text
154
  Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf filter=lfs diff=lfs merge=lfs -text
155
  Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-q8_0.gguf filter=lfs diff=lfs merge=lfs -text
156
+ Plapre-3-GGUF/plapre-3-bf16.gguf filter=lfs diff=lfs merge=lfs -text
157
+ Plapre-3-GGUF/plapre-3-f32.gguf filter=lfs diff=lfs merge=lfs -text
Plapre-3-GGUF/README.md ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-4.0
3
+ language:
4
+ - da
5
+ pipeline_tag: text-to-speech
6
+ tags:
7
+ - audio.cpp
8
+ - gguf
9
+ ---
10
+
11
+ # Plapre 3 GGUF
12
+
13
+ [Plapre 3](https://huggingface.co/syvai/plapre-3) is a Danish text-to-speech
14
+ model with five built-in voices, voice cloning, per-word duration control,
15
+ pronunciation references, prosodic context, and speech editing.
16
+
17
+ Each GGUF packages the AR checkpoint, speaker projection and
18
+ presets, tokenizer, Kanade codec, WavLM frontend, and CosyVoice2 HiFT vocoder.
19
+ No Python installation or separate model downloads are needed for inference.
20
+ Output is mono, 24 kHz. BF16 is recommended; F32 retains the original checkpoint
21
+ storage, including the original BF16 speaker projection.
22
+
23
+ | Package | Size | |
24
+ |---|---:|---|
25
+ | `plapre-3-bf16.gguf` | 1.07 GiB | Default |
26
+ | `plapre-3-f32.gguf` | 2.13 GiB | Original-precision reference |
27
+
28
+ ## Usage
29
+
30
+ ```bash
31
+ audiocpp_cli --family plapre --task tts --backend cuda \
32
+ --model plapre-3-bf16.gguf --request-option voice_id=tor \
33
+ --text "Hej, hvordan har du det?" --out speech.wav --log
34
+
35
+ audiocpp_cli --family plapre --task clon --backend cuda \
36
+ --model plapre-3-bf16.gguf --voice-ref reference.wav \
37
+ --reference-text "Ordene i referenceoptagelsen." \
38
+ --text "I morgen kommer jeg igen." --out clone.wav --log
39
+ ```
40
+
41
+ Built-in voices are `tor`, `ida`, `liv`, `ask`, and `kaj`. Both routes accept the
42
+ same controls. Use `x_vector_only_mode=true` for speaker-only reference
43
+ conditioning. Detailed options and conversion instructions are in the
44
+ [model guide](https://github.com/0xShug0/audio.cpp/blob/main/docs/models/plapre.md).
45
+
46
+ ## CUDA Measurements
47
+
48
+ RTX 5090, Debug C++ build with optimized compiler flags, official Python
49
+ Plapre/vLLM implementation using original F32 AR weights. All use the same text,
50
+ reference WAV/transcript, seed 42, temperature 0.8, top-k 50, top-p 0.95, and
51
+ 1,000-token limit. Generation stops naturally. Each benchmark starts with a
52
+ short cloning warmup; model loading is excluded from inference timing.
53
+
54
+ | Workload | Runtime | Warm inference | Output duration | Warm RTF | Observed peak VRAM |
55
+ |---|---|---:|---:|---:|---:|
56
+ | Short clone | Python | 234.41 ms | 4.16 s | 0.05635 | 9,218 MiB |
57
+ | Short clone | audio.cpp F32 | 198.76 ms | 4.00 s | 0.04969 | --- |
58
+ | Short clone | audio.cpp BF16 | 162.93 ms | 4.20 s | 0.03879 | --- |
59
+ | Paragraph clone | Python | 873.26 ms | 19.04 s | 0.04586 | 9,506 MiB |
60
+ | Paragraph clone | audio.cpp F32 | 925.94 ms | 19.52 s | 0.04744 | 3,304 MiB |
61
+ | Paragraph clone | audio.cpp BF16 | 749.68 ms | 19.68 s | 0.03809 | 2,564 MiB |
62
+
63
+ BF16 is 1.25x faster by paragraph RTF than F32 and reduces peak VRAM by 22.4%
64
+ (740 MiB). Paragraph C++ timings are the mean of two requests. C++ peaks cover
65
+ the entire short -> paragraph -> repeat paragraph -> short session; separate
66
+ short-request peaks were not measured. Peak VRAM is process-tree usage sampled
67
+ every 10 ms. Python rows are earlier reference measurements with the same
68
+ settings, not a fresh simultaneous comparison. Results are workload-specific.
69
+ Python vLLM reserves 20% of GPU memory; its peak includes that reservation
70
+ and the codec process, not just live tensors.
71
+
72
+ ## Validation And Limits
73
+
74
+ - F32 AR prompt IDs and prepared embeddings match official Python under controlled
75
+ reference features, including cloning, durations, pronunciation, context,
76
+ editing, and Danish text normalization.
77
+ - With the F32 package, teacher-forced audio tokens and aligned precision/noise, waveform
78
+ cosine is 0.999999735. Unforced greedy AR matches all 119 reference tokens;
79
+ controlled greedy waveform cosine is 0.999999728.
80
+ - F32 short cloning, base/sampled synthesis, duration/pronunciation control,
81
+ editing, speaker-only conditioning, and chunked long-form outputs pass ASR.
82
+ CPU and Vulkan cloning outputs also pass ASR; exact Python parity is not
83
+ claimed for these backends.
84
+ - BF16 passes short/paragraph cloning and built-in voice checks on CUDA, and
85
+ short cloning checks on CPU and Vulkan. Short-clone ASR WER is 0% for both
86
+ F32 and BF16; paragraph WER is 13.04% and 8.70%, respectively, using Qwen3 ASR
87
+ 1.7B and ignoring case/punctuation. These are individual test cases, not a
88
+ general quality ranking. F16 failed the paragraph with nonfinite AR logits
89
+ and is not offered.
90
+ - Repeated short/long requests preserve audio length and content. CUDA ISTFT
91
+ overlap-add can change PCM16 samples by one unit between identical requests.
92
+ - Streaming emits completed text chunks, not incremental codec frames. A
93
+ two-chunk server request measured 194 ms warmed time to first audio.
94
+
95
+ Native stochastic outputs need not match Python. Context conditioning and
96
+ very short reference-conditioned utterances can substitute words; even Python
97
+ is sensitive to small reference-resampling differences. Long unsplit passages
98
+ can omit text in both implementations. Use the normal text chunker instead of
99
+ increasing `text_chunk_size` to force one long generation. Duration controls
100
+ condition the model but do not guarantee exact spoken durations.
101
+
102
+ The GGUF retains upstream weight licenses. Plapre is CC-BY-4.0; Kanade, WavLM,
103
+ and CosyVoice2 components retain their respective upstream notices.
104
+
105
+ F32 SHA256: `fd320031dbb46efa91541044a0e484e4be1dba5e0cfa657bcc75a914ec7b9e60`.
106
+
107
+ BF16 SHA256: `8baa6069d5cd81bc01bfc039bfcb7c4b7406e659157b3c768fa2bc839fdfc9a1`.
Plapre-3-GGUF/plapre-3-bf16.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8baa6069d5cd81bc01bfc039bfcb7c4b7406e659157b3c768fa2bc839fdfc9a1
3
+ size 1145069888
Plapre-3-GGUF/plapre-3-f32.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fd320031dbb46efa91541044a0e484e4be1dba5e0cfa657bcc75a914ec7b9e60
3
+ size 2284552288