hermes-agent/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current
Teknium bf8004e3a8 fix(stt): kill faster-whisper silence hallucinations at the source
Local faster-whisper called model.transcribe with bare {'beam_size': 5}:
no VAD, cross-window conditioning on, no confidence filtering. Pure
silence produced hallucinated tokens (E2E: 5s anullsrc WAV -> 'You',
no_speech_prob=0.705) and noisy clips could produce runs of junk, often
in other languages.

Three-layer class fix, one shared owner for every local-whisper call
site (build_local_transcribe_kwargs):

1. Silero VAD filter (bundled with faster-whisper) on by default —
   silence never reaches the model. stt.local.vad: false restores the
   raw behavior for music/ambient transcription.
   stt.local.vad_min_silence_ms tunes chunk splitting (default 500).
2. condition_on_previous_text=False — one hallucinated token can no
   longer seed a self-reinforcing run; negligible cost for
   voice-note-length audio.
3. Segment confidence gate (_join_confident_segments): drop a segment
   only when no_speech_prob > 0.6 AND avg_logprob < -1.0 (openai-whisper's
   own heuristic shape; both must hit so quiet-but-real speech survives).
   Config: stt.local.no_speech_prob_threshold / logprob_threshold.

The WHISPER_HALLUCINATIONS blocklist in voice_mode.py stays as
last-resort defense but should now almost never fire.

E2E (real faster-whisper 'base', CPU int8):
  silence.wav  before 'You'                        -> after ''
  noise.wav    before ''                           -> after ''
  speech.wav   before/after 'Hello World, this is a test of the
               transcription system.' (unchanged)

Docs (EN + zh-Hans), DEFAULT_CONFIG, cli-config.yaml.example updated;
19 unit tests (kwargs contract, off-switch, confidence gate incl.
quiet-speech survival, _transcribe_local wiring), sabotage-verified.
2026-07-29 00:01:33 -07:00
..
developer-guide feat: raise default tool-calling iteration limit from 90 to 500 2026-07-26 12:54:45 -07:00
getting-started fix(docs): target installer venv in voice extra install command 2026-07-28 11:57:37 -07:00
guides docs(portal): describe per-model routing accurately — not everything goes through OpenRouter 2026-07-26 18:02:13 -07:00
integrations docs(integrations): unified Buzz integration overview page 2026-07-28 22:44:49 -07:00
reference feat: raise default tool-calling iteration limit from 90 to 500 2026-07-26 12:54:45 -07:00
user-guide fix(stt): kill faster-whisper silence hallucinations at the source 2026-07-29 00:01:33 -07:00
index.mdx fix(docs): update all install instructions everywhere 2026-06-04 21:07:45 -04:00
user-stories.mdx docs(i18n): translate all docs into Simplified Chinese (zh-Hans) (#31942) 2026-05-25 01:47:38 -07:00