Repository navigation
Replies: 4 comments 1 reply
|
On question 2, I have a variant that replaces the path fields with a one-time download. It runs Whisper inside the client's own browser engine, so one implementation covers both web and desktop. It reuses
#14882 does much more (model catalog, dictionary, live previews), but it's about 18.6k lines. This is about 600 lines plus the lockfile, and it doesn't rule #14882 out later. The cost is one new dependency (
|
|
+1 for desktop. I'm on the macOS desktop app (0.1.6) and dictate most of my prompts. macOS system dictation works, but it means a keyboard shortcut and its own popup. A mic button in the composer, like the iPhone app's, would make it one click. On-device transcription as proposed here would suit me; I'd rather not send audio to another vendor. |
|
A Windows data point that might help question 2, as a zero-dependency first step. Windows already has OS-level dictation: voice typing (Win+H). It transcribes into whatever field has focus, in the language set under Settings → Time & language → Speech, with punctuation. In my fork, a mic button next to Attach focuses the composer and opens that panel through a small desktop bridge method (the main process presses Win+H via user32 Branch: |
|
Written and posted by Claude (Anthropic's AI assistant) on behalf of this account's owner, at their request. +1 from a Windows 11 desktop user. Since macOS desktop and iPhone already have a composer mic, the main gap is Windows and Linux parity. What I'd like:
The transcript goes into the draft for editing and is never sent automatically, same as on macOS. |
Uh oh!
There was an error while loading. Please reload this page.
Problem. Dictation exists on iPhone (Voice input on iPhone) and nowhere else. Desktop users keep asking (#7417, #10489, #12212, #17317). Two attempts were closed: #11278 and #18302. They used private vendor endpoints, bypassed environment selection, duplicated the controller, and had no prior approval. I'd like to agree on direction and scope before opening anything.
Proposed direction. Treat desktop like iOS: the client transcribes locally. No provider, account or environment is involved, so there is nothing to route.
VoiceInputSession, metering and presentation fromapps/mobileinto@t3tools/client-runtime/voice-input, so web and mobile share one session and one controller.MediaRecorderrecorder and a mic beside Attach (cancel / level meter + time / confirm). The transcript goes in at the captured selection, and send is blocked while dictating. The mic is hidden entirely when the client has no transcriber, as on Android today. No disabled placeholder.DesktopVoiceTranscriptionservice runs a whisper.cpp executable and ggml model named in desktop client settings (two path fields under Settings → Chat → Voice input). It works on a temp 16 kHz mono WAV that is deleted afterward. Nothing leaves the machine.Scope of a first PR. The above, plus docs and unit tests for the whisper output parser and WAV encoder. Excluded: a push-to-talk keybinding, live interim text, a bundled engine or model download, Android, and environment-backed transcription. I can split the client-runtime move into its own PR if you prefer.
Questions.
docs/internals/voice-input.mdnames that as the unimplemented alternative)?Status. I have a working build on Windows 10 (whisper.cpp b5454 CPU,
ggml-base.en). A 6.5 s recording lands at the caret about 4 s after confirm. Dictation was tried with a physical microphone. Cancel keeps the draft. A draft edited mid-recording inserts nothing. A silent recording reports "No speech was detected" instead of whisper's hallucinated "you".check:changedpasses. Screenshots and a short recording are ready for the PR. If the answer is "not now", that's fine; I'd rather hear it here than after a PR.The code and this write-up were produced with Claude (Fable 5.1 and Opus 5.5, via Claude Code).
All reactions