Transcription: config-driven OpenAI-compatible STT with OpenAI fallback (server-26#297, server-26#83)
STT_PROVIDER=auto picks Groq whisper-large-v3-turbo only when GROQ_API_KEY is set (else OpenAI, unchanged); compat covers any OpenAI-compatible server via STT_BASE_URL/STT_API_KEY. A failed primary falls back to OpenAI STT_MODEL on the same downloaded audio; the fallback reports to its own ai_health tier so a dead primary stays red. The non-OpenAI provider gets a token-budgeted glossary prompt (area places, local_knowledge, vocabulary; never ten-codes), guarded by a narrow prompt-echo check. A per-30s-window zlib compression check (Whisper's 2.4) adds a noise gate that survives correction being off (#83, partial). Call docs record stt_provider/model/audio_seconds/confidence. The sweep hold-back counts the fallback attempt. gate_chatter added to chatter_classifier (used by transcription to skip correction when CHATTER_GATE_ENABLED). GROQ_API_KEY templated with default ''. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7ecfca7648
commit
d485eae41a
@@ -34,6 +34,24 @@ def openai_client(timeout: Optional[float] = None):
|
||||
)
|
||||
|
||||
|
||||
def stt_client(api_key: Optional[str], base_url: Optional[str] = None):
|
||||
"""
|
||||
Synchronous client for an OpenAI-compatible transcription endpoint
|
||||
(server-26#297) -- OpenAI itself, Groq, or a self-hosted server. Same
|
||||
timeout/retry limits as every other client here, with STT's own timeout.
|
||||
"""
|
||||
from openai import OpenAI
|
||||
kwargs = {}
|
||||
if base_url:
|
||||
kwargs["base_url"] = base_url
|
||||
return OpenAI(
|
||||
api_key=api_key,
|
||||
timeout=settings.stt_timeout_seconds,
|
||||
max_retries=settings.openai_max_retries,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
|
||||
def async_openai_client(timeout: Optional[float] = None):
|
||||
"""Async OpenAI client, same limits as openai_client()."""
|
||||
from openai import AsyncOpenAI
|
||||
|
||||
Reference in New Issue
Block a user