Add isolated Remote speech synthesis and typed rendering
Preserve literal whitespace and resolved spelling/language state across complete Remote speech assemblies. Isolate cancellation from local status and echo, retire handles on configuration changes or rendering failure, and cover metadata preparation cancellation with private SSIP fixtures. Verified focused application and backend race tests, ten repetitions of isolated-client/rendering cases, shared speech regressions, affected-package vet, reader build and Tentacles checks. Incoming mailbox integration, local priority and live audible acceptance remain pending.
This commit is contained in:
1 parent
622d2f96a1
commit
ac431dd514
9 files changed
+1370
-11
No files matched your search
@@ -16,6 +16,11 @@ import (
|
||||
func (client *Client) SpeakAndWait(ctx context.Context, text string, began func()) (result error) {
|
||||
client.mutex.Lock()
|
||||
defer client.mutex.Unlock()
|
||||
return client.speak_and_wait_locked(ctx, func() error { return client.speak(ctx, text) }, began)
|
||||
}
|
||||
|
||||
// The caller owns the speaking connection until the terminal notification.
|
||||
func (client *Client) speak_and_wait_locked(ctx context.Context, speak func() error, began func()) (result error) {
|
||||
if client.conn == nil {
|
||||
return errors.New("speech client is not connected")
|
||||
}
|
||||
@@ -33,7 +38,7 @@ func (client *Client) SpeakAndWait(ctx context.Context, text string, began func(
|
||||
}
|
||||
}
|
||||
}()
|
||||
if err := client.speak(ctx, text); err != nil {
|
||||
if err := speak(); err != nil {
|
||||
return err
|
||||
}
|
||||
conn := client.conn
|
||||
|
||||
Reference in new issue
Block a user