File size: 2,576 Bytes
2e818da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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"