47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
from dataclasses import dataclass
|
|
from asr import AsrRawResult
|
|
from pydantic import BaseModel
|
|
|
|
class AsrFilterSegment(BaseModel):
|
|
"""Recognized audio segment after cleanup."""
|
|
|
|
id: int
|
|
"""Segment ID, unique within AsrResult"""
|
|
|
|
start: float
|
|
"""Segment start time"""
|
|
|
|
end: float
|
|
"""Segment end time"""
|
|
|
|
text: str
|
|
"""Segment text after cleanup"""
|
|
|
|
class AsrFilterResult(BaseModel):
|
|
"""Result of AsrFilter"""
|
|
|
|
segments: list[AsrFilterSegment]
|
|
"""List of produced segments"""
|
|
|
|
class AsrFilter:
|
|
"""This class performs filtering of raw ASR segments and produces events."""
|
|
|
|
def __init__(self) -> None:
|
|
pass
|
|
|
|
def filter(self, asr_raw_result: AsrRawResult) -> AsrFilterResult:
|
|
"""Filters raw ASR segments."""
|
|
result = AsrFilterResult(
|
|
segments=[]
|
|
)
|
|
i = 0
|
|
for orig in asr_raw_result.segments:
|
|
s = AsrFilterSegment(
|
|
id=i,
|
|
start=orig.start,
|
|
end=orig.end,
|
|
text=orig.text.strip()
|
|
)
|
|
i += 1
|
|
result.segments.append(s)
|
|
return result |