Underdog Woof Japanese

  • 40.5 MB for the whole model, both voices included
  • 14.5x faster than real time on one CPU thread (Apple M5 Max), with no GPU, server or API key
  • 437 MB of memory at peak while it runs
  • Two voices: Misa (default) and Mikasa

Underdog Woof Japanese is a small Japanese text-to-speech model. It reads kanji, dates, times, prices, counters, phone numbers, postal codes and addresses the way people say them, and it runs on a laptop CPU from a single 40.5 MB file. It is the Japanese sibling of Underdog Woof, the same size.

Listen

Misa (default) Mikasa
ใŠ้›ป่ฉฑใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚ใ”ไบˆ็ด„ใฏ11ๆœˆ8ๆ—ฅใฎๅˆๅพŒ3ๆ™‚15ๅˆ†ใ€ใŠไบŒไบบๆง˜ใงๆ‰ฟใ‚Šใพใ—ใŸใ€‚
ใŠๅฑŠใ‘ๅ…ˆใฏใ€’150-0041ใ€ๆฑไบฌ้ƒฝๆธ‹่ฐทๅŒบ็ฅžๅ—1-2-3ใงใ™ใ€‚ใŠๅ•ใ„ๅˆใ‚ใ›ใฏ03-1234-5678ใพใงใ€‚
ๆ˜”ใ€…ใ€ๆทฑใ„ๆฃฎใฎใฏใšใ‚Œใฎๅฐใ•ใชๆ‘ใซใ€ไฝ•ใ‚‚ๆ€–ใŒใ‚‰ใชใ„ๅฅณใฎๅญใŒไฝใ‚“ใงใ„ใพใ—ใŸใ€‚

Each clip was made with seed 1.

How it compares

Model Download Hard sentences Everyday sentences
Underdog Woof Japanese 40.5 MB 1.33% 0.17%
Fish Audio Drama 3 41.5 GB 2.39% 0.27%
Qwen3-TTS 1.7B 4.54 GB 8.88% 3.96%
Kokoro 327 MB 11.27% 0.62%

Lower is better. The numbers are kana error rates on 446 Japanese test sentences: 165 everyday ones, and 281 hard ones packed with dates, times, prices, counters, phone numbers, postal codes, addresses, codes, loanwords and kanji with tricky readings. Whisper large-v3 transcribes each clip, then the transcript and the script are both turned into kana by Open JTalk and compared character by character. Every model read the raw written text through its own front end with its default settings, in two voices where it has them, and the table gives the average. Fish Audio Drama 3 cloned the same two voices Woof uses, from one reference clip each. Qwen3-TTS used its built-in Japanese speaker, Ono_Anna, and Kokoro its two Japanese voices. Measured in November 2026.

Woof Japanese is 1,025 times smaller than Drama 3 and misreads 44% less on the hard sentences.

Usage

pip install numpy pyopenjtalk-plus
hf download ConwayResearch/Underdog-Woof-Japanese --local-dir underdog-woof-ja
cd underdog-woof-ja
python -m underdog_woof_ja "ใ”ไบˆ็ด„ใฏๅˆๅพŒ3ๆ™‚15ๅˆ†ใ€ใŠไธ€ไบบๆง˜3,500ๅ††ใงใ™ใ€‚" hello.wav
python -m underdog_woof_ja "ใ”ไบˆ็ด„ใฏๅˆๅพŒ3ๆ™‚15ๅˆ†ใ€ใŠไธ€ไบบๆง˜3,500ๅ††ใงใ™ใ€‚" mikasa.wav --voice mikasa
from underdog_woof_ja import Woof

tts = Woof(voice="mikasa")   # "misa" (default) or "mikasa"
audio = tts("ใŠใฏใ‚ˆใ†ใ”ใ–ใ„ใพใ™๏ผไปŠๆ—ฅใฏไธ€ๆ—ฅไธญ้›จใŒ้™ใ‚‹ใใ†ใชใฎใงใ€ๅ‚˜ใ‚’ๆŒใฃใฆ่กŒใฃใฆใใ ใ•ใ„ใญใ€‚", seed=0)   # float32 mono, 24 kHz
tts.save("hello.wav", audio)

Give Woof the text as you would write it. Open JTalk (through pyopenjtalk-plus) works out how each sentence is read, including the reading and pitch accent of every kanji, numbers, dates and counters such as 3ๆœฌ and 8ๆ—ฅ. Postal codes (ใ€’), addresses written 1-2-3 and letters in codes such as K54-3920 are read the way people say them.

Text is spoken one sentence at a time, and a sentence over 60 characters is split again at its commas. Each piece is checked as it's made. If it runs far too long for its text or has more than a second of silence in the middle, Woof draws it again, up to three more times, and keeps the best take. Pass a seed to get the same audio for the same text every time.

Speed and memory

Misa Mikasa
Speed on one Apple M5 Max CPU thread 14.5x real time 14.6x real time
Peak resident memory 437 MB 438 MB

Speed is the median of three rounds over six everyday sentences on one CPU thread of an Apple M5 Max, run exactly as python -m underdog_woof_ja runs it.

License

Underdog Non-Commercial License 1.0 (see LICENSE and NOTICE). Free for non-commercial use with credit; commercial use needs a license from license@conway.tech.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Space using ConwayResearch/Underdog-Woof-Japanese 1