AIToday
Audio & SpeechQiita 機械学習Published: Oct 15, 2026, 19:00 JST

Moonshine beats faster-whisper on Japanese test: lower CER, 0.2s vs 1.3s

Moonshine beats faster-whisper on Japanese test: lower CER, 0.2s vs 1.3s

3 Key Points

  1. What happened

    The developer benchmarked Moonshine Voice's Japanese "Small Streaming" model against faster-whisper's small model on a Linux CPU (16 cores), using synthetic speech, 20 FLEURS clips and eight of the author's own sentences; Moonshine posted lower character error rates (0.092–0.110 vs 0.104–0.155) and faster response times (0.18–0.30s vs 1.31–2.25s).

  2. Why it matters

    For developers weighing a locally run Japanese speech-recognition engine, Moonshine looks faster and slightly more accurate on CPU, though the low sample counts and the differing measurement methods — streaming for Moonshine, whole-clip processing for Whisper — mean the results are best read as a rough signal. Moonshine also splits Japanese into short lines at pauses, so sentence-level use needs post-processing.

Not sure about something? Ask the AI

Questions and answers are published on this page.

Summaries like this, in your inbox every morning.

Context & Analysis

The post is a hands-on implementation write-up aimed at developers who want to benchmark Japanese speech recognition themselves. It supplies the setup steps — a Python virtual environment with moonshine-voice and faster-whisper installed, and 16 kHz mono 16-bit WAV input produced with ffmpeg — and works with moonshine-voice 0.1.5 and faster-whisper 1.2.1. Moonshine is fed audio in 100 ms chunks at real-time speed so that each line's completion time can be recorded, while faster-whisper receives the whole clip at once after a warm-up run to avoid slow first-load times. Response speed is defined differently for each: for Moonshine, the gap between when the last line was finalized and when that line's speech ended; for Whisper, the total processing time of a clip.

The accuracy metric is character error rate (CER), computed as the edit distance against a reference sentence divided by the number of reference characters, after stripping punctuation and whitespace and normalizing full-width and half-width characters. The author flags a caveat: if "三百二十八万五千円" is written as "328万5000円", the meaning is the same but CER rises, so number formatting should be aligned before measuring. The code also sets max_tokens_per_second to 13 for Japanese, versus a default of 6.5 — a value the developer documentation recommends for languages with high tokens-per-second counts. In the author's own measurements, 6.5 and 13 produced identical CER to three decimal places, so the change made no difference on those samples, but the author suggests following the documentation anyway.

Two practical snags are documented. Feeding 20 clips through a single Python process returned empty Moonshine results for three of them, while running the same audio alone worked correctly; the cause was not identified and per-clip processes avoided the problem. And Moonshine breaks lines at breaths and pauses, so spoken Japanese comes out as many short lines that need post-processing to reassemble into sentences. The author also notes that loading a non-English model displays a non-commercial license notice, while the official repository's LICENSE lists the current streaming models, including Japanese, as MIT — a discrepancy the author advises checking officially before commercial use.

FAQ
How fast was each model in the test?
Moonshine's response latency ranged from 0.18 to 0.30 seconds across the three test sets, while faster-whisper's small model ranged from 1.31 to 2.25 seconds. The two were measured differently: Moonshine on real-time audio streaming, Whisper on whole-clip processing.
How accurate were the two models on Japanese?
Moonshine's character error rate was 0.092 on synthetic speech, 0.110 on 20 FLEURS clips and 0.104 on the author's own voice. faster-whisper's small model scored 0.104, 0.155 and 0.106 on the same sets.
What snags did the developer hit?
Running 20 audio clips in one Python process produced empty Moonshine results in three cases, though processing each clip in a separate process fixed it. A licensing banner also appeared for non-English models, which the author says conflicts with the repository's LICENSE.
Qiita 機械学習Read Original Article

AI news that matters for your work, delivered every morning.

Pick your industry and the AI tools you use, and get news related to your work every day.

Free · 30 seconds with Google · unsubscribe anytimeWhat is AIToday? →

Ask AI

Ask AI anything about this article. The AI reads this article, earlier AIToday articles, and Wikipedia, and cites its sources. Q&As are published on this page for other readers too.

Questions and answers are published on this page.

Related Articles

Next articleBad Agent: rogue AI game lets five AI models play