update
This commit is contained in:
66
schemas/stream.py
Normal file
66
schemas/stream.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, ValidationError, field_validator
|
||||
from pydantic import model_validator
|
||||
|
||||
|
||||
class StreamWordsModel(BaseModel):
|
||||
text: str
|
||||
start_time: float
|
||||
end_time: float
|
||||
|
||||
@model_validator(mode="after")
|
||||
def check_result(self):
|
||||
if self.end_time < self.start_time:
|
||||
raise ValidationError("end-time 小于 start-time, error")
|
||||
return self
|
||||
|
||||
|
||||
class StreamDataModel(BaseModel):
|
||||
text: str
|
||||
language: str
|
||||
final_result: bool
|
||||
para_seq: int
|
||||
start_time: float
|
||||
end_time: float
|
||||
words: List[StreamWordsModel]
|
||||
|
||||
@model_validator(mode="after")
|
||||
def check_result(self):
|
||||
if self.end_time < self.start_time:
|
||||
raise ValidationError("end-time 小于 start-time, error")
|
||||
return self
|
||||
|
||||
|
||||
class StreamResultModel(BaseModel):
|
||||
asr_results: StreamDataModel
|
||||
|
||||
@field_validator('asr_results', mode="after")
|
||||
def convert_to_seconds(cls, v: StreamDataModel, values):
|
||||
# 在这里处理除以1000的逻辑
|
||||
v.end_time = v.end_time / 1000
|
||||
v.start_time = v.start_time / 1000
|
||||
for word in v.words:
|
||||
word.start_time /= 1000
|
||||
word.end_time /= 1000
|
||||
return v
|
||||
|
||||
class Config:
|
||||
validate_assignment = True
|
||||
|
||||
|
||||
class NonStreamDataModel(BaseModel):
|
||||
text: str
|
||||
para_seq: int
|
||||
start_time: float
|
||||
end_time: float
|
||||
|
||||
@model_validator(mode="after")
|
||||
def check_result(self):
|
||||
if self.end_time < self.start_time:
|
||||
raise ValidationError("end-time 小于 start-time, error")
|
||||
return self
|
||||
|
||||
|
||||
class NonStreamResultModel(BaseModel):
|
||||
contents: List[NonStreamDataModel]
|
||||
Reference in New Issue
Block a user