Speech composer¶
Drawer Speak (compose.open) opens compose.xml. This is an internal phrase, not OS typing.
- Type on the composer keyboard into a buffer. A row above the phrase offers the next word or a spelling fix. Dwell a suggestion to insert it. Word chips: first dwell jumps the caret; later dwells delete the word (
<Phase>). - Word predictions use a sentence-sized model shipped with Gazer (
resources/predict/model.bin). A usage-ranked dictionary completes words that are not in the sample phrases. Words you accept are remembered under%AppData%\Gazer\predict-user.bin. Turn the row off under Settings → Speak. - Speak synthesizes the buffer. Engine is ElevenLabs v4 Turbo when that model, a DPAPI-stored API key, and a voice id are set; otherwise Windows SAPI. Turbo plays as the audio arrives. Three Eleven failures latch SAPI until model, voice, or key changes.
- XML
<Speak value="Hello"/>is always Windows SAPI (a canned cell utterance). Composer Speak is the commandcompose.speakand uses Settings → Speak (SAPI or v4 Turbo). - Soundboard: pin the spoken clip onto topic cells; replay without re-synthesis. Store:
%AppData%\Gazer\(boards.json,clips/). - Freestyle: saved voices + ElevenLabs audio tags (
[laugh], accents, …). - History: last 50 composed utterances; replay, restore, or delete.
- Settings → Speak: paste API key from the clipboard (never stored in
settings.json), model, speed, boost, word predictions.
While the action’s source page is compose (or a compose live board), Send and mapping/modifier commands are captured into the phrase: letters insert, backspace deletes, space inserts a space, enter speaks, escape stops speech or closes. leftShift / tab / arrows are consumed with no OS inject. Caps uses XML ShowLayers. The full QWERTY board (qwerty_main) still types into Windows. Capture table: Actions — Composer capture.
Composer commands (compose.*, speech.*, soundboard.*, history.*) are in the command catalog. Word chips use <Phase>: first dwell moves the caret (compose.moveEndOfWord.<i>), a later dwell deletes (compose.removeWord.<i>).