Skip to content

ADR-v2-001 — Confidence Ink & Voice Re-pick

Status: Accepted (2026-07-02) · Wave A Context links: [[adr-v2-000-interaction-layer]], [[adr-011]] (offline), overlay work

Context

faster-whisper computes per-token log-probabilities and (with beam search) n-best alternatives, but YazSes — like Dragon/Talon/Apple Dictation — discards them. The ambient research (internal) notes that ASR token probabilities are a calibrated uncertainty source, unlike LLM verbalized confidence which is systematically miscalibrated. Homophone/near-miss correction today forces a full re-dictation.

Decision

Surface confidence and enable voice re-pick: 1. Capture per-token avg_logprob/token probabilities from the decode (already available in stt/faster_whisper.py). Map to a normalized confidence per word span. 2. Confidence Ink (display): words below a configurable threshold get a subtle, dismissible marker via the existing overlay (opt-in; off by default). No change to the injected text itself unless the user acts. 3. Voice re-pick (correction): a command ("the other one", "spell it T-H-E-I-R") re-picks the flagged span from the beam alternatives, or accepts a spelled replacement, without re-dictating the whole burst. Falls back to spell-out when beam diversity is insufficient.

Config: [confidence] enabled=false, threshold=<float>, mark_in_overlay=true. Pure post-processing over decode output; new module postprocess/confidence.py.

Consequences

  • + Fixes the most common dictation error (homophones) fast; honest, grounded uncertainty.
  • + Cheap: reuses decode outputs + overlay + command grammar; no new model.
  • Confidence is an imperfect error proxy → validate flagged-word/error correlation on the corpus before relying on it; keep markers subtle and off by default.
  • Whisper beam alternatives have limited diversity → spell-out fallback is mandatory.