"""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!")