From 2d20709de5ece9a879a186c12a9267920eafcff9 Mon Sep 17 00:00:00 2001 From: screen <228304862+screen-gd@users.noreply.github.com> Date: Wed, 11 Nov 2026 13:43:33 +0400 Subject: [PATCH] feat(voice): add an optional sound cue before dictation starts Plays one of Hex's start sounds when recording is about to begin, off by default, on web and desktop. The controller waits for the cue to finish before capture starts so the sound stays out of the recording and live stream. Co-Authored-By: Claude Opus 5.5 --- apps/web/src/assets/speech-cues/LICENSE | 21 +++++++ apps/web/src/assets/speech-cues/analog.wav | Bin 0 -> 11180 bytes apps/web/src/assets/speech-cues/classic.wav | Bin 0 -> 48020 bytes apps/web/src/assets/speech-cues/click.wav | Bin 0 -> 9418 bytes apps/web/src/assets/speech-cues/signature.wav | Bin 0 -> 11180 bytes apps/web/src/assets/speech-cues/soft.wav | Bin 0 -> 11084 bytes apps/web/src/assets/speech-cues/thock.wav | Bin 0 -> 10796 bytes apps/web/src/assets/speech-cues/wood.wav | Bin 0 -> 11180 bytes .../settings/VoiceSettingsPanel.tsx | 45 +++++++++++++++ .../src/components/settings/settingsSearch.ts | 8 +++ apps/web/src/speech/recordingCue.ts | 54 ++++++++++++++++++ .../src/speech/useEnvironmentSpeechInput.ts | 8 +++ docs/user/voice-input.md | 4 ++ .../src/voice-input/controller.test.ts | 7 ++- .../src/voice-input/controller.ts | 4 ++ packages/contracts/src/settings.test.ts | 9 +++ packages/contracts/src/settings.ts | 17 ++++++ third-party-licenses.config.json | 7 +++ 18 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 apps/web/src/assets/speech-cues/LICENSE create mode 100644 apps/web/src/assets/speech-cues/analog.wav create mode 100644 apps/web/src/assets/speech-cues/classic.wav create mode 100644 apps/web/src/assets/speech-cues/click.wav create mode 100644 apps/web/src/assets/speech-cues/signature.wav create mode 100644 apps/web/src/assets/speech-cues/soft.wav create mode 100644 apps/web/src/assets/speech-cues/thock.wav create mode 100644 apps/web/src/assets/speech-cues/wood.wav create mode 100644 apps/web/src/speech/recordingCue.ts diff --git a/apps/web/src/assets/speech-cues/LICENSE b/apps/web/src/assets/speech-cues/LICENSE new file mode 100644 index 0000000000000..b61895483bc2e --- /dev/null +++ b/apps/web/src/assets/speech-cues/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Christopher Langton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/web/src/assets/speech-cues/analog.wav b/apps/web/src/assets/speech-cues/analog.wav new file mode 100644 index 0000000000000000000000000000000000000000..52fa7585a63f770c16e5f54f4165cb7d3bd7573e GIT binary patch literal 11180 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 literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/speech-cues/classic.wav b/apps/web/src/assets/speech-cues/classic.wav new file mode 100644 index 0000000000000000000000000000000000000000..d541d9899c8b6d30c894900cb6e6be2e5fcbc25f GIT binary patch literal 48020 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

H)iRMGZI^ydIoL%$s3U1zdzLiTTMUHfK!2yv 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 literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/speech-cues/soft.wav b/apps/web/src/assets/speech-cues/soft.wav new file mode 100644 index 0000000000000000000000000000000000000000..0e78ef119819e4b1e3796057dd63b2e05aa520d6 GIT binary patch literal 11084 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 GzWyIqi3Ohk literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/speech-cues/thock.wav b/apps/web/src/assets/speech-cues/thock.wav new file mode 100644 index 0000000000000000000000000000000000000000..fb6de136cca561f17ab6e4105e3c4f3906625f39 GIT binary patch literal 10796 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 E140FwPyhe` literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/speech-cues/wood.wav b/apps/web/src/assets/speech-cues/wood.wav new file mode 100644 index 0000000000000000000000000000000000000000..e1fa911e2728e4e67a45e9813223afefb8910d4c GIT binary patch literal 11180 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 H|F{1GJY#}f literal 0 HcmV?d00001 diff --git a/apps/web/src/components/settings/VoiceSettingsPanel.tsx b/apps/web/src/components/settings/VoiceSettingsPanel.tsx index ad4977e62dec4..c771f23658bfa 100644 --- a/apps/web/src/components/settings/VoiceSettingsPanel.tsx +++ b/apps/web/src/components/settings/VoiceSettingsPanel.tsx @@ -26,6 +26,7 @@ import { type SpeechBenchmarkTier, type SpeechCustomWords, type SpeechModelUnloadTimeout, + SpeechRecordingCueSound, type VoiceShortcutMode, } from "@t3tools/contracts"; import { createModelSelection } from "@t3tools/shared/model"; @@ -57,6 +58,7 @@ import { chooseTranscriptCleanup, useCleanupGrant, } from "../../speech/voiceConsent"; +import { playRecordingCue, RECORDING_CUE_SOUNDS } from "../../speech/recordingCue"; import { updateClientSettings, useClientSettings } from "../../hooks/useSettings"; import { runEnvironmentSpeech } from "../../speech/runEnvironmentSpeech"; import { @@ -1357,6 +1359,49 @@ export function VoiceSettingsPanel() { } /> + + + { + if (checked) void playRecordingCue(settings.speechRecordingCueSound); + void updateClientSettings({ speechRecordingCue: checked }); + }} + /> + + } + /> diff --git a/apps/web/src/components/settings/settingsSearch.ts b/apps/web/src/components/settings/settingsSearch.ts index 953acb63117b6..ae4c47976536c 100644 --- a/apps/web/src/components/settings/settingsSearch.ts +++ b/apps/web/src/components/settings/settingsSearch.ts @@ -617,6 +617,14 @@ export const SETTINGS_SEARCH_ITEMS = [ to: "/settings/voice", searchTerms: ["speech voice keyboard hotkey hold toggle auto"], }, + { + id: "speech-recording-cue", + title: "Sound cue", + to: "/settings/voice", + searchTerms: [ + "speech voice dictation stt recording start audio feedback beep click chime tone classic signature soft wood warm synth thock", + ], + }, { id: "speech-language", title: "Transcription language", diff --git a/apps/web/src/speech/recordingCue.ts b/apps/web/src/speech/recordingCue.ts new file mode 100644 index 0000000000000..5ffc87ecebf77 --- /dev/null +++ b/apps/web/src/speech/recordingCue.ts @@ -0,0 +1,54 @@ +import type { SpeechRecordingCueSound } from "@t3tools/contracts"; + +import analogUrl from "../assets/speech-cues/analog.wav?url"; +import classicUrl from "../assets/speech-cues/classic.wav?url"; +import clickUrl from "../assets/speech-cues/click.wav?url"; +import signatureUrl from "../assets/speech-cues/signature.wav?url"; +import softUrl from "../assets/speech-cues/soft.wav?url"; +import thockUrl from "../assets/speech-cues/thock.wav?url"; +import woodUrl from "../assets/speech-cues/wood.wav?url"; + +// The start sounds from https://github.com/anomalyco/hex, unmodified. See speech-cues/LICENSE. +export const RECORDING_CUE_SOUNDS = { + classic: { label: "Classic", url: classicUrl }, + signature: { label: "Signature", url: signatureUrl }, + click: { label: "Click", url: clickUrl }, + soft: { label: "Soft tone", url: softUrl }, + wood: { label: "Wood", url: woodUrl }, + analog: { label: "Warm synth", url: analogUrl }, + thock: { label: "Thock", url: thockUrl }, +} as const satisfies Record; + +const cueElements = new Map(); + +function cueElement(sound: SpeechRecordingCueSound): HTMLAudioElement { + const existing = cueElements.get(sound); + if (existing) return existing; + const created = new Audio(RECORDING_CUE_SOUNDS[sound].url); + cueElements.set(sound, created); + return created; +} + +/** Loads a cue ahead of time so it can play the moment recording begins. */ +export function preloadRecordingCue(sound: SpeechRecordingCueSound): void { + cueElement(sound); +} + +// Longer than every cue, so a stalled or blocked element cannot hold back recording. +const CUE_WAIT_LIMIT_MS = 1_000; + +/** Plays the sound that tells the user dictation is listening; resolves once it has finished. */ +export function playRecordingCue(sound: SpeechRecordingCueSound): Promise { + const audio = cueElement(sound); + audio.currentTime = 0; + return new Promise((resolve) => { + const finish = () => { + clearTimeout(limit); + audio.removeEventListener("ended", finish); + resolve(); + }; + const limit = setTimeout(finish, CUE_WAIT_LIMIT_MS); + audio.addEventListener("ended", finish); + audio.play().catch(finish); + }); +} diff --git a/apps/web/src/speech/useEnvironmentSpeechInput.ts b/apps/web/src/speech/useEnvironmentSpeechInput.ts index 41fefeca96d95..7761c833f6476 100644 --- a/apps/web/src/speech/useEnvironmentSpeechInput.ts +++ b/apps/web/src/speech/useEnvironmentSpeechInput.ts @@ -41,6 +41,7 @@ import { createBrowserVoiceInputPlatform } from "./browserVoiceInput"; import { preferredSpeechLanguages } from "./preferredSpeechLanguages"; import { runEnvironmentSpeech } from "./runEnvironmentSpeech"; import { bindAudioGrant, readCleanupGrant, useAudioChoice } from "./voiceConsent"; +import { playRecordingCue, preloadRecordingCue } from "./recordingCue"; const INITIAL_STATE: VoiceInputState = { phase: "idle", error: null, errorAction: null }; const WAITING_STATE: VoiceInputState = { phase: "preparing", error: null, errorAction: null }; @@ -378,6 +379,10 @@ export function useEnvironmentSpeechInput(input: HookInput) { configureRecording: async () => undefined, releaseRecording: async () => platform.cancelRecording(), deleteRecording: platform.deleteRecording, + beforeRecord: async () => { + const { speechRecordingCue, speechRecordingCueSound } = latestRef.current.clientSettings; + if (speechRecordingCue) await playRecordingCue(speechRecordingCueSound); + }, postProcess, onPostProcessingError: () => toastManager.add({ @@ -394,6 +399,9 @@ export function useEnvironmentSpeechInput(input: HookInput) { onStateChange: (value) => { if (disposed) return; if (value.phase === "error") pendingSubmissionRef.current = null; + const { speechRecordingCue, speechRecordingCueSound } = latestRef.current.clientSettings; + if (speechRecordingCue && value.phase === "preparing") + preloadRecordingCue(speechRecordingCueSound); setControllerState({ prepared, grantId, value }); if (value.phase !== "recording" && value.phase !== "transcribing") setPreview(null); }, diff --git a/docs/user/voice-input.md b/docs/user/voice-input.md index 8e396057ef4bc..d7148e1962f95 100644 --- a/docs/user/voice-input.md +++ b/docs/user/voice-input.md @@ -98,6 +98,10 @@ sees the recording, which runs in T3 Code itself. are down, and **Toggle** always needs a second press. Change the chord itself in [Keybindings settings](./keybindings.md). +On web and desktop, turn on **Sound cue** in Voice settings to hear a short sound +when recording starts, and pick the sound you like next to the switch. It is off +by default. + ## Improve recognition - **Language** picks what you speak. **Auto** lets a multilingual model detect diff --git a/packages/client-runtime/src/voice-input/controller.test.ts b/packages/client-runtime/src/voice-input/controller.test.ts index 41e56933ce104..eaf57ad89bd4e 100644 --- a/packages/client-runtime/src/voice-input/controller.test.ts +++ b/packages/client-runtime/src/voice-input/controller.test.ts @@ -427,11 +427,16 @@ describe("VoiceInputController", () => { ); it("uses the native five-minute cap and commits one final transcript", async () => { - const harness = createHarness(); + const beforeRecord = vi.fn(async () => undefined); + const harness = createHarness({ beforeRecord }); await harness.controller.start(); expect(harness.recorder.record).toHaveBeenCalledWith({ forDuration: VOICE_RECORDING_LIMIT_SECONDS, }); + // The start cue plays in this hook, so it must finish before capture begins. + expect(beforeRecord.mock.invocationCallOrder[0]).toBeLessThan( + harness.recorder.record.mock.invocationCallOrder[0] ?? 0, + ); await harness.controller.handleRecorderStatus({ isFinished: true, hasError: false, diff --git a/packages/client-runtime/src/voice-input/controller.ts b/packages/client-runtime/src/voice-input/controller.ts index 668705546a489..5cd028f42a980 100644 --- a/packages/client-runtime/src/voice-input/controller.ts +++ b/packages/client-runtime/src/voice-input/controller.ts @@ -77,6 +77,8 @@ export type VoiceInputControllerDependencies = { readonly configureRecording: () => Promise; readonly releaseRecording: () => Promise; readonly deleteRecording: (uri: string) => void; + /** Runs once the microphone is ready and before capture starts, so a start cue stays out of the audio. */ + readonly beforeRecord?: () => Promise; /** Keep a recording whose transcription failed so the next start retries it without recording again. */ readonly retryFailedRecording?: boolean; /** @@ -331,6 +333,8 @@ export class VoiceInputController { if (!this.isCurrent(operationToken)) return; await this.dependencies.recorder.prepareToRecordAsync(abortController.signal); if (!this.isCurrent(operationToken)) return; + await this.dependencies.beforeRecord?.(); + if (!this.isCurrent(operationToken)) return; this.recordingUri = this.dependencies.recorder.uri; this.rememberRecordingUri(this.recordingUri); diff --git a/packages/contracts/src/settings.test.ts b/packages/contracts/src/settings.test.ts index 261ff895e5028..612a2db698512 100644 --- a/packages/contracts/src/settings.test.ts +++ b/packages/contracts/src/settings.test.ts @@ -593,6 +593,15 @@ describe("voice settings", () => { it("keeps the correction cue personal and project vocabulary on the environment", () => { expect(decodeClientSettings({}).speechCorrectionWord).toBe(""); expect(() => decodeClientSettingsPatch({ speechCorrectionWord: "x".repeat(51) })).toThrow(); + expect(decodeClientSettings({}).speechRecordingCue).toBe(false); + expect(decodeClientSettingsPatch({ speechRecordingCue: true })).toEqual({ + speechRecordingCue: true, + }); + expect(decodeClientSettings({}).speechRecordingCueSound).toBe("classic"); + expect(decodeClientSettingsPatch({ speechRecordingCueSound: "thock" })).toEqual({ + speechRecordingCueSound: "thock", + }); + expect(() => decodeClientSettingsPatch({ speechRecordingCueSound: "shutter" })).toThrow(); expect(DEFAULT_SERVER_SETTINGS.speechProjectCustomWords).toEqual([]); expect(PROJECT_SCOPED_SERVER_SETTING_KEYS).toContain("speechProjectCustomWords"); }); diff --git a/packages/contracts/src/settings.ts b/packages/contracts/src/settings.ts index 1a60524ada9c8..0406a10edd5c8 100644 --- a/packages/contracts/src/settings.ts +++ b/packages/contracts/src/settings.ts @@ -219,6 +219,17 @@ export type SnapShotShortcut = typeof SnapShotShortcut.Type; export const SnapShotSound = Schema.Literals(["soft-pop", "camera-shutter"]); export type SnapShotSound = typeof SnapShotSound.Type; const DEFAULT_SNAP_SHOT_SOUND: SnapShotSound = "soft-pop"; +export const SpeechRecordingCueSound = Schema.Literals([ + "classic", + "signature", + "click", + "soft", + "wood", + "analog", + "thock", +]); +export type SpeechRecordingCueSound = typeof SpeechRecordingCueSound.Type; +const DEFAULT_SPEECH_RECORDING_CUE_SOUND: SpeechRecordingCueSound = "classic"; export type SnapShotModifierPairShortcut = Extract; @@ -669,6 +680,10 @@ export const ClientSettingsSchema = Schema.Struct({ ), ), speechCorrectionWord: SpeechCorrectionCue.pipe(Schema.withDecodingDefault(Effect.succeed(""))), + speechRecordingCue: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))), + speechRecordingCueSound: SpeechRecordingCueSound.pipe( + Schema.withDecodingDefault(Effect.succeed(DEFAULT_SPEECH_RECORDING_CUE_SOUND)), + ), snapShotEnabled: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))), snapShotIncludeAccessibility: Schema.Boolean.pipe( Schema.withDecodingDefault(Effect.succeed(true)), @@ -2175,6 +2190,8 @@ export const ClientSettingsPatch = Schema.Struct({ speechRemoveFillerWords: Schema.optionalKey(Schema.Boolean), speechPostProcessingPrompt: Schema.optionalKey(SpeechPostProcessingPromptSettings), speechCorrectionWord: Schema.optionalKey(SpeechCorrectionCue), + speechRecordingCue: Schema.optionalKey(Schema.Boolean), + speechRecordingCueSound: Schema.optionalKey(SpeechRecordingCueSound), snapShotEnabled: Schema.optionalKey(Schema.Boolean), snapShotIncludeAccessibility: Schema.optionalKey(Schema.Boolean), snapShotShortcut: Schema.optionalKey(SnapShotShortcut), diff --git a/third-party-licenses.config.json b/third-party-licenses.config.json index 0ce031a30f359..0a57a8cf28b8c 100644 --- a/third-party-licenses.config.json +++ b/third-party-licenses.config.json @@ -1,5 +1,12 @@ { "customNotices": [ + { + "name": "Hex dictation start sounds", + "bundles": ["assets", "desktop", "web"], + "license": "MIT", + "sourceUrl": "https://github.com/anomalyco/hex/tree/d8159610dd6fe196c55767a8040ac5b1f04d2ba6/resources/audio/sounds", + "noticeFile": "apps/web/src/assets/speech-cues/LICENSE" + }, { "name": "opencode Office viewers", "bundles": ["web"],