chat: fix and complete voice chat (STT/TTS) wiring — full endpoint URLs, live gateway key, engine defaults
The speech section shipped 6 Nov was doubly broken: LibreChat POSTs to speech.*.openai.url VERBATIM in 0.8.8, so the base '/v1' URL 404'd, and the STT_API_KEY/TTS_API_KEY env values held a key that no longer exists on the gateway (401 token_not_found). Also: - STT: tinfoil/voxtral-small-24b (token-priced; gateway bills ~$0.00008/request, 125x under the flat $0.01/request whisper; same TEE provider, verified equal quality on dictation clips). Whisper remains allowed on the key as fallback. - TTS voices: full provider speaker list (an unknown voice 400s at the gateway). - speechTab: object form seeds Settings->Speech defaults (engineSTT/engineTTS external, voice casual_female) for members who never saved their own. - new gateway key: alias librechat-speech, $5/30d, audio models only, injected as STT_API_KEY/TTS_API_KEY app env. Verified on a throwaway librechat-test install then live (chat.inference.coop): config/get serves the defaults; /api/files/speech/stt returns a correct transcript; /api/files/speech/tts/manual returns audio. Known gap (gateway-side, NOT this repo): aspeech rows log $0 spend — voxtral-tts is unmetered on the gateway's aspeech path while the co-op pays ~$0.002/request.
This commit is contained in:
1 parent
80db1d235f
commit
e8da85f730
1 file changed
+26
-11
+26
-11
@@ -133,27 +133,42 @@ interface:
|
||||
rgb-border-light: '74 82 64'
|
||||
|
||||
|
||||
# Speech (STT/TTS) via the co-op gateway. Uses a dedicated LiteLLM virtual key
|
||||
# (alias: librechat-speech, $5/30d budget, restricted to the audio models) so
|
||||
# speech never runs on the gateway master key. The gateway is a public
|
||||
# Speech (STT/TTS) via the co-op gateway. LibreChat POSTs to `url` VERBATIM
|
||||
# (no path is appended), so the FULL endpoint paths are required here.
|
||||
# Uses a dedicated LiteLLM virtual key (alias: librechat-speech, $5/30d
|
||||
# budget, restricted to the audio models) injected as STT_API_KEY/TTS_API_KEY
|
||||
# app env — speech never runs on the master key. The gateway is a public
|
||||
# endpoint, so no SSRF allowedAddresses exemption is needed.
|
||||
# STT: tinfoil/voxtral-small-24b — token-priced (~$0.00008/typical dictation
|
||||
# request on the gateway) vs the flat $0.01/request of
|
||||
# tinfoil/whisper-large-v3-turbo; same TEE provider, equal quality on short
|
||||
# clips (verified round-trip 2026-11-07). Whisper stays allowed on the key as
|
||||
# a one-line fallback swap. TTS: tinfoil/voxtral-tts, $0.002/request at cost;
|
||||
# voices are the provider's supported speakers (an unknown name 400s).
|
||||
speech:
|
||||
tts:
|
||||
openai:
|
||||
url: "https://gateway.inference.coop/v1"
|
||||
apiKey: "${TTS_API_KEY}"
|
||||
url: "https://gateway.inference.coop/v1/audio/speech"
|
||||
apiKey: ${TTS_API_KEY}
|
||||
model: "tinfoil/voxtral-tts"
|
||||
voices: ["casual_female"]
|
||||
voices: ["ar_male", "casual_female", "casual_male", "cheerful_female", "de_female", "de_male", "es_female", "es_male", "fr_female", "fr_male", "hi_female", "hi_male", "it_female", "it_male", "neutral_female", "neutral_male", "nl_female", "nl_male", "pt_female", "pt_male"]
|
||||
stt:
|
||||
openai:
|
||||
url: "https://gateway.inference.coop/v1"
|
||||
apiKey: "${STT_API_KEY}"
|
||||
model: "tinfoil/whisper-large-v3-turbo"
|
||||
url: "https://gateway.inference.coop/v1/audio/transcriptions"
|
||||
apiKey: ${STT_API_KEY}
|
||||
model: "tinfoil/voxtral-small-24b"
|
||||
# Seeded client defaults (Settings -> Speech): members who never saved
|
||||
# their own speech settings get the External engines out of the box;
|
||||
# a member's own saved settings always win. "Automatic playback" stays
|
||||
# opt-in per member (set textToSpeech.automaticPlayback: true to change).
|
||||
speechTab:
|
||||
conversationMode: false
|
||||
advancedMode: false
|
||||
speechToText: true
|
||||
textToSpeech: true
|
||||
speechToText:
|
||||
engineSTT: external
|
||||
textToSpeech:
|
||||
engineTTS: external
|
||||
voice: casual_female
|
||||
|
||||
# Web search: self-hosted SearXNG (search.inference.coop, keyless JSON API)
|
||||
# for search, keyless Keenable for page scraping, no reranker. The instance
|
||||
|
||||
Reference in new issue
Block a user