From 5130309a727ae060741eb61735ed166c983173bb Mon Sep 17 00:00:00 2001 From: ciregenz Date: Thu, 6 Aug 2026 00:02:52 -0700 Subject: [PATCH] [eric] voice: text-landed chime cut, haptics toggle, full-clip decode wins at stop, beam search 5; dock tile says Browsers --- backend/apps/settings/models.py | 1 + electron/voice/whisperService.js | 4 +++- .../Dashboard/desktop/DockActionTiles.tsx | 2 +- .../sections/general/DictationSettings.tsx | 16 +++++++++++-- frontend/src/shared/state/settingsSlice.ts | 2 ++ .../src/shared/voice/useVoiceDictation.ts | 24 +++++++++---------- frontend/src/shared/voice/voiceCueSounds.ts | 3 +-- frontend/src/shared/voice/voiceCues.ts | 14 +++++------ 8 files changed, 40 insertions(+), 26 deletions(-) diff --git a/backend/apps/settings/models.py b/backend/apps/settings/models.py index d313eb06..0e1fecbe 100644 --- a/backend/apps/settings/models.py +++ b/backend/apps/settings/models.py @@ -98,6 +98,7 @@ class AppSettings(BaseModel): # Personal glossary (comma-separated names/jargon) fed to whisper as a decode prompt so "Anthropic" never comes out "and Thropic". dictation_dictionary: str = "" dictation_sounds: bool = True + dictation_haptics: bool = True # 0..1; the cue loudness Eric tuned by ear rides here instead of a hardcode. dictation_sound_volume: float = 0.35 # Comma-separated hostnames (and app names) where dictation refuses to record while focused there. diff --git a/electron/voice/whisperService.js b/electron/voice/whisperService.js index c6a722bf..d43243da 100644 --- a/electron/voice/whisperService.js +++ b/electron/voice/whisperService.js @@ -153,7 +153,9 @@ async function p_bootServer(resourceDir, userDataDir) { p_sweepStrays(bin); const p = await freePort(); // No --convert: our WAV is already 16kHz mono, and the flag makes whisper demand ffmpeg on PATH at boot; a Finder-launched app has no brew PATH, so it exited before ever binding the port. - const args = ['-m', model, '--port', String(p), '-nt']; + // Beam search (5) over greedy: measurably fewer recognition errors at ~1.5x decode cost; Eric + // rates accuracy above stop-latency. + const args = ['-m', model, '--port', String(p), '-nt', '-bs', '5']; // A multilingual model (no .en in the filename) auto-detects the spoken language per utterance. if (!path.basename(model).includes('.en')) args.push('-l', 'auto'); const child = spawn(bin, args, { diff --git a/frontend/src/app/pages/Dashboard/desktop/DockActionTiles.tsx b/frontend/src/app/pages/Dashboard/desktop/DockActionTiles.tsx index d1362768..a2a0e73d 100644 --- a/frontend/src/app/pages/Dashboard/desktop/DockActionTiles.tsx +++ b/frontend/src/app/pages/Dashboard/desktop/DockActionTiles.tsx @@ -20,7 +20,7 @@ interface DockActionTilesProps { function DockActionTiles({ tile, onAddBrowser, onApplications, onHoverAway }: DockActionTilesProps): React.ReactElement { const dispatch = useAppDispatch(); const actions: { label: string; Icon: typeof Globe; act: () => void; divider?: boolean }[] = [ - { label: 'New browser', Icon: Globe, act: onAddBrowser }, + { label: 'Browsers', Icon: Globe, act: onAddBrowser }, { label: 'Workflows', Icon: CalendarClock, act: () => dispatch(openWorkflowsApp()) }, { label: 'Marketplace', Icon: Store, act: () => openMarketplace() }, { label: 'Settings', Icon: Settings, act: () => dispatch(openSettingsCard()), divider: true }, diff --git a/frontend/src/app/pages/Settings/sections/general/DictationSettings.tsx b/frontend/src/app/pages/Settings/sections/general/DictationSettings.tsx index b8470dfe..eac1fa51 100644 --- a/frontend/src/app/pages/Settings/sections/general/DictationSettings.tsx +++ b/frontend/src/app/pages/Settings/sections/general/DictationSettings.tsx @@ -84,10 +84,10 @@ const DictationSettings: React.FC<{ /> - + Sounds - The start, stop, and text-landed cues, and how loud they play. + The start and stop cues, and how loud they play. + + + Haptics + Trackpad taps when dictation starts and stops. + + setForm({ ...form, dictation_haptics: e.target.checked })} + /> + + Off for sites diff --git a/frontend/src/shared/state/settingsSlice.ts b/frontend/src/shared/state/settingsSlice.ts index bffbd9cd..9ad2413b 100644 --- a/frontend/src/shared/state/settingsSlice.ts +++ b/frontend/src/shared/state/settingsSlice.ts @@ -34,6 +34,7 @@ export interface AppSettings { dictation_model?: string | null; dictation_dictionary?: string; dictation_sounds?: boolean; + dictation_haptics?: boolean; dictation_sound_volume?: number; dictation_disabled_surfaces?: string; anthropic_api_key: string | null; @@ -169,6 +170,7 @@ export const DEFAULT_SETTINGS: AppSettings = { dictation_model: null, dictation_dictionary: '', dictation_sounds: true, + dictation_haptics: true, dictation_sound_volume: 0.35, dictation_disabled_surfaces: '', anthropic_api_key: null, diff --git a/frontend/src/shared/voice/useVoiceDictation.ts b/frontend/src/shared/voice/useVoiceDictation.ts index 5c309926..7d0832eb 100644 --- a/frontend/src/shared/voice/useVoiceDictation.ts +++ b/frontend/src/shared/voice/useVoiceDictation.ts @@ -199,7 +199,7 @@ export function useVoiceDictation() { recRef.current = { ctx, stream, node: capture.node, requestFlush: capture.requestFlush, source, chunks, streaming }; setState('recording'); playVoiceCue('start'); - void (window.openswarm as { haptic?: (p: string) => Promise } | undefined)?.haptic?.('generic'); + if (store.getState().settings.data.dictation_haptics ?? true) void (window.openswarm as { haptic?: (p: string) => Promise } | undefined)?.haptic?.('generic'); } catch (err) { // Release whatever was acquired before the failure, or the OS mic indicator stays lit forever on a half-started session. try { stream?.getTracks().forEach((t) => t.stop()); } catch { /* already dead */ } @@ -220,7 +220,7 @@ export function useVoiceDictation() { if (rec) await rec.requestFlush(); const samples = teardown(); playVoiceCue('stop'); - void (window.openswarm as { haptic?: (p: string) => Promise } | undefined)?.haptic?.('alignment'); + if (store.getState().settings.data.dictation_haptics ?? true) void (window.openswarm as { haptic?: (p: string) => Promise } | undefined)?.haptic?.('alignment'); setState('transcribing'); try { if (!samples || samples.length < VOICE_SAMPLE_RATE * 0.2) { // < 0.2s = a misfire @@ -229,14 +229,16 @@ export function useVoiceDictation() { setState('idle'); return; } - // The streamed assembly (each phrase decoded once at its boundary) is the fast path: stop only - // pays for the final open phrase. Any doubt (degraded, empty) falls back to one full-clip decode. - let res: { ok: boolean; text?: string; error?: string } | undefined; + // Accuracy first (Eric's call): phrases decoded in isolation lose whisper's cross-phrase + // context, which read as "sometimes fine, sometimes off". The FULL clip is always decoded at + // stop and wins; the streamed assembly only stands in if the batch decode fails outright. + let streamedFallback: string | null = null; if (streaming) { const sres = await window.openswarm?.voiceStreamStop?.(); - if (sres?.ok && sres.text && !sres.degraded) res = { ok: true, text: sres.text }; + if (sres?.ok && sres.text) streamedFallback = sres.text; } - if (!res) { + let res: { ok: boolean; text?: string; error?: string } | undefined; + { // Whisper hallucinates plausible punctuation on near-silence; a clip whose level never beat the streaming RMS gate gets "didn't catch that", never a decode. let sumSq = 0; for (let i = 0; i < samples.length; i += 4) sumSq += samples[i] * samples[i]; @@ -246,6 +248,7 @@ export function useVoiceDictation() { } else { const wav = encodeWav(samples); res = await window.openswarm?.voiceTranscribe?.(wav); + if ((!res || !res.ok || !res.text) && streamedFallback) res = { ok: true, text: streamedFallback }; } } // Whisper captions non-speech in brackets/parens ("[ Background sounds ]", "(laughs)") and marks speaker turns with ">>"; those are annotations, not dictation. @@ -275,12 +278,9 @@ export function useVoiceDictation() { const target = injectAtFocus(text); pushDictation(text, target || 'clipboard'); learnFromTranscript(text); - if (target) { - playVoiceCue('paste'); - } else { + if (!target) { const inj = await window.openswarm?.voiceInject?.(text); - if (inj?.pasted) playVoiceCue('paste'); - else setFeedback({ tone: 'ok', icon: 'clipboard', text: `${text} (copied, press Cmd+V)`, at: Date.now() }); + if (!inj?.pasted) setFeedback({ tone: 'ok', icon: 'clipboard', text: `${text} (copied, press Cmd+V)`, at: Date.now() }); } setState('idle'); } else if (res?.ok && !res.text) { diff --git a/frontend/src/shared/voice/voiceCueSounds.ts b/frontend/src/shared/voice/voiceCueSounds.ts index 49b42df3..89c3f566 100644 --- a/frontend/src/shared/voice/voiceCueSounds.ts +++ b/frontend/src/shared/voice/voiceCueSounds.ts @@ -1,8 +1,7 @@ // Google Material product sounds (CC BY 4.0, https://m2.material.io/design/sound/sound-resources.html): // navigation_forward-selection-minimal (start), navigation_backward-selection-minimal (stop), -// navigation_selection-complete-celebration (text landed), ui_lock (hands-free latch). +// and ui_lock (hands-free latch). // Embedded as data URIs so the packaged file:// + asar build needs no asset paths and no webpack rule. export const VOICE_CUE_START = 'data:audio/ogg;base64,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'; export const VOICE_CUE_STOP = 'data:audio/ogg;base64,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'; -export const VOICE_CUE_PASTE = 'data:audio/ogg;base64,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'; export const VOICE_CUE_LOCK = 'data:audio/ogg;base64,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'; diff --git a/frontend/src/shared/voice/voiceCues.ts b/frontend/src/shared/voice/voiceCues.ts index 76b233d3..6301a770 100644 --- a/frontend/src/shared/voice/voiceCues.ts +++ b/frontend/src/shared/voice/voiceCues.ts @@ -1,12 +1,11 @@ -import { VOICE_CUE_START, VOICE_CUE_STOP, VOICE_CUE_PASTE, VOICE_CUE_LOCK } from './voiceCueSounds'; +import { VOICE_CUE_START, VOICE_CUE_STOP, VOICE_CUE_LOCK } from './voiceCueSounds'; // Eric picked these from Google's Material product sound set after a bake-off against Wispr Flow's // real cues; the synth versions never survived an ear test. Files are embedded data URIs (see -// voiceCueSounds.ts), pre-instantiated so playback is instant on the press. The grammar mirrors -// Wispr's three-beat: tap in, tap out, and a rising completion the moment the text actually lands; -// lock marks a hands-free latch. +// voiceCueSounds.ts), pre-instantiated so playback is instant on the press. Start and stop taps plus the +// hands-free lock mark; Eric explicitly cut the text-landed chime. -type CueKind = 'start' | 'stop' | 'paste' | 'lock'; +type CueKind = 'start' | 'stop' | 'lock'; // Pushed from Settings (dictation_sounds / dictation_sound_volume); defaults match the shipped feel. let cueEnabled = true; @@ -17,14 +16,13 @@ export function configureVoiceCues(enabled: boolean, volume: number): void { cueVolume = Math.min(1, Math.max(0, volume)); for (const kind of Object.keys(p_players) as CueKind[]) { const a = p_players[kind]; - if (a) a.volume = kind === 'paste' ? cueVolume * 0.8 : cueVolume; + if (a) a.volume = cueVolume; } } const SOURCES: Record = { start: VOICE_CUE_START, stop: VOICE_CUE_STOP, - paste: VOICE_CUE_PASTE, lock: VOICE_CUE_LOCK, }; @@ -34,7 +32,7 @@ function player(kind: CueKind): HTMLAudioElement { let a = p_players[kind]; if (!a) { a = new Audio(SOURCES[kind]); - a.volume = kind === 'paste' ? cueVolume * 0.8 : cueVolume; + a.volume = cueVolume; p_players[kind] = a; } return a;