fix: configure dedicated asr upload gateway

This commit is contained in:
2026-05-19 09:38:17 +08:00
parent 9a4268281e
commit 2954e58740
5 changed files with 44 additions and 4 deletions

View File

@@ -58,6 +58,8 @@ for _library_dir in [
LLM_BASE_URL = os.getenv("LLM_BASE_URL", "").strip()
LLM_API_KEY = os.getenv("LLM_API_KEY", "").strip()
ASR_BASE_URL = os.getenv("ASR_BASE_URL", LLM_BASE_URL).strip()
ASR_API_KEY = (os.getenv("ASR_API_KEY") or LLM_API_KEY).strip()
ASR_MODEL = os.getenv("ASR_MODEL", "whisper-1")
ASR_FALLBACK_MODEL = os.getenv("ASR_FALLBACK_MODEL", "gemini-2.5-flash").strip() or "gemini-2.5-flash"
ASR_TIMEOUT_SECONDS = max(15, int(os.getenv("ASR_TIMEOUT_SECONDS", "45")))
@@ -200,6 +202,7 @@ _MEDIA_BIN_CACHE: dict[str, str] = {}
# OpenAI 客户端OpenAI 兼容网关,含 SKG ezlink
from openai import OpenAI
_llm_client: OpenAI | None = None
_asr_client: OpenAI | None = None
_image_client: OpenAI | None = None
def ai_http_client(timeout: float = 120) -> httpx.Client:
@@ -230,6 +233,20 @@ def llm() -> OpenAI:
_llm_client = OpenAI(**kwargs)
return _llm_client
def asr_llm() -> OpenAI:
global _asr_client
if _asr_client is None:
if not ASR_API_KEY:
raise RuntimeError("ASR_API_KEY 或 LLM_API_KEY 未配置")
kwargs = {"base_url": ASR_BASE_URL or LLM_BASE_URL or None, "api_key": ASR_API_KEY}
http_client = openai_http_client()
if http_client:
kwargs["http_client"] = http_client
_asr_client = OpenAI(**kwargs)
return _asr_client
def image_llm() -> OpenAI:
global _image_client
if _image_client is None:
@@ -2813,7 +2830,7 @@ def _transcribe_sync(wav: Path) -> list[dict]:
duration = media_duration(wav)
try:
with wav.open("rb") as f:
resp = llm().with_options(timeout=ASR_TIMEOUT_SECONDS).audio.transcriptions.create(
resp = asr_llm().with_options(timeout=ASR_TIMEOUT_SECONDS).audio.transcriptions.create(
file=(wav.name, f, "audio/wav"),
model=ASR_MODEL,
response_format="verbose_json",
@@ -3933,10 +3950,12 @@ def health() -> dict:
"llm_configured": bool(LLM_API_KEY),
"auth_configured": WEB_AUTH_CONFIGURED,
"base_url": LLM_BASE_URL or "openai-default",
"asr_base_url": ASR_BASE_URL or LLM_BASE_URL or "openai-default",
"image_base_url": IMAGE_BASE_URL or LLM_BASE_URL or "openai-default",
"voice_base_url": AZURE_OPENAI_BASE_URL,
"models": {
"asr": ASR_MODEL,
"asr_base_url": ASR_BASE_URL or LLM_BASE_URL or "openai-default",
"local_asr": LOCAL_ASR_MODEL,
"asr_fallback": ASR_FALLBACK_MODEL,
"translate": TRANSLATE_MODEL,