feat(voice): Add local-first realtime voice mode - #1286
RONAK-AI647 wants to merge 4 commits into
Conversation
…ds-free VAD, barge-in, install-on-demand (squashed, rebased onto current main)
| // that do not implement audio transcription / speech endpoints. | ||
| const isRealOpenAI = | ||
| (name === 'openai' || sdk === 'openai') && | ||
| (!baseURL || baseURL.includes('api.openai.com')); |
nc-review: comments — 6 important, 2 nits@RONAK-AI647 — a few things worth a look, none blocking. Adds a substantial local-first voice mode (separate plugin + core wiring, push-to-talk, VAD, STT/TTS, barge-in, install queue). The PR is the cleanup pass after an earlier review, and the self-reported review-fix list is plausible and on-point. With no diff visible from the base checkout I cannot directly verify the new code paths or tests; from what I can read in base files, the wiring touches the right seams (lazy command registry, chat input, interactive-app, global handler queues, config schema, preferences, bash executor) and the plugin isolation under 🟠 important · This is a ~50-file feature with no linked issue. CONTRIBUTING.md asks contributors to draft a spec and discuss it in issue comments before starting work on substantial changes ( 🟠 important ·
🟠 important · The voice plugin lives under 🟠 important ·
🟠 important ·
🟠 important · The PR description mentions "Hands-free VAD combined with automatic tool approval may require an additional maintainer decision regarding ambient-noise safety." That is a security-relevant flag the author raised themselves. In ⚪ nit ·
⚪ nit ·
🔴 blocking · 🟠 a reviewer would ask for a change · ⚪ optional Automated code review — correctness, security, design, tests, plus duplicates and scope. A human still decides; this is not a substitute for review and is not exhaustive. The required status checks separately cover lint, formatting, types, unused dependencies, the test suite and the build. This bot never merges. Maintainers can rerun with |
|
Hey @RONAK-AI647 - looking great! Let me know when you'd like me to review :) |
|
@will-lamerton , There are some issues yet there , I am sorting them , this month was hectic , apologies for delay. I would love to see a detailed review if you do , makes my debugging easier. |
Summary
Adds a local-first voice mode for Nanocoder with push-to-talk, hands-free VAD, speech transcription, text-to-speech, and interruption support.
This PR combines the six voice-mode implementation phases and includes the fixes from will's review and this fixes issue #622
Scope clarification
The Bash executor change is required for voice-mode barge-in. Hands-free voice can interrupt an active response while a Bash tool is running, so the executor now escalates from SIGTERM to SIGKILL when a process ignores cancellation. This prevents interrupted voice sessions from leaving child processes running.
Hands-free voice should not be combined with
yoloor automatic tool approval in noisy environments, because unintended speech or background noise may trigger agent actions. Push-to-talk or normal approval mode is recommended for safer use.Features
/voicecommand for enabling and configuring voice modeCtrl+TReview fixes included
main[BLANK_AUDIO]responsesvoiceNameinto cloud TTSValidation
Notes
Native provider-specific realtime streaming is intentionally not included in this PR. Cloud voice currently uses STT/TTS REST endpoints, while all providers retain the existing Nanocoder request pipeline.
Hands-free VAD combined with automatic tool approval may require an additional maintainer decision regarding ambient-noise safety.