File size: 1,847 Bytes
a14c2d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Test audio processor module."""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent))

import numpy as np
from src.data_processing.audio_processor import AudioProcessor


def test_audio_processor_init():
    """Test AudioProcessor initialization."""
    processor = AudioProcessor(sample_rate=16000)
    assert processor.sample_rate == 16000
    print("✓ AudioProcessor init test passed")


def test_normalize_audio():
    """Test audio normalization."""
    processor = AudioProcessor()
    
    audio = np.array([0.5, -0.5, 1.0, -1.0])
    normalized = processor.normalize_audio(audio)
    
    assert np.abs(normalized).max() <= 1.0
    print("✓ Normalize audio test passed")


def test_remove_silence():
    """Test silence removal."""
    processor = AudioProcessor()
    
    # Create audio with silence
    audio = np.concatenate([
        np.zeros(1000),  # silence
        np.random.randn(5000),  # speech
        np.zeros(500),  # silence
    ])
    
    cleaned = processor.remove_silence(audio, threshold_db=40)
    
    assert len(cleaned) < len(audio)
    print("✓ Remove silence test passed")


def test_prosody_extraction():
    """Test prosody feature extraction."""
    processor = AudioProcessor()
    
    # Generate synthetic audio
    duration = 1.0
    sample_rate = 16000
    t = np.linspace(0, duration, int(sample_rate * duration))
    audio = np.sin(2 * np.pi * 200 * t) * 0.5  # 200Hz tone
    
    prosody = processor.extract_prosody_features(audio)
    
    assert "mean_pitch" in prosody
    assert "mean_energy" in prosody
    print("✓ Prosody extraction test passed")


if __name__ == "__main__":
    test_audio_processor_init()
    test_normalize_audio()
    test_remove_silence()
    test_prosody_extraction()
    print("\n✅ All audio processor tests passed!")