# -*- coding: utf-8 -*- from typing import List, Dict, Union from pydantic import BaseModel from digitalHuman.server.reponse import BaseResponse from digitalHuman.protocol import * class EngineListResp(BaseResponse): data: List[EngineDesc] = [] class EngineDefaultResp(BaseResponse): data: EngineDesc class EngineParam(BaseResponse): data: List[ParamDesc] = [] class EngineInput(BaseModel): engine: str = 'default' config: Dict = {} data: Union[str, bytes] = "" class AgentEngineInput(EngineInput): conversation_id: str = "" class ASREngineInput(EngineInput, AudioMessage): pass class ASREngineOutput(BaseResponse): data: str class VoiceListResp(BaseResponse): data: List[VoiceDesc] = [] class TTSEngineInput(EngineInput): pass class TTSEngineOutput(BaseResponse, AudioMessage): pass class LLMEngineInput(EngineInput): pass class ConversationInput(BaseModel): data: Dict = {} class ConversationIdResp(BaseResponse): data: str # ========================= 人脸检测模型 =========================== class FaceBBox(BaseModel): """人脸边界框""" x1: float y1: float x2: float y2: float class FaceInfo(BaseModel): """人脸信息""" bbox: FaceBBox confidence: float landmarks: List[List[float]] = [] # 5点或106点关键点 class FaceDetectionOutput(BaseResponse): """人脸检测输出""" data: Dict # {"hasFace": bool, "faceCount": int, "faces": List[FaceInfo]}