This commit is contained in:
2026-09-17 01:16:30 +03:00
parent 018be076b9
commit 063f89758f
8 changed files with 389 additions and 840 deletions

31
main.py
View File

@@ -12,7 +12,9 @@ from typing import Callable
import torch
from asr import Asr, AsrRawResult
from asr_filter import AsrFilter
from asr_filter import AsrFilter, AsrFilterResult
from asr_eventizer import AsrEventizer
from windowizer import Windowizer
from agent import Agent
from utils import ffmpeg_split_video, ffmpeg_to_mp3
@@ -138,13 +140,36 @@ def on_asr_filter(current_step: Step, input_data: dict | None) -> tuple[Step | N
return (Step.ASR_EVENTS, json.load(f))
# bad request
if input_data is None:
logging.error("Can'f filter raw ASR ouput without input_data")
logging.error("Can't filter raw ASR output without input_data")
return (None, None)
logging.info("Filtering raw ASR output...")
filter = AsrFilter()
result = filter.filter(AsrRawResult(**input_data))
return (Step.ASR_EVENTS, result.model_dump(mode="json"))
def on_asr_events(current_step: Step, input_data: dict | None) -> tuple[Step | None, dict | None]:
# do not filter if output file exists
if os.path.isfile(WORKFLOW_DATA[current_step][0]):
logging.info("Skipping ASR eventizing")
with open(WORKFLOW_DATA[current_step][0], "rb") as f:
return (Step.VIDEO_REFERENCES, json.load(f))
# bad request
if input_data is None:
logging.error("Can't create audio events without input_data")
return (None, None)
logging.info("Creating the agent")
agent = Agent(
model=ARGS.ai_model,
base_url=ARGS.ai_base_url,
api_key=ARGS.ai_api_key
)
logging.info("Creating the windowizer")
windowizer = Windowizer()
logging.info("Creating audio events...")
eventizer = AsrEventizer(agent, windowizer)
result = eventizer.eventize(AsrFilterResult(**input_data))
return (Step.VIDEO_REFERENCES, result.model_dump(mode="json"))
#
# Main
#
@@ -152,7 +177,7 @@ WORKFLOW_DATA: dict[Step, tuple[str, Callable[[Step, dict | None], tuple[Step |
Step.MEDIA_SEPARATION: ("audio.mp3", on_media_separation),
Step.VOICE_RECOGNITION: ("asr_raw.json", on_voice_recognition),
Step.ASR_FILTER: ("asr.json", on_asr_filter),
Step.ASR_EVENTS: ("audio_events.json", None),
Step.ASR_EVENTS: ("audio_events.json", on_asr_events),
Step.VIDEO_REFERENCES: ("unresolved.json", None),
Step.REFERENCE_RESOLVER: ("events.json", None),
Step.STRUCTURE_BUILDER: ("structure.json", None),