claude-code - 💡(How to fix) Fix Voice dictation: user-configurable vocabulary hints for custom terms

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Claude Code's /voice dictation auto-hints the STT engine with the project name and current git branch — useful, but limited. There is no way to supply additional project-specific vocabulary (tool names, internal terminology, technical jargon), so words like ac-django, claim-next, or domain-specific identifiers get mis-transcribed every time.

Root Cause

  • macOS system-level dictation custom words — does not help because Claude Code streams audio directly to Anthropic's STT, bypassing the OS dictation pipeline.
  • Manual post-edit — the friction defeats the purpose of voice input.
  • A hook that runs a substitution pass on transcribed text — possible workaround, but lossy (only catches exact mis-transcriptions you've seen before) and not currently wired (no post-voice hook event exists).

Fix Action

Fix / Workaround

  • macOS system-level dictation custom words — does not help because Claude Code streams audio directly to Anthropic's STT, bypassing the OS dictation pipeline.
  • Manual post-edit — the friction defeats the purpose of voice input.
  • A hook that runs a substitution pass on transcribed text — possible workaround, but lossy (only catches exact mis-transcriptions you've seen before) and not currently wired (no post-voice hook event exists).

Code Example

{
  "voice": {
    "language": "en",
    "vocabulary": ["teatree", "ac-django", "ac-python", "claim-next", "companion-skills"]
  }
}
RAW_BUFFERClick to expand / collapse

Summary

Claude Code's /voice dictation auto-hints the STT engine with the project name and current git branch — useful, but limited. There is no way to supply additional project-specific vocabulary (tool names, internal terminology, technical jargon), so words like ac-django, claim-next, or domain-specific identifiers get mis-transcribed every time.

Use case

When dictating chat messages and Slack DMs into Claude Code while driving an autonomous agent workflow, project vocabulary appears constantly. Examples of recurring mis-transcriptions:

  • teatree → "t three", "tea tree"
  • ac-django → "AC Django", "ac jungle"
  • ac-python → "AC Python"
  • companion skills → "companion's skills"
  • claim-next → "claim next"

Every mis-transcription either silently corrupts the message or forces the user to re-dictate. The auto-hint (project name + branch) helps for the project's own identifiers, but doesn't cover skills, tool names, custom CLI subcommands, or internal vocabulary.

Proposed feature

A voice.vocabulary array in ~/.claude/settings.json:

{
  "voice": {
    "language": "en",
    "vocabulary": ["teatree", "ac-django", "ac-python", "claim-next", "companion-skills"]
  }
}

The harness forwards this list to the STT service as additional hint terms, alongside the existing automatic project/branch hints.

Optional refinements:

  • Per-project vocabulary file (e.g. .claude/voice-vocabulary.txt, one term per line) so vocab lists can live with the project they belong to.
  • Phrase support (multi-word terms), not just single words.

Why a user-supplied list is the right shape

The existing automatic hint (project name + branch) is one specific case of a more general pattern: "here are the project's own identifiers, prefer them over phonetic alternatives." Extending this to a user-supplied list lets each project carry its own jargon without each user re-discovering the same mis-transcriptions.

Alternatives considered

  • macOS system-level dictation custom words — does not help because Claude Code streams audio directly to Anthropic's STT, bypassing the OS dictation pipeline.
  • Manual post-edit — the friction defeats the purpose of voice input.
  • A hook that runs a substitution pass on transcribed text — possible workaround, but lossy (only catches exact mis-transcriptions you've seen before) and not currently wired (no post-voice hook event exists).

Acceptance

  • A voice.vocabulary array in ~/.claude/settings.json whose contents are forwarded as hints to the STT engine on every /voice invocation, alongside the existing automatic project/branch hints.
  • Documented in the Claude Code docs section that currently mentions the automatic hint behaviour.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING