| from enum import Enum | |
| import numpy as np | |
| from pydantic import BaseModel, Field | |
| class VoiceTask(BaseModel): | |
| """语音任务模型""" | |
| id: str | |
| session_id: str = Field(default="") | |
| language: str = Field(default="zh") | |
| is_speaking_over_threshold: bool = Field(default=False) | |
| is_over_audio_frames_threshold: bool = Field(default=False) | |
| user_voice: np.array = Field(default=np.array([])) | |
| send_time: float = Field(default=0) | |
| whisper_start_time: float = Field(default=0) | |
| whisper_end_time: float = Field(default=0) | |
| llm_start_time: float = Field(default=0) | |
| llm_end_time: float = Field(default=0) | |
| tts_start_time: float = Field(default=0) | |
| tts_end_time: float = Field(default=0) | |
| transcribed_text: str = Field(default="") | |
| answer_id: str = Field(default="") | |
| answer_index: int = Field(default=0) | |
| answer_sentence: str = Field(default="") | |
| tts_generated_sentence_audio: tuple = Field(default=()) | |
| class Config: | |
| arbitrary_types_allowed = True | |
| class DisplayMessageType(str, Enum): | |
| QUESTION = 'question' | |
| ANSWER = 'answer' | |
| class BaseDisplayMessage(BaseModel): | |
| message_type: DisplayMessageType | |
| session_id: str | |
| task_id: str | |
| class QuestionDisplayMessage(BaseDisplayMessage): | |
| message_type: DisplayMessageType = DisplayMessageType.QUESTION | |
| question: str | |
| class AnswerDisplayMessage(BaseDisplayMessage): | |
| message_type: DisplayMessageType = DisplayMessageType.ANSWER | |
| answer_index: int | |
| answer: str | |