sayd-core
The engine behind sayd: utterance queue, sentence chunking, "write for the ear" text cleanup, configuration, and the state machine that drives them.
Deliberately depends on neither an inference stack nor an audio backend nor
D-Bus. Synthesis reaches it through the Synthesizer trait and audio through
AudioSink, which is what lets the whole engine be driven in a unit test with
no model, no audio device and no display.
engine— commands in, immutable snapshots out;tick()does one unit of work and returnshandle— runs the engine on its own threadqueue— four submission policies with per-source defaultschunk— two-phase: split to a character target, then re-split whatever overruns the model's phoneme-token budget once phonemisedcleanup— URLs, markdown, code fences, acronymsconfig— TOML under XDG paths, atomic writes
Licence
MIT.