尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Open-source macOS voice dictation that keeps your words, with app-aware cleanup, a fidelity guardrail, published evals, and a voice interface for coding agents (Claude Code, Codex, Cursor).
翻译准备中
正在加载完整 README。
查看完整 README ↗Voice dictation for macOS that keeps your words, and a voice interface for coding agents.
Hold Right Shift, talk, let go: your speech is typed into whatever app has focus. Aloud looks at where you are dictating and cleans the text accordingly. It removes the "um"s, applies "no wait, Friday" corrections and fixes punctuation, but it doesn't rewrite what you said. A spoken question is typed, never answered. Add Right ⌘ to the chord and the sentence becomes a task for a local agent that works in folders you allow, asking before every step that changes something.
It's an open-source, local-first alternative to tools like Wispr Flow and Superwhisper, built for developers who spend their day talking to Claude Code, Codex and Cursor.
| You say, in… | Aloud types |
|---|---|
| Notes: "um so I was thinking that we should uh move the meeting to Thursday because no wait Friday works better" | So I was thinking that we should move the meeting to Friday, because Friday works better. |
| Notes: "grocery list eggs milk two loaves of bread and spinach" | Grocery list:- Eggs- Milk- Two loaves of bread- Spinach |
| Gmail: "hi Sarah just checking in on the contract let me know if you need anything thanks Shekhar" | Hi Sarah,Just checking in on the contract. Let me know if you need anything.Thanks,Shekhar |
| WhatsApp: "lol yeah that works for me see you at 5" | Lol, yeah, that works for me. See you at 5. |
| ChatGPT: "what's the difference between a process and a thread" | What's the difference between a process and a thread? (typed, not answered) |
| Claude Code: a request that asks for several things, no cue needed | Goal / Tasks / Context / Constraints / Done when, in your own sentences, file names in backticks |
| A shell prompt: "git checkout dash b fix slash auth" | git checkout -b fix/auth (typed, not run) |
Measured, not claimed. Every scenario is spoken into a real app, and the harness checks what reached the screen against what was said. Full numbers: BENCHMARKS.md · interactive page: slm-llm-research.github.io/aloud/results
| Before | After | |
|---|---|---|
| Real voice, 27 scenarios in Notes, Gmail, WhatsApp, Claude desktop, Claude Code (same transcripts, before vs after the fixes) | 85.2% passed | 92.6% passed |
| Synthetic voice, all 37 scenarios incl. background noise (text-to-speech → live speech-to-text → the app's cleanup) | 73.0% passed | 83.8% passed |
| Negations ("not", "don't") kept, real voice | 100.0% | 100.0% |
| Layout right for the app (lists, email lines, prompt sections), synthetic | 94.6% | 100.0% |
| Speech-to-text word error rate, real voice | 2.7% | 2.7% |
| Key release to text typed, median | 413 ms | 375 ms |
| Behavior evals, 198 held-out cases: does each app get the right change, and only when it should (prompt vs free speech, lists, self-corrections, chat tone, email, shell, misheard words) | 84% passed | 92% passed |
| Self-corrections applied (held-out) | 56% | 85% |
| Coding agents: Claude Code requests laid out, free speech left alone (held-out) | 82% | 100% |
Behavior evals: 660 labelled dictations (positives and hard negatives per app), split train / dev / held-out test; method, every breakdown and the tuning log in bench/results/BEHAVIOR.md.
By app, real voice, current code: Notes 100.0% · Gmail (Chrome) 100.0% · WhatsApp 75.0% · Claude Code (Terminal) 75.0% · Claude desktop 100.0%.
flowchart LR
K[Right Shift held] --> M[Mic, 16 kHz]
M --> S1[ElevenLabs Scribe v2<br>realtime, streaming]
M --> S2[Parakeet TDT 0.6B<br>on-device fallback]
S1 --> R{Mode router<br>app + spoken cue}
S2 --> R
R --> P[Rules: stutters,<br>fillers, hyphens]
P --> L[Groq gpt-oss-120b<br>then Claude Haiku]
L --> G{Fidelity guardrail}
G -- keeps your words --> T[Typed into the app]
G -- reworded / dropped a 'not' --> F[Rule-cleaned text]
F --> T
K2[Right Shift + Right ⌘] --> A[agentd: Claude agent<br>with per-step approvals]
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗