File size: 1,506 Bytes
2534744
 
7b64dcd
 
 
 
 
 
 
 
 
 
2988b10
7b64dcd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2534744
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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