Robby update · 26 October 2026. Parakeet v3 is now the default final recognizer. The camera starts off. Humaneness Ears Medium runs on a GPU alongside final ASR and supplies a short, explicitly uncertain delivery caption.
| Audio | Parakeet alone | GPU caption alone | Both in parallel |
|---|---|---|---|
| 1 second | 42.6 ms | 20.1 ms | 44.2 ms |
| 2 seconds | 43.9 ms | 20.5 ms | 49.6 ms |
| 4 seconds | 62.9 ms | 21.6 ms | 62.4 ms |
| 8 seconds | 85.4 ms | 26.1 ms | 89.4 ms |
Three repeats per duration and mode, 36 probes on two RTX 3090 GPUs. These are HTTP wall-time medians, not speech-end-to-audible-answer latency. A synthetic waveform was repeated to control duration; this is not an emotion-quality benchmark. ASR uses GPU 0 and captions GPU 1. No one-GPU equivalence is claimed.
Speech pause → ASR and GPU caption in parallel → speaker admission → ready hint or omission → LLM → streaming TTS
The caption job starts on the same finalized audio snapshot as ASR. Its result belongs to that turn only. When the turn is accepted, Robby uses an already-completed result or skips it: a late result adds no awaited delay before the response model. The worker analyzes at most the last eight seconds, stores no microphone files and loads no second ASR or generative caption model.
The pinned Humaneness Ears Medium encoder supplies scores. The pinned Procedural Voice Captions rules use their measured speech-reference normalization. Robby limits the text to prosody and ordinary emotional cues, omitting demographic, identity, sincerity and quality judgments.
The LLM is told that these are uncertain acoustic estimates, not facts about feelings or intentions. The person's actual words take priority. Noise, other speakers and acting can mislead the model. A caption never authorizes a speaker switch, an interruption or ignoring a request.
Under Speech pause & interruption options, Use uncertain tone-of-voice hints is independently switchable and remembered. A short caption/status and its timing are visible. Typed input receives no guessed voice tone. The camera remains manually available. Nemotron still handles live previews, speaker features and interruption candidates; Parakeet produces the final transcript.
465 offline checks pass. The actual HTTPS Chromium test passes fresh defaults, old-default migration, subsequent explicit ASR selection, synthetic microphone enrollment, real Parakeet/GPU/LLM/TTS, captions off and persistence. Two available caption segments took 39.39 and 32.35 ms of GPU inference, with zero extra awaited caption delay. Digital audio injection does not certify a physical room or microphone.
Full browser receipt · Conflicting-hint LLM smoke response · Detailed setup, pins, privacy and limitations
The separate noisy interruption test still fails: four new positive cancellation cases were missed, while the recognized negated control was preserved. One synthetic input also transcribes poorly in isolation. These failures are retained and are not relabeled as passes by the caption tests. Interruption evidence.
The four-page English proposal explains a small decision-model taxonomy, cached reactions with expressions, parallel main-answer generation, cancellation, repetition limits and A/B/C tests. It is a proposal; the bridge controller is not implemented by this update.
python bootstrap_voice_captions.py ROBO_CAPTION_DEVICE=cuda:1 python voice_caption_worker.py python run_unit_checks.py python check_voice_captions.py python check_voice_caption_prompt.py uv run --no-project --with playwright --python /path/to/python \ python browser_voice_caption_check.py --url https://YOUR-TUNNEL
Use the existing Robby environment, compatible GPU PyTorch and the pinned public v2 fixtures. CUDA indices are relative to visible GPUs. The worker binds to loopback port 8802. No private microphone recordings, enrolled voiceprints or API keys are included in the source/test release.