feat: add DashScope custom voice enrollment flow

This commit is contained in:
Xin Wang
2026-10-28 17:04:23 +08:00
parent 802d8e2adf
commit 1eda4190db
6 changed files with 183 additions and 0 deletions
+14
View File
@@ -20,6 +20,7 @@ from schemas import (
ModelResourceUpsert,
)
from services.auth import require_admin
from services.dashscope_voice import VoiceRequest, manage_voice
from services.interface_catalog import validate_fields
from services.masking import mask_secrets, merge_secrets
from services.model_resource_tester import test_model_resource
@@ -377,3 +378,16 @@ async def delete_model_resource(
await session.delete(row)
await session.commit()
return {"ok": True}
@router.post("/model-resources/dashscope/voice")
async def manage_dashscope_voice(request: VoiceRequest, session: AsyncSession = Depends(get_session)):
"""Create/query a voice using draft settings and server-held credentials."""
stored = {}
if request.resource_id:
row = await session.get(ModelResource, request.resource_id)
if not row or row.interface_type != "dashscope-tts":
raise HTTPException(404, "百炼 TTS 模型资源不存在")
stored = row.secrets or {}
key = merge_secrets({"apiKey": request.api_key}, stored).get("apiKey", "")
return await manage_voice(request, key)