myanmar-ghost / test_audio_processor.py
amkyawdev's picture
Add tests
a14c2d1 verified
Raw
History Blame Contribute Delete
1.85 kB
"""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!")