Skip to content

stabbur 0.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Sep 19:46
v0.12.0
61adba9

One feature, for anyone who lets a voice-design model read chat replies aloud. If your
Listen voice is a Kokoro preset, nothing here changes for you.

A voice-design model has no fixed speaker: it invents one from a description, and a seed
picks which of the speakers matching that description you get. Until now the chat's
Listen button spoke every reply with the description and seed pinned in stabbur's voice
registry, and nothing in the UI could change either. The only place a description could be
written was the Voice studio, which does not feed Listen.

Two fields now appear beside the voice picker whenever the voice takes them: a Voice
description and a Speaker seed. They live in the two places the voice itself does.
Settings > Voice sets the default every chat inherits, stored in the browser like the
voice and speed. The chat's own settings panel overrides both for one conversation, with
the inherited value shown and a Reset back to it. Blank means the model's own house
voice, so a chat that sets nothing sounds exactly as it did in 0.11. The fields hide when
a Kokoro preset is picked, since a preset is a fixed speaker; what you wrote is kept, so
switching voices and back does not lose it. The Settings picker also stops filing a model
voice under a language it never declared and no longer invents a gender mark for it.

For API clients, POST /api/speak takes two optional fields for a model: voice,
instruct and seed, each falling back to the house voice when unset. A description sent
to a Kokoro voice is refused with a 422, as it already was on /v1/audio/speech.
GET /api/voices reports per voice whether it takes a description or a seed and what its
house description and seed are, so a client can show the controls only where they act.

The usual caveat holds and is unchanged: a seed reproduces a speaker only against the
installed MLX version. An MLX upgrade re-maps seeds to voices, so a number you liked may
not survive one.

Still open: a project cannot yet pin a description and seed in its manifest, so a project
that wants its assistant to speak as one particular designed speaker relies on each
user's Settings.