File size: 644 Bytes
d06903c
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
from __future__ import annotations

def evaluate_long_silence(events:list[dict], threshold_ms:float=5000.0)->dict[str,float]:
    gaps=[e for e in events if float(e.get("silence_ms",0))>=threshold_ms]
    if not gaps:
        return {"long_silence_state_retention":1.0,"long_silence_speaker_retention":1.0,"long_silence_continuity":1.0}
    state=sum(bool(e.get("state_preserved")) for e in gaps)/len(gaps)
    speaker=sum(bool(e.get("speaker_preserved")) for e in gaps)/len(gaps)
    return {"long_silence_state_retention":round(state,6),"long_silence_speaker_retention":round(speaker,6),"long_silence_continuity":round(min(state,speaker),6)}