[低延迟端点]:完成首句保留和快速结束修正,包含ACK缓冲策略、批量读帧和主说话人端点回归测试
This commit is contained in:
@@ -287,6 +287,7 @@ class VadRecorder:
|
||||
@dataclass(slots=True)
|
||||
class PrimarySpeakerVadRecorder(VadRecorder):
|
||||
speaker_profile_ms: int = 600
|
||||
speaker_profile_min_ms: int = 120
|
||||
speaker_absent_ms: int = 300
|
||||
similarity_threshold: float = 0.70
|
||||
min_rms: float = 0.012
|
||||
@@ -336,7 +337,7 @@ class PrimarySpeakerVadRecorder(VadRecorder):
|
||||
self.primary_absent_ms = 0
|
||||
else:
|
||||
self.primary_absent_ms += frame_ms
|
||||
if self.primary_absent_ms >= self.speaker_absent_ms and duration >= self.min_duration_ms:
|
||||
if self.primary_absent_ms >= self.speaker_absent_ms:
|
||||
return self._build_segment("primary_speaker_absent")
|
||||
if result.silence_ms >= self.end_silence_ms and duration >= self.min_duration_ms:
|
||||
return self._build_segment("silence")
|
||||
@@ -365,7 +366,7 @@ class PrimarySpeakerVadRecorder(VadRecorder):
|
||||
self.profile.vector = tuple(averaged)
|
||||
|
||||
def _profile_ready(self) -> bool:
|
||||
minimum_ms = min(self.speaker_profile_ms, max(120, self.min_duration_ms))
|
||||
minimum_ms = min(self.speaker_profile_ms, self.speaker_profile_min_ms)
|
||||
return self.profile.speech_ms >= minimum_ms and (
|
||||
self.profile.speaker_id is not None or self.profile.vector is not None
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user