A text-to-speech model you can fit on a floppy-disk-sized download? Almost. Underdog Woof is a new English voice model that weighs about 32 MB and runs on a single CPU thread, with no GPU, server or API key.
Underdog showed it off this week in a browser game, and the weights are already on Hugging Face. The vendor’s own test puts its word error rate below several paid cloud voices.
This guide covers what Woof is, the full specs, how to run it on Windows, Mac or Linux in a few commands, the licence catch, and how it compares with Kokoro, Kitten and other small TTS models.
- What: a tiny English text-to-speech model from US startup Underdog, published as ConwayResearch/Underdog-Woof on Hugging Face.
- Size: 31.7 MB for the one-voice browser model, 40.6 MB for the two-voice download (voices Juno and Mira).
- Runs on: any CPU with Python and numpy. Peak memory is about 400-600 MB. No GPU needed.
- Quality (vendor-reported): 1.42% word error rate on a 500-sentence “hard cases” test, against 5.17% for Kokoro 82M.
- Speed (vendor-reported): 7-18x faster than real time on one Apple M5 Max CPU thread.
- Licence: free for personal, research, teaching and non-profit use with attribution. Commercial use needs a paid licence.
What Is Underdog Woof?
Woof is a text-to-speech (TTS) model: you give it text, and it gives you a WAV file of a natural voice reading it. It comes from Underdog, a startup founded by Sigil Wen that builds AI meant to run on your own devices.
The model is published under the ConwayResearch account on Hugging Face. TechCrunch covered the launch on 6 November 2026, after Underdog posted a demo on X calling it a “frontier text-to-speech model”.
Why it matters
- It is tiny: most good open voices are hundreds of MB or several GB. Woof is a few dozen MB.
- It is fully offline: Underdog says it runs in the browser and on most devices with no internet connection.
- It claims cloud-level accuracy: on the vendor’s test, it misreads fewer words than ElevenLabs Flash v2.5 or Deepgram Aura-2.
Wen told TechCrunch: “I think we will be able to run most capable models of today on the devices you already own within months.”
The demo game
Underdog launched Woof with a small browser game at underdog.ai/escape. It is a retro room with a typewriter and a CRT screen.
Whatever you type on the typewriter is read aloud by Woof. Every voice in the game is Woof, and beating the “Darkcloud” villain earns an invite to Underdog’s waitlisted app.
Note: Woof is one of several Underdog models. The company also launched Bark, a 167 MB speech-to-text model, a few weeks earlier, and has teased a 27B model that runs on laptops.
Underdog Woof Specs at a Glance
All figures below come from the official model card unless marked otherwise.
| Item | Detail |
|---|---|
| Model | Underdog Woof (Hugging Face: ConwayResearch/Underdog-Woof) |
| Maker | Underdog (Conway), US |
| Task | Text-to-speech, English only |
| Voices | Juno (default) and Mira, stored in one weights file |
| Download size | 40.6 MB (two voices); 31.7 MB (one-voice browser model) |
| Parameters | 38.24M total for the two-voice model: 22.95M speech model + 15.3M audio decoder. TechCrunch quotes 31M for the small model. |
| Audio decoder | Adapted from Kyutai’s Mimi codec |
| Output | 24 kHz, mono, float32 WAV |
| Runtime | Python + numpy (no GPU, no PyTorch needed for the numpy runtime) |
| Peak memory | 402 MB (Juno), 601 MB (Mira) |
| Training data named | LibriTTS-R and Emilia-YODAS (both CC-BY 4.0) |
| Licence | Underdog Non-Commercial License 1.0 |
How Good Is Woof? The Numbers
Underdog tested Woof on the Gradium TTS Hard Cases set: 500 tricky English sentences full of numbers, dates, codes and names. A speech model transcribed each clip, and another model counted word errors.
Warning: these are vendor-reported numbers. Underdog ran the test and chose the scoring method. No independent lab has published results yet.
Woof’s own results
| Version | Word error rate | Speed (1 CPU thread, M5 Max) | Peak memory |
|---|---|---|---|
| Two-voice, Mira | 1.42% (62 of 4,379 words) | 7.2x real time | 601 MB |
| Two-voice, Juno | 1.53% (67 of 4,371 words) | 13.8x real time | 402 MB |
| One-voice (browser model) | 2.06% | 18x real time (PyTorch, int8, 16 steps) | 852 MB |
“13.8x real time” means one minute of speech takes roughly 4-5 seconds to make on that one thread. Slower or older CPUs will take longer.
Against cloud and local voices
The model card compares Woof with about 20 other models on the same test. Here is a cross-section (lower error rate is better).
| Model | Where it runs | Download | Word error rate |
|---|---|---|---|
| Underdog Woof (Mira) | Your CPU | 40.6 MB | 1.42% |
| Fish Audio Drama 3 | Cloud API / open weights | 41.5 GB | 1.89% |
| Phonon 31m | On device | 55.1 MB | 2.16% |
| Deepgram Aura-2 | Cloud API | Not public | 2.43% |
| Microsoft MAI-Voice-2.1 | Cloud API | Not public | 2.64% |
| Mistral Voxtral 3 TTS | Cloud API | Not public | 2.91% |
| Kokoro 82M | On device | 327 MB | 5.17% |
| ElevenLabs Flash v2.5 | Cloud API | Not public | 6.63% |
| Kitten Nano 0.8 | On device | 27.6 MB | 9.81% |
| Qwen3-TTS 1.7B | On device | 4.54 GB | 11.99% |
Note: word error rate measures whether every word is said correctly. It does not measure how natural, warm or expressive the voice sounds. A model can say every word right and still sound flat, so listen before you choose.
Try Woof in Your Browser First
You don’t need to install anything to hear it. There are two official ways to test the voice.
- Underdog’s demo page: underdog.ai/woof runs the one-voice model inside your browser.
- Hugging Face Space: huggingface.co/spaces/hugging-apps/underdog-woof, where you type text and play the result.
- The game: underdog.ai/escape, if you want the fun version.
The model card also has six sample WAV clips in its samples/ folder. Try sentences with phone numbers and dates, since that is where small TTS models usually fail.
How to Run Underdog Woof Locally (CLI)
The setup is the simplest I have seen for any open voice model. You need Python 3 and the Hugging Face command-line tool.
- Install Python. Get Python 3 from python.org (Windows/Mac) or your package manager (Linux). Tick “Add Python to PATH” on Windows.
- Install numpy and the Hugging Face CLI. Open a terminal and run
pip install numpy huggingface_hub. Thehfcommand comes withhuggingface_hub. - Download the model. Run
hf download ConwayResearch/Underdog-Woof --local-dir underdog-woof. This pulls about 41 MB into a folder calledunderdog-woof. - Go into the folder. Run
cd underdog-woof. Theunderdog_woofcode lives here, so run the next commands from this folder. - Make your first clip. Run the command below. It writes
hello.wavwith the default Juno voice. - Switch voice. Add
--voice mirato use the second voice.
pip install numpy huggingface_hub
hf download ConwayResearch/Underdog-Woof --local-dir underdog-woof
cd underdog-woof
python -m underdog_woof "Your order ships on March 3rd. Call 415-555-0199 with questions." -o hello.wav
python -m underdog_woof "Thanks for calling. How can I help you today?" --voice mira -o mira.wav
The model card documents only two command-line options: -o for the output file and --voice (juno or mira).
Tip: on Windows, use double quotes around your text in PowerShell or Command Prompt, exactly as shown. If python opens the Microsoft Store, try py instead.
Use Woof From Python
For scripts, apps or batch jobs, call Woof directly. This is the official example from the model card.
from underdog_woof import Woof
tts = Woof(voice="mira") # "juno" (default) or "mira"
audio = tts("Hey! Thanks for calling. How can I help you today?", seed=0)
tts.save("hello.wav", audio) # float32 mono, 24 kHz
Useful options
- seed: the same text with the same seed gives the same audio every time. Great for repeatable podcast intros.
- normalize=False: turns off the built-in text normalizer, which rewrites numbers, dates, money and codes into words. Leave it on unless it reads something wrong.
- Long text: Woof splits text into sentences on its own. Sentences over 120 characters are split again at commas, semicolons or dashes.
- Self-check: each clip is checked after it is made and can be regenerated up to three times if it fails.
Batch a whole script
To voice a longer piece, such as a blog post or a video script, loop over paragraphs and save one file each. Then join them in any audio editor.
from underdog_woof import Woof
tts = Woof(voice="juno")
paragraphs = open("script.txt", encoding="utf-8").read().split("\n\n")
for i, para in enumerate(paragraphs, 1):
if para.strip():
tts.save(f"part_{i:02d}.wav", tts(para.strip(), seed=0))
If you then want background music or sound effects under the voice, see our guides to local text-to-SFX models.
Hardware and Memory Needs
Woof is built for ordinary computers. Here is what the published figures mean in practice.
| Need | What Underdog says | What it means for you |
|---|---|---|
| GPU | Not required | Works on laptops, mini PCs and office machines |
| CPU | Tested on one Apple M5 Max thread | Older CPUs will be slower; no other chips were published |
| RAM | 402-601 MB peak (numpy runtime) | Any machine with 4 GB RAM should have room to spare (estimate) |
| Disk | 40.6 MB | Smaller than most phone apps |
| Internet | Only for the first download | Fully offline afterwards |
Note: Underdog has not published figures for Raspberry Pi, Android or iPhone. Treat “runs on most devices” as a vendor claim until people post real tests.
Licence: What You Can and Cannot Do
This is the part most people will miss. Woof is open to download, but not open source in the Apache or MIT sense. It uses the Underdog Non-Commercial License 1.0.
| Use | Allowed? | Conditions |
|---|---|---|
| Personal projects | Yes | Attribution required |
| Research and teaching | Yes | Attribution required |
| Non-profits | Yes | Attribution required |
| Publishing audio you made (e.g. a hobby video) | Yes, non-commercially | Put “Underdog Woof” or “underdog.ai” in the title or description |
| Apps or products using Woof | Only non-commercial | Show “Voice by Underdog Woof” |
| Commercial use (paid apps, client work, monetised content) | No, without a licence | Contact license@conway.tech |
| Training or distilling other speech models | No | Banned for the model and its audio |
Warning: a monetised YouTube channel or an ad-supported website is likely commercial use. Ask Underdog for a licence before using Woof voices there.
Woof vs Other Small TTS Models
Which tiny voice model should you pick? It depends on licence and language more than raw accuracy.
| Model | Size | WER (Woof test) | Languages | Commercial use | Best for |
|---|---|---|---|---|---|
| Underdog Woof | 32-41 MB | 1.42-2.06% | English | Paid licence | Offline English voice, accuracy with numbers |
| Kokoro 82M | 327 MB | 5.17% | Several | Yes (Apache 2.0) | Free commercial projects, more voices |
| Kitten Nano 0.8 | 27.6 MB | 9.81% | English | Yes (Apache 2.0) | Smallest possible footprint |
| Fish Audio Drama 3 | 41.5 GB | 1.89% | Many | Check model licence | Expressive, dramatic voices on a GPU |
| ElevenLabs Flash v2.5 | Cloud | 6.63% | Many | Yes (paid plans) | Voice cloning, no setup |
Sizes and error rates come from Woof’s model card (vendor-reported). Licence notes come from each project’s own page.
Who should use which
- Hobby projects, offline assistants, accessibility tools: Woof is the most accurate tiny option.
- Commercial apps on a zero budget: Kokoro, because its licence allows it.
- Character voices and drama: a big GPU model like Fish Audio Drama 3 in ComfyUI.
- Voice cloning or many languages: see our ElevenLabs alternatives guide.
Limits and What We Still Don’t Know
- English only: no other languages are listed.
- Two voices: Juno and Mira. No voice cloning is mentioned.
- No controls listed: the card does not mention SSML, speed, pitch, emotion tags or streaming output.
- One test machine: speed numbers come from a single Apple M5 Max CPU thread.
- Self-scored benchmark: transcripts and error counts came from AI models Underdog chose.
- No paper or GitHub repo yet: the model card is the main technical document.
- Parameter count differs: TechCrunch says 31M; the card lists 38.24M for the two-voice model. The smaller figure likely refers to the one-voice model.
Troubleshooting Underdog Woof
“hf: command not found” or “‘hf’ is not recognized”
The Hugging Face CLI isn’t installed or isn’t on your PATH. Run pip install -U huggingface_hub, then open a new terminal.
“No module named underdog_woof”
You are not inside the downloaded folder. Run cd underdog-woof first, because the code ships with the model files.
Numbers or codes are read strangely
The built-in normalizer rewrites numbers, dates and money. If it gets a format wrong, write the text the way you want it spoken, or pass normalize=False and spell it out yourself.
Every run sounds slightly different
Set a fixed seed, for example seed=0. The same text and seed give the same audio.
Generation is slow on my PC
Try the Juno voice, which the card lists as almost twice as fast as Mira (13.8x vs 7.2x real time on the test machine).
My Take
Woof is the kind of release I like: small, useful and runnable in two minutes. If its accuracy holds up in independent tests, it beats voices that are ten to a hundred times bigger.
The licence is the real limit. For personal tools, home assistants or a reading aid, it is a great pick. For anything that earns money, Kokoro’s open licence is still the safer free default.
I’d also wait for community tests on cheap hardware like a Raspberry Pi before building a product on the “runs everywhere” claim. Pair it with a local speech-to-text model like Nemotron 3.5 Transcribe and a small LLM such as Liquid AI LFM3, and you have a fully offline voice assistant.
Frequently Asked Questions
Is Underdog Woof free?
Yes, for personal, research, teaching and non-profit use with attribution. Commercial use needs a paid licence from Underdog.
Does Woof need a GPU?
No. It runs on a single CPU thread with Python and numpy, and peaks at about 400-600 MB of memory.
How big is the Woof model?
The one-voice browser model is 31.7 MB. The two-voice download with Juno and Mira is 40.6 MB.
Does Woof support languages other than English?
No. The model card lists English only.
Can Woof clone my voice?
No. It ships with two fixed voices, Juno and Mira, and the card does not mention cloning.
Can I use Woof voices on a monetised YouTube channel?
That is likely commercial use, which needs a licence. Email license@conway.tech before publishing.
Is Woof better than Kokoro?
On Underdog’s own accuracy test, yes: 1.42% vs 5.17% word error rate. Kokoro supports more languages and allows commercial use.
Does Woof work offline?
Yes. After the first download, it needs no internet connection.
Sources
- Hugging Face model card: ConwayResearch/Underdog-Woof (specs, benchmarks, commands, licence)
- TechCrunch: “Underdog shows off a 32MB speech model in new demo” (6 Nov 2026)
- Underdog on X: Woof announcement post
- Hugging Face dataset: gradium/tts-hard-sentences-202610 (benchmark sentences)
- Hugging Face Space: hugging-apps/underdog-woof (online demo)
- Kokoro and Kitten TTS project pages (licences)



