Share Speech Dispatcher transport and restart recovery
This commit is contained in:
1 parent
e49ba198d7
commit
b9a33f7578
19 files changed
+2951
No files matched your search
@@ -91,3 +91,38 @@ pinned module versions: after review and live acceptance, release/tag the
|
||||
common module, then update `go.mod` and `go.sum` in **both** readers and test
|
||||
with `GOWORK=off`. A shared source change does not update already installed
|
||||
binaries; they must be rebuilt with the updated dependency.
|
||||
|
||||
## Speech Dispatcher
|
||||
|
||||
`speechdispatcher` owns the shared SSIP client used by both readers: endpoint
|
||||
resolution, optional daemon startup, speaking and independent cancellation
|
||||
connections, settings, bounded reply parsing, discovery queries, and read-all
|
||||
notifications. It has no service-manager dependency. Each reader supplies its
|
||||
client identity and keeps its own admission, interruption, presentation, and
|
||||
hardware-synthesizer behavior. Fenrir enables automatic system-socket fallback;
|
||||
explicit socket/address choices never fall back to another server.
|
||||
|
||||
After a connection fails, the failed utterance is not replayed. The next fresh
|
||||
speech request rebuilds both channels and restores settings, priority, and the
|
||||
new cancellation target. Failed reconnection remains retryable on subsequent
|
||||
requests. Context cancellation bounds connection work; Close and Abort prevent
|
||||
reconnection. Fenrir additionally retains its worker's bounded background retry
|
||||
and outage-queue discard policy. An already accepted utterance whose reply was
|
||||
lost may have spoken before the failure; automatically replaying it is unsafe.
|
||||
|
||||
`Speak` normalizes desktop text; `SpeakText` preserves console-prepared whitespace
|
||||
and line boundaries. `SpeakCharacter` sends character feedback. Query connections
|
||||
are separate from speaking connections, and ordinary discovery never autostarts
|
||||
a daemon. Startup can honor the invoking sudo user's credentials without
|
||||
changing the reader process's credentials.
|
||||
|
||||
Run `go test -race ./speechdispatcher` for protocol and recovery fixtures.
|
||||
`CTHULHU_NATIVE_SPEECH_STARTUP=1 go test -race ./speechdispatcher` additionally
|
||||
starts and restarts private dummy-output daemons; it does not restart the user's
|
||||
Speech Dispatcher. The environment variable retains the migrated test's name.
|
||||
|
||||
The shared client is available starting with v0.3.0. Both readers pin this
|
||||
version for standalone builds; the sibling workspace remains useful for local
|
||||
development. Verify released dependencies with `GOWORK=off`. Existing installed
|
||||
binaries do not gain fixes until rebuilt. Live audible-speech, keyboard, and
|
||||
braille acceptance is tracked separately from automated protocol tests.
|
||||
Reference in new issue
Block a user