feat(tts): Phase 4 — Read Page Aloud with OS-native voices
Platform-dispatched TTS (spd-say + espeak-ng fallback on Linux, say on macOS, PowerShell System.Speech on Windows) with a shared SpeakerButton component. Tap to speak, tap again to stop; only one button speaks at a time so two surfaces don't talk over each other. Text always travels via argv (or a PowerShell here-string delivered through -EncodedCommand on Windows) so user content never enters a shell string. Mount points: DictationPage transcript footer, transcript viewer header, per-step in MicroSteps. Settings gains a "Read aloud" accordion with voice picker (lazy-loaded from the OS synth), rate slider 0.5-2.0x, and a British-English test utterance. Rust tests cover rate mapping, NaN handling, and Windows here-string terminator safety. No pause/resume, no SSML, no cloud voices — that stays out of scope per the Layer-1 roadmap.
This commit is contained in:
@@ -70,6 +70,13 @@ export interface SettingsState {
|
||||
* the user explicitly opts in.
|
||||
*/
|
||||
matchMyEnergy: boolean;
|
||||
/**
|
||||
* Phase 4 Read Page Aloud: OS-native TTS. `voice` is the platform's
|
||||
* voice id (e.g. macOS `Alex`), or `null` for system default.
|
||||
* `rate` is 0.5..2.0 where 1.0 is the synth's normal speed.
|
||||
*/
|
||||
ttsVoice: string | null;
|
||||
ttsRate: number;
|
||||
}
|
||||
|
||||
export interface Profile {
|
||||
|
||||
Reference in New Issue
Block a user