craigm26 / craigm26/OpenCastor

Wake word: hands-free voice for a phone bolted to a car

Open
#936 1 comment 0 reactions 0 assignees View on GitHub
marathon-2026-08-15 ux
Dominant language
Python
Stars
28
Forks
5
PR merge metrics
No merged PRs in 30d

Description

## Why
The phone is mounted on the vehicle; tapping the mic is the wrong gesture. Voice is already the fastest control surface (spoken "stop" fires off PARTIAL transcripts with no model in the loop — app build 38) but starting a command still needs a finger.

## What
- Always-listening wake phrase ("hey rover" / robot name) via the existing on-device SFSpeechRecognizer session, gated to the mounted context (phone role = On the robot, or drive screen open)
- Wake → the existing VoiceIntent pipeline (stop words keep their absolute priority and their partial-transcript latency — DO NOT route stop through the wake gate)
- Battery/thermal honesty: wake listening is a visible toggle with state, not an invisible drain

## Acceptance
- With the toggle on and the phone mounted: speak the wake word + "go forward" → lands in chat exactly as a typed message; speak "stop" mid-anything → same stop path and latency as today (pinned by existing VoiceIntent tests, which must not change)
- Voice chat and the Sensors tab's mic meter still coexist (the meter already stops off-tab)

## Pointers
- iOS VoiceSession (onStopHeard partial path), VoiceIntent (stop outranks everything — tested)

Contributor guide

Open the contributing guide

Research direction

Start by reading the iOS VoiceSession partial-transcript stop path and VoiceIntent, including the existing tests that pin stop priority and latency. Trace how the Sensors tab mic meter is managed so wake listening can coexist with it. Done means a visible toggle gates mounted-context wake listening, wake plus a command reaches chat like typed input, and stop behavior and existing tests remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
audio-video-rtc, mobile-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.