Instructions to use sushanth9/warmf-en-us-piper with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Piper
How to use sushanth9/warmf-en-us-piper with Piper:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
warm-f (en_US, Piper medium)
A single-speaker American English voice for Piper, 22,050 Hz, mono, about 63 MB (ONNX). It is a small, fast VITS student distilled from the Kokoro-82M af_heart voice, tuned for call-centre style speech: short sentences, confirmations, times, dates, addresses, numbers. On a 2-vCPU server, a short sentence returned its audio in about 0.2-0.3 seconds.
This is a synthetic voice. It is not a clone of any person. The text front end that makes it read times, abbreviations and numbers correctly is a separate, open-source package: warmf-ttsfront (see Usage).
Files
| File | Purpose |
|---|---|
en_US-warmf-medium.onnx |
the model (sha256 a7b54eb7cf42969f6aa58ab7f325daf3d9fbf4a247b780beda965758bddf9671) |
en_US-warmf-medium.onnx.json |
Piper config (espeak en-us, 256 symbols, noise_scale 0.667, length_scale 1.0, noise_w 0.8) |
samples/ |
8 example renders (see below) |
Usage
pip install piper-tts==1.8.0
# text front end: normalizer + house lexicon (recommended, see "Limitations")
git clone https://github.com/tsushanth/warmf-tts && cd warmf-tts && pip install -e .
python examples/render_samples.py path/to/en_US-warmf-medium.onnx out/
Plain Piper also works, but without the front end the model reads text exactly as espeak-ng phonemizes it: "9 PM" is read as a word ("pam"), "tsp" as letters, a ZIP code as a cardinal number.
Use the noise settings from the .json (0.667 / 0.8). Synthesis is random: two renders of the same text differ slightly.
Intended use
Voice agents, IVR prompts, notifications and read-aloud, in English, where low latency and CPU-only serving matter. Not intended for: other languages, singing, long expressive narration, or impersonating anyone.
Training
- Teacher: Kokoro-82M (hexgrad, Apache-2.0), voice
af_heart, speed 1.0. - Data: 7,882 clips (about 10 hours) of teacher speech, synthesized from about 7,900 call-centre sentences written for the purpose (names, emails and phone numbers in them are fictional placeholders; digits were expanded to words before synthesis). No recordings of real callers or customers were used.
- Student: Piper (VITS), fine-tuned from the
libritts_rmedium checkpoint (trained on LibriTTS-R, CC BY 4.0), 10,000 steps on one A10G (about 90 minutes). Recipe:warmf-tts/recipe/kokoro_distill.
Evaluation
Honest summary: it sounds good on the kind of text it was trained on, and has known weak spots on rare words.
- Human blind test, 2026-10-03: one rater, 6 lines, scores 1-5: this voice 5.00, the teacher 5.00, a previous in-house Piper voice 4.33, a Piper catalog voice 4.00. One rater, six lines and a ceiling at 5: treat as a smoke test, not a benchmark. The only tag on this voice was "mispronounced" (two lines: "Permanente" and "pm").
- Audit, 2026-11-01 (1,865 test words and phrases, local Whisper small.en as an ASR proxy, then human listening on the worst cases): prose word error rate 0.5% (6 errors in 1,196 words); everyday words, places, brands and acronyms 1.5-3.9% hard failures; person names 23.7%, abbreviations 27.7%, medications 12.3% by that proxy. The proxy over-counts: a listener heard 22 of the 40 worst "confirmed failures" as fine (it was especially harsh on drug and person names), so these are upper bounds. Human listening is the ground truth; the ratings are in the GitHub repo under
docs/pronunciation. - With the text front end on, spoken AM/PM times were read correctly in 54 of 54 renders; with it off, 38 of 54.
Limitations
- Rare names, drug names, local place names and abbreviations can be mispronounced. A small house lexicon (62 entries, IPA or respelling) fixes the words we heard; it is not comprehensive. Customer- or industry-specific vocabulary needs its own lexicon.
- The student is less stable than the teacher: on 270 random test items it missed at least once more often (17.0% against 9.3%).
- The text front end emits respellings tuned to this voice's phonemizer (for example "9 AM" becomes "nine eigh em"). Its output is meant for the voice, not for people to read.
- English only. Text is phonemized by espeak-ng; unusual words depend on espeak's rules.
- Measured quality comes from a small number of listeners and an automatic proxy. We have not tested long-form reading.
Provenance and legal status (read before using commercially)
- The teacher, Kokoro-82M, is Apache-2.0, and its license places no restriction on its outputs or on training other models with them. However, its model card says it was trained on "synthetic audio generated by closed TTS models from large providers", and its author has said in a public thread that those providers included OpenAI, Google Gemini and ElevenLabs. We are not a party to those providers' terms and cannot tell you whether they would object to a model downstream of that data. No lawyer has reviewed this. If you need a clean chain of provenance, do not use this model; the recipe in the GitHub repo works with a different teacher.
- The student was fine-tuned from a checkpoint trained on LibriTTS-R (read audiobook speech from many real volunteers, CC BY 4.0). No Amazon Polly, Lessac-checkpoint or ElevenLabs audio was used directly to train the student (what went into the teacher is the open question above).
- Running the voice needs the espeak-ng phonemizer (GPL-3.0) via Piper. The weights themselves are not distributed under the GPL.
License
Weights and config: CC BY 4.0. If you use or adapt this model, credit "warm-f voice by Sushanth", link this page, and also credit the upstream sources below. Code in the GitHub repository is Apache-2.0.
Attributions
- Kokoro-82M by hexgrad (Apache-2.0): https://huggingface.co/hexgrad/Kokoro-82M
- LibriTTS-R: Koizumi et al., "LibriTTS-R: A Restored Multi-Speaker Text-to-Speech Corpus", Interspeech 2023 (CC BY 4.0); the
libritts_rPiper checkpoint from the Piper project. - Piper: https://github.com/OHF-Voice/piper1-gpl (GPL-3.0). espeak-ng (GPL-3.0).
Samples
Rendered with piper-tts 1.8.0 on CPU after the text front end, at noise 0.667/0.8. The right column is what a local Whisper small.en heard.
| # | Input | Heard |
|---|---|---|
| 1 | Thanks for calling. How can I help you today? | same |
| 2 | Your appointment is on Monday at 9 AM. Please bring your insurance card. | "...at 9 a.m...." |
| 3 | The pharmacy in Kahului has your creatinine results and your Ozempic refill. | "...your osempic refill." |
| 4 | We are located at 1005 Lakeview Lane, Austin, Texas 78731. | same |
| 5 | That will be $1,250.40, due by March 4th. | "...due by March 4." |
| 6 | Take 2 tsp daily. See the Q&A at UCLA. | "Take two teaspoons daily. See the Q&A at UCLA." |
| 7 | Your confirmation code is A, B, 7, 4, 2. Let me repeat that: A, B, 7, 4, 2. | "A-B742" |
| 8 | The weather today is clear with a light breeze, and the temperature should reach seventy two degrees by early afternoon. | "...72 degrees..." |