mrkeyoor.com_
Tue 01 Sept 17:44 UTC
AI Toolsevaluationupdated 26 Aug 2026

hayamimi review

Hayamimi is an offline, CPU-only speech-to-text application for live multilingual subtitles. It routes each utterance to a language-specific ONNX model, then can add a browser dashboard, OBS overlay, speaker labels, transcript refinement, and Japanese translation without sending audio to a cloud API.

+138stars / 7d
Verdict

Our Hayamimi run installed in 45 seconds and all 23 tests passed, an unusually clean result for a 73-file speech project. It is a good trial for Japanese-first live captions on an ordinary CPU, especially when cloud audio processing is unacceptable. Keep it out of overlapping-speaker, mixed-language sentences and number-sensitive translation work until its stated limits and young cross-platform support improve.

We ran it

Lab card: what happened when we ran hayamimiScreenshot of hayamimi (github.com/oboroge0/hayamimi)
Install✓ · 45s88 packages · 925 MB
Build✓ · 4s
Tests✓ · 6s23 passed · 0 failed of 23 (pytest)
Known vulns0(pip-audit)
Repo73 files~7,187 lines of source · 1.9 MB · 1 CI workflows · tests dir

Answers from our run

Does hayamimi build from source?

Dependencies installed in 45 seconds (88 packages), and the build succeeded in 4 seconds. We cloned commit 0e383d8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do hayamimi's tests pass?

Yes: 23 of 23 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does hayamimi have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use hayamimi?

Conversations that switch languages within one sentence: the README says one route is chosen per utterance and minority-language words may be mangled or dropped.

What are the alternatives to hayamimi?

Whisper, faster-whisper, Mojicast. Our Hayamimi run installed in 45 seconds and all 23 tests passed, an unusually clean result for a 73-file speech project.

Setup4/5Clean install and tests; ffmpeg and model downloads remain
Docs5/5Clear CLI, architecture, measurements, licenses, and limits
Community2/5Fresh responses and releases, but a very small user base
Maturity2/5Promising v0.1.1 release with platform and routing gaps

Who it’s for

Streamers and event operators who need local captions in OBS without a GPU.
Japanese-first multilingual meetings where speakers alternate complete utterances between supported languages.
Developers who want an inspectable Python pipeline built on sherpa-onnx rather than a hosted transcription service.
Privacy-sensitive users prepared to download and store several speech and translation models locally.

Who it’s NOT for

Conversations that switch languages within one sentence: the README says one route is chosen per utterance and minority-language words may be mangled or dropped.
Meetings with overlapping speakers that require diarization: --speakers labels turn-taking segments and assigns simultaneous speech to one speaker.
Financial or numeric translation workflows: the README says Japanese-to-Chinese and Japanese-to-Korean translation does not preserve numbers reliably.
Japanese users relying on hotword bias for proper nouns: issue 1 reports every hotword failing to encode with the current ReazonSpeech model while the command still exits successfully.
Teams requiring proven cross-platform capture behavior: development targets Windows 11, while the README says macOS and Linux are expected to work but lack end-to-end CI testing.

Setup reality

Our run at commit 0e383d8 installed 88 Python packages in 45 seconds and used 925 MB. The build passed in 4 seconds, then all 23 pytest tests passed in 6 seconds. Pip audit found 0 known vulnerabilities.

Useful operation still needs ffmpeg and separately downloaded model weights. The full language catalog is much larger than the measured Python environment; a minimal downloader option keeps only the Japanese and English path. Translation and speaker labeling bring additional models, while the local dashboard needs an available port.

The project was developed and tested on Windows 11. macOS and Linux use the same Python entry point, but the README says their end-to-end microphone path is not yet covered by CI. CPU and memory needs change as language models enter and leave the LRU cache.

Hayamimi routes each utterance to a specialist model

Hayamimi's central choice is to avoid one general speech model. It detects the language of an utterance, then sends Japanese, Chinese, Korean, Cantonese, English and selected European languages to different ONNX recognizers. Other languages fall back to an omnilingual model. Voice activity detection decides where speech starts and ends, while partial text updates before the final segment arrives. The whole pipeline runs through sherpa-onnx on a CPU.

This design can beat a one-model compromise for the languages its routes handle well, but language identification becomes part of correctness. Our checkout contained 73 files and about 7,187 source lines, small enough to inspect without wading through a framework monorepo. Release v0.1.1 changed language switching so a new language needs two consecutive agreeing detections. That reduces single bad guesses while making a one-segment foreign phrase less likely to switch routes.

The subtitle output is ready for a browser source

Running with --serve exposes a dashboard, a minimal OBS overlay, and a plain transcript view. The dashboard shows partial speech, final lines, language labels, speaker labels, translation, and later refined text. A file mode can replay a 16 kHz mono WAV without real-time sleeps, which is useful for testing before putting a microphone and live audience in the loop. Final transcripts can also be appended to a file.

The Python environment we measured used 925 MB before separate model downloads. Model weights are lazy-loaded, and an LRU limit evicts non-Japanese routes to keep resident memory bounded as languages change. That is sensible for CPU machines, though the first utterance in a new language may pay a model-loading cost. Operators should preload the languages used in an event and test the same microphone, room, and input device before going live.

What happened when we ran it

We cloned commit 0e383d8 into an unprivileged Python 3.12 Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The 1.9 MB checkout held 73 files and roughly 7,187 source lines. It had one CI workflow file, a tests directory, and no root Dockerfile. Our harness evaluated package installation, the project build, automated tests, and Python dependency advisories.

Installation succeeded in 45 seconds. It added 88 packages and occupied 925 MB. The build completed in 4 seconds. Pytest then finished in 6 seconds with all 23 tests passing and none failing. Pip audit reported 0 known vulnerabilities in the installed dependency set. The run was clean across every stage our harness measured.

Those results cover source health and unit behavior, not speech accuracy or microphone capture. Our sandbox did not download the speech catalog, listen to audio, measure latency, or compare transcripts. The README contains the project's own scorecards and reproduction scripts, which are useful evidence from the author but remain separate from our run. A local acceptance set should include the user's actual languages, speakers, proper nouns, noise, and code-switching habits.

One-language-per-utterance is the hard boundary

Hayamimi can switch routes between complete utterances. It does not support words from two languages inside the same utterance. The README says the minority language may be damaged or dropped, which is common in Japanese conversations that insert English product names. A replacement dictionary can repair known output after decoding, but it cannot restore arbitrary speech that the wrong model never recognized.

Issue 2 also corrects an important control misunderstanding. The documented --lang-switch-guard does not decide when the session changes languages in the implementation examined by the reporter. A separate confirmation count does that, and the issue says it is not exposed through the CLI. In the reported 10-minute Japanese file, 4 of 85 finals routed to Chinese despite a large guard value. Pin one language where the event does not need switching.

Speaker labels and translation have narrow meanings

The --speakers option embeds each finalized voice segment and assigns a nearby speaker label. This works for turn-taking. It is not full diarization and cannot separate two people talking simultaneously. Panels with interruptions, open microphones, or cross-talk need a real recording trial. A plausible-looking S1 or S2 label should not be treated as verified identity.

Translation is limited to Japanese lines going to English, Chinese, or Korean. The README warns about repetition and unreliable number preservation in the Chinese and Korean paths. That rules out price quotes, measurements, and financial captions without human review. Our 23 passing tests do not change that product limit. The English translation model also carries CC BY-SA 4.0 terms for redistributed weights, separate from Hayamimi's MIT-licensed source.

The project is candid and still very young

Release v0.1.1 was published on August 25, 2026, and GitHub recorded another push on August 26. The repository had 4 open issues and pull requests combined. Its release notes publish rejected experiments as well as improvements, including a denoiser that hurt the author's noisy-audio evaluation. That kind of disclosure is useful because speech quality varies with conditions and a tidy demo cannot settle the deployment decision.

Youth remains the largest concern. The project describes Windows 11 as its developed and tested platform, with macOS and Linux expected to work but lacking end-to-end CI coverage. Issue 1 reports Japanese hotwords silently doing nothing with the current tokenization setup. Hayamimi deserves a small local trial, not immediate trust at an event. Its compact codebase and clean 23-test result make that trial easier to justify.

Alternatives

ProjectWhat it isPick it when
WhisperA general multilingual speech-recognition model and reference implementation from OpenAI.pick this instead when one widely used multilingual model is easier to operate than Hayamimi's language router.
faster-whisperA CTranslate2 implementation of Whisper aimed at lower memory use and faster local transcription.pick this instead when Whisper compatibility and batch or streaming integrations matter more than specialist language routes.
MojicastAn offline real-time captioning application that inspired parts of Hayamimi's pipeline.pick this instead when its Japanese captioning application and existing interface fit without Hayamimi's multilingual routing.

What people are saying

  1. [velocity-scout] oboroge0/hayamimi

Sources

  1. Hayamimi repository and README
  2. Hayamimi v0.1.1 release
  3. Issue 1 on Japanese hotwords
  4. Issue 2 on language switch behavior
  5. Hayamimi third-party model notices

More ai tools reviews

claudian · SkillSpector · robin · mjlab · MoGe · awesome-design-md · the whole board →