study-buddy / tests /test_pause_detection_service.py
GitHub Actions
deploy b3d187d69e5df10bb2ec396e89f539f853465a06
14184e3
Raw
History Blame Contribute Delete
2.58 kB
from app.services.pause_detection_service import (
MIN_PAUSE_MS,
Pause,
PauseDetectionService,
_pause_symbol,
)
from app.services.transcription_service import STTSegment
def test_pause_symbol_bands_are_conservative():
assert _pause_symbol(MIN_PAUSE_MS - 0.1) is None
assert _pause_symbol(MIN_PAUSE_MS) == "..."
assert _pause_symbol(1799.9) == "..."
assert _pause_symbol(1800.0) == "......"
assert _pause_symbol(2999.9) == "......"
assert _pause_symbol(3000.0) == "........."
def test_single_segment_ignores_short_internal_pause():
service = PauseDetectionService.__new__(PauseDetectionService)
transcript = "Hello there"
segments = [STTSegment(text=transcript, start_ms=0.0, end_ms=2000.0)]
pauses = [
Pause(
start_ms=500.0,
end_ms=1300.0,
duration_ms=800.0,
symbol="...",
)
]
result = service.build_pause_text(transcript, segments, pauses)
assert result.pause_text == transcript
assert result.inserted_pause_count == 0
assert result.insertion_strategy == "none"
def test_single_segment_inserts_only_when_pause_is_long_enough():
service = PauseDetectionService.__new__(PauseDetectionService)
transcript = "Hello there"
segments = [STTSegment(text=transcript, start_ms=0.0, end_ms=2000.0)]
pauses = [
Pause(
start_ms=500.0,
end_ms=1900.0,
duration_ms=1400.0,
symbol="...",
)
]
result = service.build_pause_text(transcript, segments, pauses)
assert result.pause_text == "Hello... there"
assert result.inserted_pause_count == 1
assert result.insertion_strategy == "single_segment"
def test_multi_segment_inserts_only_between_segments():
service = PauseDetectionService.__new__(PauseDetectionService)
transcript = "Hello there world"
segments = [
STTSegment(text="Hello there", start_ms=0.0, end_ms=1500.0),
STTSegment(text="world", start_ms=3000.0, end_ms=3600.0),
]
pauses = [
Pause(
start_ms=400.0,
end_ms=1400.0,
duration_ms=1000.0,
symbol="...",
),
Pause(
start_ms=1500.0,
end_ms=3000.0,
duration_ms=1500.0,
symbol="...",
),
]
result = service.build_pause_text(transcript, segments, pauses)
assert result.pause_text == "Hello there... world"
assert result.inserted_pause_count == 1
assert result.insertion_strategy == "segment_boundary"