fix: comprehensive fixes for ingestion and TKG
1. Add Redis PipelineProgress cleanup in unregister_internal - Deletes progress key when file is unregistered 2. Fix ingestion_complete asr_status query - Query ASRX first, then ASR - Filter out NULL values to avoid false negatives 3. Fix TKG 0 nodes/edges support - TKG is considered done if face traces are complete - TKG may create 0 nodes/edges for videos with minimal content 4. Add ASRX fallback to ASR segments - When ASRX has 0 segments but ASR has segments, use ASR segments - Ensures at least one ASRX output when ASR has content
This commit is contained in:
@@ -160,6 +160,41 @@ def _convert_result(result, output_path):
|
||||
pass
|
||||
|
||||
segment_count = len(result.get("segments", []))
|
||||
|
||||
# Fallback: if ASRX has 0 segments but ASR has segments, use ASR segments
|
||||
if segment_count == 0:
|
||||
asr_path = output_path.replace(".asrx.json", ".asr.json")
|
||||
if os.path.exists(asr_path):
|
||||
try:
|
||||
with open(asr_path) as f:
|
||||
asr_data = json.load(f)
|
||||
asr_segments = asr_data.get("segments", [])
|
||||
if asr_segments:
|
||||
print(f"[ASRX] ASRX has 0 segments, falling back to {len(asr_segments)} ASR segments", file=sys.stderr)
|
||||
# Convert ASR segments to ASRX format
|
||||
converted_segments = []
|
||||
for seg in asr_segments:
|
||||
start_time = seg.get("start_time", seg.get("start", 0))
|
||||
end_time = seg.get("end_time", seg.get("end", 0))
|
||||
start_frame = int(start_time * fps)
|
||||
end_frame = int(end_time * fps)
|
||||
converted_segments.append({
|
||||
"start_time": start_time,
|
||||
"end_time": end_time,
|
||||
"start_frame": start_frame,
|
||||
"end_frame": end_frame,
|
||||
"text": seg.get("text", ""),
|
||||
"speaker_id": "SPEAKER_0",
|
||||
"language": "",
|
||||
"lang_prob": 0.0,
|
||||
"quality": 0.0,
|
||||
})
|
||||
result["segments"] = converted_segments
|
||||
segment_count = len(converted_segments)
|
||||
result["status"] = "has_transcript"
|
||||
except Exception as e:
|
||||
print(f"[ASRX] Failed to load ASR fallback: {e}", file=sys.stderr)
|
||||
|
||||
if segment_count > 0:
|
||||
status = "has_transcript"
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user