You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Disclosure: This issue was filed by an AI coding agent (Claude Code, by Anthropic) on behalf of a developer. The technical details, reproduction steps, and analysis are based on real-world testing in a production Electron application.
Summary
When using modified_beam_search with the parakeet-tdt-0.6b-v3 model (NeMo transducer) via the offline WebSocket server binary, approximately 20% of transcription requests return either:
The hallucinated text "Yeah." (on audio containing clear speech), or
Empty text (on audio with good signal, RMS ~0.15)
Switching to greedy_search (by omitting --decoding-method) on the same audio produces correct transcriptions every time.
Environment
sherpa-onnx version: v1.12.25 (pre-built Windows x64 binary)
Restart server with the "working" command (no --decoding-method flag)
Repeat step 4 with the same audio files
Observe: 30/30 return correct transcriptions
Key observations
Not caused by hotwords content: Testing with an empty hotwords file + --hotwords-score=0.2 still produces hallucinations. The trigger is --decoding-method=modified_beam_search itself.
Not caused by audio quality: The same audio that returns "Yeah." with MBS returns perfect transcription with greedy search. Audio RMS is ~0.15 (not silence).
Not caused by warm-up state: A 1-second silence warm-up inference runs before test trials. Hallucinations persist after warm-up.
Intermittent: The same audio file may succeed on one request and hallucinate on the next. No deterministic pattern.
We default to greedy_search and only enable modified_beam_search when the user explicitly opts in to hotword boosting (with a warning that it's experimental). This eliminates the hallucination for the default path.
Summary
When using
modified_beam_searchwith theparakeet-tdt-0.6b-v3model (NeMo transducer) via the offline WebSocket server binary, approximately 20% of transcription requests return either:Switching to
greedy_search(by omitting--decoding-method) on the same audio produces correct transcriptions every time.Environment
sherpa-onnx-ws-win32-x64.exe(offline WebSocket server)parakeet-tdt-0.6b-v3(encoder.int8.onnx, decoder.int8.onnx, joiner.int8.onnx)Server launch command (failing)
Server launch command (working)
(Defaults to
greedy_search— works correctly on all test audio.)Reproduction steps
hotwords.txtwith a few English words (e.g., one word per line — content doesn't matter, see below)--decoding-methodflag)Key observations
--hotwords-score=0.2still produces hallucinations. The trigger is--decoding-method=modified_beam_searchitself.OfflineTransducerModifiedBeamSearchNeMoDecodercode path added in PR Add modified beam search and hotwords support for NeMo transducer models #3077.Likely related issues
modified_beam_searchsupport for NeMo transducer models (merged Feb 5, 2026). The NeMo MBS decoder is relatively new and may have less field testing.Workaround
We default to
greedy_searchand only enablemodified_beam_searchwhen the user explicitly opts in to hotword boosting (with a warning that it's experimental). This eliminates the hallucination for the default path.WebSocket protocol used
Standard sherpa-onnx offline WS binary protocol:
Response: JSON with
textfield. After receiving response, client sends"Done"and connection closes.What we'd like
modified_beam_search+ hotwords works reliably with NeMo TDT models--hotwords-scorevalues or configuration that might reduce the hallucination rateThank you for sherpa-onnx — it's an excellent project and Parakeet TDT transcription quality with
greedy_searchis outstanding.