· via dev.to (home feed)
Piper TTS ran up to 9.3 times faster than Kokoro-82M in CPU-only speech benchmark
A dev.to benchmark on a two-core ARM server measured Piper TTS at up to x8.47 real time while Kokoro-82M ran below x1, making Piper 8.7 to 9.3 times faster for French synthesis.

A benchmark published on dev.to found Piper TTS synthesising French speech 8.7 to 9.3 times faster than Kokoro-82M on the same CPU-only server. Kokoro-82M measured x0.91 to x0.93 real time — the machine computed more slowly than the resulting audio played — while Piper reached x8.11 to x8.47 with its fr_FR-siwis-medium voice, a median of x8.32 over twelve runs.
The post is signed Obole, a persona that describes itself as an AI running on the very server being tested and publishing raw measurements, including unflattering results. The scope is deliberately narrow: this is a speed comparison, not a verdict. No listening test was performed, and the author flags licence terms and Piper's variable audio lengths as factors the benchmark cannot capture.
How it was measured
The machine is a two-core ARM Neoverse-N1 (aarch64) instance with 11 GiB of RAM and no GPU, running Python 3.12.3 with piper-tts 1.8.0 and onnxruntime 1.30.0. The workload was a fixed French text of eight sentences, 505 characters, synthesised sentence by sentence with the model loaded once. The same text was imported from the earlier Kokoro measurement script, so no accidental edit could break comparability. Each Piper voice was run twelve times, in two archived series of six, after a preliminary run suggested an outlier the author declined to build a flattering range around.
The results
| System | Real-time ratio | Runs |
|---|---|---|
| Piper fr_FR-siwis-medium | x8.11 to x8.47, median x8.32 | 12 |
| Piper fr_FR-tom-medium | x4.43 to x4.58, median x4.54 | 12 |
| Kokoro-82M ff_siwis | x0.91 to x0.93 | 6 |
| edge-tts fr-FR-DeniseNeural | x13.10 to x15.52 | 10 |
The Kokoro and edge-tts figures are carried over from a measurement made the previous day on the same machine, not re-run for this article. Turned into per-minute arithmetic — a division, not a new measurement — one minute of speech cost 7.1 to 7.4 seconds of compute with siwis and 13.1 to 13.5 seconds with tom, against 65 to 66 seconds with Kokoro.
A single Piper voice weighs about 63 MB (siwis at 22,050 Hz, tom at 44,100 Hz) against roughly 354 MB for the Kokoro package, making a Piper voice 5.6 times lighter — though the author notes that comparison only holds if one French voice is enough, since the Kokoro bundle ships 54 timbres of which exactly one is French. Kokoro does load faster, 1.04 to 1.06 seconds against 1.71 to 1.96 for Piper. edge-tts, which offloads synthesis to a remote service, still tops the table at x13.10 to x15.52, but it sends every sentence over the network, which is why its ratio swings while Piper's spread across runs stays within 4.5 percent. It also leaves the CPU mostly idle at 26 to 31 percent usage, while Piper and Kokoro both saturate the two cores.
Under load
Because synthesis uses both cores, the author re-ran a series with one core occupied by another process. Piper's throughput roughly halved: siwis fell to x4.26 to x4.46 and tom to x2.22 to x2.53. Even in that degraded state, Piper remained 4.6 to 4.9 times faster than Kokoro measured on an idle machine — a relevant datapoint for small servers that do other work at the same time, such as the video encoding the author mentions.
Checks and caveats
Before concluding, the author tested the measuring instrument itself. ffprobe durations matched the internal sample counts to under a microsecond — acknowledged as a weak check, since the WAV header is written from the same count — and deliberately truncating a WAV made ffprobe report the shorter duration, confirming the tool reacts to the actual file. Loudness analysis showed mean levels of -16.0 dB for siwis and -21.2 dB for tom, with silences appearing only at sentence joins, so the output is neither silence nor noise. What the benchmark cannot say is which voice sounds better; that would require a blind listening test that was not run.
Why it matters
Kokoro-82M is a popular compact open-weight TTS model, but a real-time factor below x1 is a hard blocker for interactive use on CPU-only hardware: synthesis cannot keep up with playback, let alone leave headroom for anything else running on the box. On two-core ARM instances — home servers, edge boxes, tiny cloud VMs — this benchmark points to Piper's ONNX pipeline as the practical choice: comfortably real time, 63 MB per voice, and no network dependency. edge-tts stays fastest only where per-sentence network calls and their variability are acceptable. Just as valuable is the method: archived runs, disclosed outliers, and a verified measurement tool are the standard anyone evaluating local inference claims should copy.
- #text-to-speech
- #benchmarks
- #arm
- #onnx
- #open-source