Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/cli/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ they appear in the UI.
| Voice Activation Mode | `experimental.voice.activationMode` | How to trigger voice recording with the Space key. | `"push-to-talk"` |
| Voice Transcription Backend | `experimental.voice.backend` | The backend to use for voice transcription. Note: When using the Gemini Live backend, voice recordings are sent to Google Cloud for transcription. | `"gemini-live"` |
| Whisper Model | `experimental.voice.whisperModel` | The Whisper model to use for local transcription. | `"ggml-base.en.bin"` |
| Voice Stop Grace Period (ms) | `experimental.voice.stopGracePeriodMs` | How long to wait for final transcription after stopping recording. | `1000` |
| Voice Stop Grace Period (ms) | `experimental.voice.stopGracePeriodMs` | How long to wait for final transcription after stopping recording. | `4000` |
| Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
| Use OSC 52 Paste | `experimental.useOSC52Paste` | Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
| Use OSC 52 Copy | `experimental.useOSC52Copy` | Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -1795,7 +1795,7 @@ their corresponding top-level category object in your `settings.json` file.
- **`experimental.voice.stopGracePeriodMs`** (number):
- **Description:** How long to wait for final transcription after stopping
recording.
- **Default:** `1000`
- **Default:** `4000`

- **`experimental.adk.agentSessionNoninteractiveEnabled`** (boolean):
- **Description:** Enable non-interactive agent sessions.
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/config/settingsSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2149,7 +2149,7 @@ const SETTINGS_SCHEMA = {
label: 'Voice Stop Grace Period (ms)',
category: 'Experimental',
requiresRestart: false,
default: 1000,
default: 4000,
description:
'How long to wait for final transcription after stopping recording.',
showInDialog: true,
Expand Down
13 changes: 7 additions & 6 deletions packages/cli/src/ui/hooks/useVoiceMode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,9 @@ export function useVoiceMode({
}

const serviceToDisconnect = transcriptionServiceRef.current;
transcriptionServiceRef.current = null;

if (serviceToDisconnect) {
const isLive = settings.experimental.voice?.backend === 'gemini-live';
const gracePeriodMs =
settings.experimental.voice?.stopGracePeriodMs ??
(isLive ? 2000 : 1000);
const gracePeriodMs = settings.experimental.voice.stopGracePeriodMs;
debugLogger.debug(
`[Voice] Draining transcription for ${gracePeriodMs}ms`,
);
Expand All @@ -90,11 +86,16 @@ export function useVoiceMode({
disconnectTimerRef.current = setTimeout(() => {
debugLogger.debug('[Voice] Grace period ended, disconnecting service');
serviceToDisconnect.disconnect();
if (transcriptionServiceRef.current === serviceToDisconnect) {
transcriptionServiceRef.current = null;
}
disconnectTimerRef.current = null;
liveTranscriptionRef.current = '';
}, gracePeriodMs);
} else {
liveTranscriptionRef.current = '';
}

liveTranscriptionRef.current = '';
pttStateRef.current = 'idle';
}, [settings.experimental.voice]);

Expand Down
4 changes: 2 additions & 2 deletions schemas/settings.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -3107,8 +3107,8 @@
"stopGracePeriodMs": {
"title": "Voice Stop Grace Period (ms)",
"description": "How long to wait for final transcription after stopping recording.",
"markdownDescription": "How long to wait for final transcription after stopping recording.\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `1000`",
"default": 1000,
"markdownDescription": "How long to wait for final transcription after stopping recording.\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `4000`",
"default": 4000,
"type": "number"
}
},
Expand Down
Loading