docs(lobe-chat): TTS works with zero client-side settings now

infra-ops aliased tts-1, tts-1-hd and gpt-4o-mini-tts onto ext-tts's upstream
and extended the lobe-chat-esh key allow-list 20 -> 23 models, so the manual
"set the TTS model to ext-tts, per browser" step this file described a few
hours ago is obsolete. Lobe's stock three-field payload now returns 200
audio/mpeg — verified from the host with this stack's own .env.

Adds the coupling that the fix introduces: the three new names are independent
LiteLLM DB rows carrying their own copy of the upstream URL, so a future
repoint of ext-tts must move all four or stock clients land on a dead engine
without any error on the gateway side.

Comment/doc only — no functional change, no redeploy.
This commit is contained in:
vh
2026-08-17 21:49:04 -07:00
parent 637ed3bd89
commit d3e1cc4a41
2 changed files with 27 additions and 16 deletions
+9 -6
View File
@@ -35,12 +35,15 @@
# ALIASED, not rejected (echo/alloy/onyx/ash->donut, nova->miranda,
# shimmer/coral->emmie, fable/sage->glados), so a UI mis-click is NOT the
# hazard I first recorded. Only `ballad` and `verse` 404 -- both aliased since.
# ⚠️ REQUIRED UI STEP (tts-dev 2026-08-17): Settings -> TTS -> OpenAI TTS model
# -> `ext-tts`. There is no env var for it. Lobe's default is `tts-1`, and while
# :8198 ignores `model`, LITELLM IN FRONT OF IT DOES NOT -- it resolves the name
# first, so `tts-1` returns 403 (`key not allowed to access model`; 400 on an
# unscoped key) and TTS does nothing. Verified from this host with this .env.
# Per browser -- the TTS settings store is client-side.
# MODEL NAME -- no longer a manual step (2026-08-17). Lobe defaults to `tts-1`,
# and while :8198 ignores `model`, LITELLM IN FRONT OF IT DOES NOT -- it resolves
# the name first, so `tts-1` used to 403 (`key not allowed to access model`) and
# TTS did nothing from deploy until it was found. infra-ops then aliased `tts-1`,
# `tts-1-hd` and `gpt-4o-mini-tts` to ext-tts's upstream AND added them to the
# `lobe-chat-esh` key allow-list, so the stock payload works with ZERO settings.
# Verified from this host with this .env: {"input":...,"model":"tts-1",
# "voice":"alloy"} -> 200 audio/mpeg. Setting the UI field to `ext-tts` also
# works and does no harm.
# SIZE: Lobe sends only {input, model, voice} -- no `response_format`, no
# `speed`, and no UI field for either -- so you get the gateway's default (WAV,
# ~23.5 MB for a 245 s turn), relabelled `audio/mpeg` by LiteLLM. Not fixable