Remove the 4-bit files (measurably worse sound in the evaluation)
Browse files- README.md +12 -30
- SHA256SUMS +0 -2
- articulino-iq4_nl.gguf +0 -3
- articulino-q4_0.gguf +0 -3
README.md
CHANGED
|
@@ -23,7 +23,7 @@ tags:
|
|
| 23 |
|
| 24 |
**GGUF files of [Articulino-DE-EN-Realtime-Stream-TTS](https://huggingface.co/eigenhand/Articulino-DE-EN-Realtime-Stream-TTS)
|
| 25 |
for [articulino.cpp](https://github.com/eigenhand/articulino.cpp): German and English text to speech with zero-shot voice cloning, in C++, without
|
| 26 |
-
Python: 33 times faster than real time on 12 CPU threads with the recommended 8-bit file,
|
| 27 |
|
| 28 |
Each file holds the complete model in one piece: text encoder, duration predictor, voice encoder, the 4-step DMD2
|
| 29 |
student DiT, the latent encoder for the voice reference, and the decoder (Vocos-style, inverse STFT), with all settings
|
|
@@ -31,29 +31,25 @@ as GGUF metadata. The weights are the same as in the main repository; only their
|
|
| 31 |
|
| 32 |
| File | Size | Weights | Speed, 12 CPU threadsΒΉ | Notes |
|
| 33 |
|---|---|---|---|---|
|
| 34 |
-
| `articulino-iq4_nl.gguf` | 104 MB | 4 bit (IQ4_NL) | 52Γ | fastest on CPUs; slightly lower quality (UTMOS β0.05, see Quality) |
|
| 35 |
-
| `articulino-q4_0.gguf` | 104 MB | 4 bit (Q4_0) | 52Γ | not recommended: lower quality and speaker similarity than IQ4_NL at the same speed |
|
| 36 |
| `articulino-q8_0.gguf` | 137 MB | 8 bit (Q8_0) | 33Γ | **recommended**: equivalent to F32 in every measure, a third of the size |
|
| 37 |
| `articulino-f16.gguf` | 220 MB | 16 bit float | 26Γ | half the download of F32, computed in F32 after loading |
|
| 38 |
| `articulino-f32.gguf` | 438 MB | 32 bit float | 26Γ | reference; matches PyTorch to float rounding |
|
| 39 |
|
| 40 |
ΒΉ Times real time for the whole pipeline per sentence, on 12 efficiency cores of an Intel Core i9-14900K (in a VM).
|
| 41 |
-
The PyTorch release reaches 24.9Γ on the same cores. With 2 threads:
|
| 42 |
-
(PyTorch 8.3Γ).
|
|
|
|
| 43 |
|
| 44 |
| File | 12 threads | 8 threads | 4 threads | 2 threads | First sentence (12 threads) |
|
| 45 |
|---|---|---|---|---|---|
|
| 46 |
| F32 | 25.9Γ | 20.7Γ | 11.5Γ | 6.0Γ | 0.18 s |
|
| 47 |
| F16 | 25.7Γ | 20.3Γ | 11.5Γ | 6.0Γ | 0.18 s |
|
| 48 |
| Q8_0 | 32.7Γ | 24.8Γ | 13.3Γ | 6.9Γ | 0.14 s |
|
| 49 |
-
| Q4_0 | 52.0Γ | 38.9Γ | 21.5Γ | 11.4Γ | 0.08 s |
|
| 50 |
-
| IQ4_NL | 52.4Γ | 39.3Γ | 21.6Γ | 11.2Γ | 0.09 s |
|
| 51 |
| PyTorch F32, for comparison | 24.9Γ | 20.6Γ | 12.9Γ | 8.3Γ | 0.20 s |
|
| 52 |
| Any file, Vulkan on an AMD Radeon AI PRO R9700 | 135β138Γ | | | | 0.03 s |
|
| 53 |
|
| 54 |
-
In the
|
| 55 |
-
|
| 56 |
-
sentence uses the file's type.
|
| 57 |
|
| 58 |
## Quickstart
|
| 59 |
|
|
@@ -93,10 +89,7 @@ CER, ECAPA cosine to the voice prompt for similarity, UTMOS for quality; 95 % bo
|
|
| 93 |
| F32 | 4.72 % [3.90, 5.59] | 1.84 % [1.46, 2.24] | 0.659 [0.649, 0.669] | 3.30 [3.27, 3.34] |
|
| 94 |
| F16 | 4.70 % [3.87, 5.56] | 1.83 % [1.45, 2.24] | 0.659 [0.649, 0.669] | 3.30 [3.27, 3.34] |
|
| 95 |
| **Q8_0** | **4.67 %** [3.85, 5.50] | **1.79 %** [1.42, 2.19] | **0.659** [0.649, 0.669] | **3.30** [3.26, 3.33] |
|
| 96 |
-
| Q4_0 | 4.93 % [4.08, 5.81] | 1.88 % [1.50, 2.29] | 0.653 [0.643, 0.664] | 3.24 [3.20, 3.27] |
|
| 97 |
-
| IQ4_NL | 5.10 % [4.18, 6.03] | 1.98 % [1.55, 2.46] | 0.657 [0.646, 0.667] | 3.25 [3.22, 3.29] |
|
| 98 |
| F32, Vulkan (R9700) | 4.75 % [3.92, 5.60] | 1.81 % [1.44, 2.21] | 0.659 [0.649, 0.670] | 3.30 [3.27, 3.34] |
|
| 99 |
-
| IQ4_NL, Vulkan (R9700) | 4.97 % [4.09, 5.89] | 1.95 % [1.53, 2.41] | 0.657 [0.646, 0.667] | 3.25 [3.22, 3.29] |
|
| 100 |
|
| 101 |
| English (107) | WER | CER | Similarity | UTMOS |
|
| 102 |
|---|---|---|---|---|
|
|
@@ -104,16 +97,12 @@ CER, ECAPA cosine to the voice prompt for similarity, UTMOS for quality; 95 % bo
|
|
| 104 |
| F32 | 2.13 % [1.42, 2.94] | 0.85 % [0.55, 1.19] | 0.590 [0.577, 0.603] | 4.28 [4.26, 4.30] |
|
| 105 |
| F16 | 2.09 % [1.38, 2.89] | 0.85 % [0.54, 1.20] | 0.590 [0.577, 0.603] | 4.28 [4.26, 4.30] |
|
| 106 |
| **Q8_0** | **2.25 %** [1.52, 3.08] | **0.91 %** [0.58, 1.27] | **0.591** [0.578, 0.604] | **4.27** [4.25, 4.29] |
|
| 107 |
-
| Q4_0 | 2.43 % [1.70, 3.26] | 1.01 % [0.66, 1.40] | 0.581 [0.567, 0.595] | 4.25 [4.23, 4.27] |
|
| 108 |
-
| IQ4_NL | 2.24 % [1.50, 3.10] | 0.97 % [0.59, 1.42] | 0.594 [0.581, 0.607] | 4.26 [4.24, 4.28] |
|
| 109 |
|
| 110 |
| Pronunciation suite (129) | CER, Whisper, 3 seeds | Correct in all seeds | Parakeet (seed 0): correct |
|
| 111 |
|---|---|---|---|
|
| 112 |
| PyTorch reference | 1.41 % | 116 | 122 |
|
| 113 |
| F32 / F16 | 1.41 % / 1.41 % | 116 / 116 | 122 / 123 |
|
| 114 |
| Q8_0 | 1.27 % | 118 | 121 |
|
| 115 |
-
| Q4_0 | 1.54 % | 116 | 118 |
|
| 116 |
-
| IQ4_NL | 1.39 % | 116 | 122 |
|
| 117 |
|
| 118 |
**Equivalence to the reference.** A file counts as equivalent when the 90 % interval of every paired difference lies
|
| 119 |
inside the margins fixed before the measurement (Β±1.0 point WER, Β±0.5 point CER, Β±0.01 similarity, Β±0.05 UTMOS);
|
|
@@ -124,16 +113,12 @@ inside the margins fixed before the measurement (Β±1.0 point WER, Β±0.5 point CE
|
|
| 124 |
| F32 | 0.00 [0.00, 0.00] | 0.000 | 0.000 | equivalent | equivalent | equivalent |
|
| 125 |
| F16 | β0.02 [β0.08, 0.02] | 0.000 | β0.002 | equivalent | equivalent | equivalent |
|
| 126 |
| **Q8_0** | β0.06 [β0.26, 0.15] | 0.000 | β0.004 | **equivalent** | **equivalent** | **equivalent** |
|
| 127 |
-
| Q4_0 | +0.20 [β0.12, 0.53] | β0.006 [β0.008, β0.003] | β0.066 [β0.079, β0.052] | **different**: similarity, UTMOS | not equivalent: similarity β0.009 | **different**: similarity β0.014, UTMOS β0.05 |
|
| 128 |
-
| IQ4_NL | +0.37 [β0.02, 0.79] | β0.002 | β0.050 [β0.064, β0.036] | **different**: UTMOS | equivalent | not equivalent: similarity +0.006 (higher) |
|
| 129 |
| F32, Vulkan | +0.02 [β0.08, 0.13] | 0.000 | β0.000 | equivalent | equivalent | equivalent |
|
| 130 |
-
| IQ4_NL, Vulkan | +0.24 [β0.10, 0.62] | β0.002 | β0.052 [β0.066, β0.039] | **different**: UTMOS | not equivalent: similarity +0.007 (higher) | not equivalent: similarity +0.006 (higher) |
|
| 131 |
|
| 132 |
-
**What this means.** F16, Q8_0 and the Vulkan path speak like F32
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
**Q8_0**, and IQ4_NL only where the extra speed matters. Q4_0 is dominated by IQ4_NL.
|
| 137 |
|
| 138 |
**Fidelity.** Median log-mel distance to the reference output; another seed of the reference itself differs by
|
| 139 |
5.9 dB (German), 5.5 dB (English) and 5.5 dB (suite).
|
|
@@ -143,13 +128,10 @@ similarity. The change is small next to the difference between voices, but it is
|
|
| 143 |
| F32 | 0.00 / 0.00 / 0.00 dB | 100 % |
|
| 144 |
| F16 | 0.07 / 0.10 / 0.06 dB | 100 % |
|
| 145 |
| Q8_0 | 1.34 / 1.42 / 1.24 dB | 81 % |
|
| 146 |
-
| Q4_0 | 4.10 / 3.93 / 3.94 dB | 24 % |
|
| 147 |
-
| IQ4_NL | 4.03 / 4.12 / 3.78 dB | 28 % |
|
| 148 |
| F32, Vulkan (R9700) | 0.40 / 0.48 / 0.35 dB | 94 % |
|
| 149 |
-
| IQ4_NL, Vulkan (R9700) | 4.04 / 4.04 / 3.80 dB | 23 % |
|
| 150 |
|
| 151 |
-
**Building blocks.** Same inputs, signal-to-noise ratio of one DiT step against float32: F16 69 dB, Q8_0 36 dB
|
| 152 |
-
|
| 153 |
are in the engine's README.
|
| 154 |
|
| 155 |
The F32 file reproduces the PyTorch reference: every building block within 1e-5 relative error, and the whole chain
|
|
|
|
| 23 |
|
| 24 |
**GGUF files of [Articulino-DE-EN-Realtime-Stream-TTS](https://huggingface.co/eigenhand/Articulino-DE-EN-Realtime-Stream-TTS)
|
| 25 |
for [articulino.cpp](https://github.com/eigenhand/articulino.cpp): German and English text to speech with zero-shot voice cloning, in C++, without
|
| 26 |
+
Python: 33 times faster than real time on 12 CPU threads with the recommended 8-bit file, 135 times with Vulkan.**
|
| 27 |
|
| 28 |
Each file holds the complete model in one piece: text encoder, duration predictor, voice encoder, the 4-step DMD2
|
| 29 |
student DiT, the latent encoder for the voice reference, and the decoder (Vocos-style, inverse STFT), with all settings
|
|
|
|
| 31 |
|
| 32 |
| File | Size | Weights | Speed, 12 CPU threadsΒΉ | Notes |
|
| 33 |
|---|---|---|---|---|
|
|
|
|
|
|
|
| 34 |
| `articulino-q8_0.gguf` | 137 MB | 8 bit (Q8_0) | 33Γ | **recommended**: equivalent to F32 in every measure, a third of the size |
|
| 35 |
| `articulino-f16.gguf` | 220 MB | 16 bit float | 26Γ | half the download of F32, computed in F32 after loading |
|
| 36 |
| `articulino-f32.gguf` | 438 MB | 32 bit float | 26Γ | reference; matches PyTorch to float rounding |
|
| 37 |
|
| 38 |
ΒΉ Times real time for the whole pipeline per sentence, on 12 efficiency cores of an Intel Core i9-14900K (in a VM).
|
| 39 |
+
The PyTorch release reaches 24.9Γ on the same cores. With 2 threads: Q8_0 6.9Γ, F32 6.0Γ
|
| 40 |
+
(PyTorch 8.3Γ). There are no 4-bit files: they were understood as well as F32 but sounded measurably worse
|
| 41 |
+
(UTMOS 0.05β0.07 lower), so 8 bits is the smallest precision released.
|
| 42 |
|
| 43 |
| File | 12 threads | 8 threads | 4 threads | 2 threads | First sentence (12 threads) |
|
| 44 |
|---|---|---|---|---|---|
|
| 45 |
| F32 | 25.9Γ | 20.7Γ | 11.5Γ | 6.0Γ | 0.18 s |
|
| 46 |
| F16 | 25.7Γ | 20.3Γ | 11.5Γ | 6.0Γ | 0.18 s |
|
| 47 |
| Q8_0 | 32.7Γ | 24.8Γ | 13.3Γ | 6.9Γ | 0.14 s |
|
|
|
|
|
|
|
| 48 |
| PyTorch F32, for comparison | 24.9Γ | 20.6Γ | 12.9Γ | 8.3Γ | 0.20 s |
|
| 49 |
| Any file, Vulkan on an AMD Radeon AI PRO R9700 | 135β138Γ | | | | 0.03 s |
|
| 50 |
|
| 51 |
+
In the Q8_0 file, norms, biases, embeddings and the voice encoder (which runs once per voice) keep 16 or 32 bits.
|
| 52 |
+
Everything that runs per sentence uses the file's type.
|
|
|
|
| 53 |
|
| 54 |
## Quickstart
|
| 55 |
|
|
|
|
| 89 |
| F32 | 4.72 % [3.90, 5.59] | 1.84 % [1.46, 2.24] | 0.659 [0.649, 0.669] | 3.30 [3.27, 3.34] |
|
| 90 |
| F16 | 4.70 % [3.87, 5.56] | 1.83 % [1.45, 2.24] | 0.659 [0.649, 0.669] | 3.30 [3.27, 3.34] |
|
| 91 |
| **Q8_0** | **4.67 %** [3.85, 5.50] | **1.79 %** [1.42, 2.19] | **0.659** [0.649, 0.669] | **3.30** [3.26, 3.33] |
|
|
|
|
|
|
|
| 92 |
| F32, Vulkan (R9700) | 4.75 % [3.92, 5.60] | 1.81 % [1.44, 2.21] | 0.659 [0.649, 0.670] | 3.30 [3.27, 3.34] |
|
|
|
|
| 93 |
|
| 94 |
| English (107) | WER | CER | Similarity | UTMOS |
|
| 95 |
|---|---|---|---|---|
|
|
|
|
| 97 |
| F32 | 2.13 % [1.42, 2.94] | 0.85 % [0.55, 1.19] | 0.590 [0.577, 0.603] | 4.28 [4.26, 4.30] |
|
| 98 |
| F16 | 2.09 % [1.38, 2.89] | 0.85 % [0.54, 1.20] | 0.590 [0.577, 0.603] | 4.28 [4.26, 4.30] |
|
| 99 |
| **Q8_0** | **2.25 %** [1.52, 3.08] | **0.91 %** [0.58, 1.27] | **0.591** [0.578, 0.604] | **4.27** [4.25, 4.29] |
|
|
|
|
|
|
|
| 100 |
|
| 101 |
| Pronunciation suite (129) | CER, Whisper, 3 seeds | Correct in all seeds | Parakeet (seed 0): correct |
|
| 102 |
|---|---|---|---|
|
| 103 |
| PyTorch reference | 1.41 % | 116 | 122 |
|
| 104 |
| F32 / F16 | 1.41 % / 1.41 % | 116 / 116 | 122 / 123 |
|
| 105 |
| Q8_0 | 1.27 % | 118 | 121 |
|
|
|
|
|
|
|
| 106 |
|
| 107 |
**Equivalence to the reference.** A file counts as equivalent when the 90 % interval of every paired difference lies
|
| 108 |
inside the margins fixed before the measurement (Β±1.0 point WER, Β±0.5 point CER, Β±0.01 similarity, Β±0.05 UTMOS);
|
|
|
|
| 113 |
| F32 | 0.00 [0.00, 0.00] | 0.000 | 0.000 | equivalent | equivalent | equivalent |
|
| 114 |
| F16 | β0.02 [β0.08, 0.02] | 0.000 | β0.002 | equivalent | equivalent | equivalent |
|
| 115 |
| **Q8_0** | β0.06 [β0.26, 0.15] | 0.000 | β0.004 | **equivalent** | **equivalent** | **equivalent** |
|
|
|
|
|
|
|
| 116 |
| F32, Vulkan | +0.02 [β0.08, 0.13] | 0.000 | β0.000 | equivalent | equivalent | equivalent |
|
|
|
|
| 117 |
|
| 118 |
+
**What this means.** F16, Q8_0 and the Vulkan path speak like F32 on every set and every measure, so Q8_0 is the
|
| 119 |
+
recommended file. 4-bit versions (Q4_0, IQ4_NL) went through the same evaluation and were dropped: they were
|
| 120 |
+
understood as well as F32, but German UTMOS was 0.05β0.07 lower (significant after Holm correction), and Q4_0 also lost
|
| 121 |
+
some speaker similarity.
|
|
|
|
| 122 |
|
| 123 |
**Fidelity.** Median log-mel distance to the reference output; another seed of the reference itself differs by
|
| 124 |
5.9 dB (German), 5.5 dB (English) and 5.5 dB (suite).
|
|
|
|
| 128 |
| F32 | 0.00 / 0.00 / 0.00 dB | 100 % |
|
| 129 |
| F16 | 0.07 / 0.10 / 0.06 dB | 100 % |
|
| 130 |
| Q8_0 | 1.34 / 1.42 / 1.24 dB | 81 % |
|
|
|
|
|
|
|
| 131 |
| F32, Vulkan (R9700) | 0.40 / 0.48 / 0.35 dB | 94 % |
|
|
|
|
| 132 |
|
| 133 |
+
**Building blocks.** Same inputs, signal-to-noise ratio of one DiT step against float32: F16 69 dB, Q8_0 36 dB; the
|
| 134 |
+
decoder's spectrum deviates by 0.002 / 0.13 dB on average. The full tables
|
| 135 |
are in the engine's README.
|
| 136 |
|
| 137 |
The F32 file reproduces the PyTorch reference: every building block within 1e-5 relative error, and the whole chain
|
SHA256SUMS
CHANGED
|
@@ -1,7 +1,5 @@
|
|
| 1 |
c2020e5d5bd1a9679353c83e9476c691716a6854d02517be326db7266ac56cea articulino-f16.gguf
|
| 2 |
acfa0c6019f7bd558a355b6c12e2eb5cb39cb2151e7e55dd1cde5d07fb0cb0e4 articulino-f32.gguf
|
| 3 |
-
1c2fc743d8057caf14448c51a811e7848b6351cbfb3d39beb3ff5103db2f8fed articulino-iq4_nl.gguf
|
| 4 |
-
e124f05c27291b5dc361b67ffc6a193e1498d642a3a8b5ab0c4411f3fa1eefd3 articulino-q4_0.gguf
|
| 5 |
443dd67b08a6165e6e881432acae9e241e4662e8c00f464204b17260b9b2828b articulino-q8_0.gguf
|
| 6 |
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
|
| 7 |
ab6b0eea89750bed940a4d278cd2906235323cb563bb49adf0388361815d5a60 NOTICE
|
|
|
|
| 1 |
c2020e5d5bd1a9679353c83e9476c691716a6854d02517be326db7266ac56cea articulino-f16.gguf
|
| 2 |
acfa0c6019f7bd558a355b6c12e2eb5cb39cb2151e7e55dd1cde5d07fb0cb0e4 articulino-f32.gguf
|
|
|
|
|
|
|
| 3 |
443dd67b08a6165e6e881432acae9e241e4662e8c00f464204b17260b9b2828b articulino-q8_0.gguf
|
| 4 |
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
|
| 5 |
ab6b0eea89750bed940a4d278cd2906235323cb563bb49adf0388361815d5a60 NOTICE
|
articulino-iq4_nl.gguf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:1c2fc743d8057caf14448c51a811e7848b6351cbfb3d39beb3ff5103db2f8fed
|
| 3 |
-
size 103653632
|
|
|
|
|
|
|
|
|
|
|
|
articulino-q4_0.gguf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:e124f05c27291b5dc361b67ffc6a193e1498d642a3a8b5ab0c4411f3fa1eefd3
|
| 3 |
-
size 103653632
|
|
|
|
|
|
|
|
|
|
|
|