Rewrite reference docs as current state; record the style rule
Reference, guidelines and plan documents describe what is and what will be. Retirement stories, resolved-risk narration and against-the-alternative argument moved out or were cut; reports keep that material. What survives the cut is the mechanism that can bite again (driving side is a country-level property) and the condition that would change a decision (a permanently installed, car-powered panel), both stated generally. Also removes a duplicated Japan section from a bad edit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013kj58Jugkic783b8ZrtTVZ
This commit is contained in:
+11
-14
@@ -44,9 +44,9 @@ have taken their share.
|
||||
|
||||
Four rules follow.
|
||||
|
||||
**The cloud LLM is load-bearing.** [OVERVIEW.md](../OVERVIEW.md) puts reasoning in
|
||||
the cloud. That decision is what makes a local voice stack fit at all — moving the
|
||||
LLM on-device collapses this budget entirely. It is not a free choice to revisit.
|
||||
**Reasoning runs in the cloud.** The local voice stack fits only because the LLM
|
||||
is not resident. An on-device LLM and the voice stack do not coexist in this
|
||||
budget.
|
||||
|
||||
**Size Whisper by vocabulary, not by benchmark.** In-car commands are a narrow,
|
||||
predictable set. `large` buys accuracy this application cannot spend, at a cost
|
||||
@@ -156,10 +156,10 @@ Same protocol, same receiver. The receiver starts playback on the first chunk,
|
||||
appends as more arrive, and finishes on the terminator — which is what Android's
|
||||
`AudioTrack` streaming mode does natively.
|
||||
|
||||
**What must not be built:** an utterance as a single response body with a
|
||||
"download the file, then play the file" player. That works today and forecloses
|
||||
streaming permanently. Whether the TTS we land on streams is still open, so the
|
||||
transport must not assume either way.
|
||||
⚠ **Never ship an utterance as a single response body with a "download, then
|
||||
play" player.** It works, and it forecloses streaming permanently — the receiver
|
||||
has no way to begin before the last byte. The chunk boundary is what keeps both
|
||||
TTS modes available.
|
||||
|
||||
### The transport is testable with no real TTS
|
||||
|
||||
@@ -171,10 +171,8 @@ completely. Voice quality is irrelevant to every one of those.
|
||||
### Ducking is the tablet's job
|
||||
|
||||
Android's `AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK` ducks other applications' audio —
|
||||
Spotify included — for the duration of a request, then restores it. This is the
|
||||
mechanism every navigation app already uses, and it is less work than the PipeWire
|
||||
policy it replaces. Cross-application ducking is a solved problem on the tablet
|
||||
and would have been a bespoke one on the Orin.
|
||||
Spotify included — for the duration of a request, then restores it. Cross-
|
||||
application ducking is native on the tablet.
|
||||
|
||||
### The microphone stays on the Orin
|
||||
|
||||
@@ -188,6 +186,5 @@ With no tablet connected the Orin can still hear — the mic is local — but ca
|
||||
speak. The voice stack expires or drops pending utterances rather than queueing
|
||||
them unboundedly or blocking on a sink that may never arrive.
|
||||
|
||||
The consequence to accept: **unplug the tablet and the car has no voice.** That is
|
||||
tolerable because unplugging it also removes the music, so the tablet was already
|
||||
load-bearing for audio. Speech does not make it more so.
|
||||
**The tablet is required for any audio at all** — it is both the media source and
|
||||
the speech sink.
|
||||
|
||||
Reference in New Issue
Block a user