feat(speak): default to Flux TTS (flux-alexis-en) instead of Aura 2#89
feat(speak): default to Flux TTS (flux-alexis-en) instead of Aura 2#89GregHolmes wants to merge 1 commit into
Conversation
Change the default `dg speak` model from aura-2-asteria-en to flux-alexis-en, so a bare `dg speak` now uses Flux TTS (Speak v2, WebSocket streaming) out of the box. Routing is unchanged and still prefix-based, so Aura remains available via `-m aura-*`. Because the default now takes the v2 streaming path (raw linear16 wrapped in WAV), containerized formats like mp3 require an explicit `-m aura-*`. Updated --model/agent help and README examples to reflect Flux-by-default with Aura as opt-in, and added a test asserting no -m routes to Flux (v2) rather than Aura (v1). The core client speak_text() default is intentionally left as aura-2-asteria-en: it is the Aura-only v1 REST path; Flux uses speak_text_stream().
|
Reviewed — code and docs are correct, tests pass locally (speak 20/20, including the new default-routes-to-Flux test), routing and the Aura REST path are unchanged, and One thing to fix before merge, and one follow-up.
|
dg-coreylweathers
left a comment
There was a problem hiding this comment.
Approved. Fix the feat!: title + BREAKING CHANGE footer before merge; EA-single-voice ship is a go.
What
Changes the default
dg speakmodel fromaura-2-asteria-entoflux-alexis-en, so a baredg speak "..."now uses Flux TTS (Speak v2, WebSocket streaming) out of the box. Aura remains fully available via-m aura-*.Follow-on to the Speak v2 / Flux TTS implementation (#86). Asana: DX CLI task.
Why
Flux TTS is our latest, most natural TTS. Making it the default puts our best voice front-and-center in the CLI.
How it works
Routing is unchanged and purely prefix-based (
model.lower().startswith("flux")):flux-*goes to Speak v2 streaming, everything else goes to Speak v1 (Aura, REST batch). Picking the voice is picking the API path -- there is no separate mode flag.Behavior change
Because the default now takes the v2 streaming path (raw
linear16auto-wrapped in WAV), containerized formats like mp3 now require an explicit-m aura-*:dg speak "hi" -o out.wav-> Flux, WAV (new default)dg speak "hi" -o out.mp3 --encoding mp3-> fails with a clear error + non-zero exit (was previously fine under the Aura default)dg speak "hi" -o out.mp3 -m aura-2-asteria-en-> Aura v1 REST, mp3 (opt back in)This is worth a line in the release notes.
Not changed
Core client
speak_text()default staysaura-2-asteria-en-- it is the Aura-only v1 REST path (speak.v1.audio.generate); Flux goes throughspeak_text_stream().Testing
test_handle_default_model_routes_to_flux(asserts no-mroutes to Flux v2, not Aura v1).dg+ released SDK 7.5.0, against prod):dg speak-> Flux streaming, plays correctly-m aura-2-asteria-en-> Aura v1 REST, plays correctly--encoding mp3-> fails clean, exit 2, no file writtenOpen question
Flux TTS is currently EA with a single voice (
flux-alexis-en); more land at GA (~next month). Decision needed: merge now and ship Flux-by-default against the single EA voice, or hold this until GA when the full roster is available.