Voice library support dashscope

This commit is contained in:
Xin Wang
2026-02-26 03:54:52 +08:00
parent b193f91432
commit f77f7c7531
11 changed files with 684 additions and 26 deletions

View File

@@ -34,6 +34,12 @@ def _is_openai_compatible_vendor(vendor: Optional[str]) -> bool:
}
def _is_dashscope_vendor(vendor: Optional[str]) -> bool:
return (vendor or "").strip().lower() in {
"dashscope",
}
def _normalize_openai_compatible_voice_key(voice_value: str, model: str) -> str:
raw = (voice_value or "").strip()
model_name = (model or "").strip() or OPENAI_COMPATIBLE_DEFAULT_MODEL
@@ -121,7 +127,12 @@ def _resolve_runtime_metadata(db: Session, assistant: Assistant) -> tuple[Dict[s
elif assistant.voice:
voice = db.query(Voice).filter(Voice.id == assistant.voice).first()
if voice:
tts_provider = "openai_compatible" if _is_openai_compatible_vendor(voice.vendor) else "edge"
if _is_dashscope_vendor(voice.vendor):
tts_provider = "dashscope"
elif _is_openai_compatible_vendor(voice.vendor):
tts_provider = "openai_compatible"
else:
tts_provider = "edge"
model = voice.model
runtime_voice = voice.voice_key or voice.id
if tts_provider == "openai_compatible":
@@ -131,8 +142,8 @@ def _resolve_runtime_metadata(db: Session, assistant: Assistant) -> tuple[Dict[s
"enabled": True,
"provider": tts_provider,
"model": model,
"apiKey": voice.api_key if tts_provider == "openai_compatible" else None,
"baseUrl": voice.base_url if tts_provider == "openai_compatible" else None,
"apiKey": voice.api_key if tts_provider in {"openai_compatible", "dashscope"} else None,
"baseUrl": voice.base_url if tts_provider in {"openai_compatible", "dashscope"} else None,
"voice": runtime_voice,
"speed": assistant.speed or voice.speed,
}