Files
enginex-bi_series-vc-cnn/schemas/stream.py
zhousha 55a67e817e update
2025-08-06 15:38:55 +08:00

67 lines
1.6 KiB
Python

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]