tahamajs/ML / Files /ThisTerm /final_project /tests /test_features.py
tahamajs's picture
download
raw
1.24 kB
import tempfile
import numpy as np
import soundfile as sf
from src.features import extract_features
from src.preprocessing import trim_silence, normalize_audio
def generate_sine_wav(path, duration=1.0, sr=22050, freq=440.0):
t = np.linspace(0, duration, int(sr * duration), endpoint=False)
x = 0.5 * np.sin(2 * np.pi * freq * t)
sf.write(path, x, sr)
def test_extract_features_returns_vector():
with tempfile.NamedTemporaryFile(suffix=".wav") as tmp:
generate_sine_wav(tmp.name)
vec, names = extract_features(tmp.name)
assert isinstance(vec, np.ndarray)
assert vec.ndim == 1
assert len(names) == len(vec)
def test_trim_and_normalize():
# Generate silent audio followed by tone and back to silence
sr = 22050
silence = np.zeros(int(0.1 * sr))
t = np.linspace(0, 0.5, int(0.5 * sr), endpoint=False)
tone = 0.5 * np.sin(2 * np.pi * 440.0 * t)
x = np.concatenate([silence, tone, silence])
with tempfile.NamedTemporaryFile(suffix=".wav") as tmp:
sf.write(tmp.name, x, sr)
trimmed = trim_silence(x, top_db=20)
assert trimmed.size > 0
norm = normalize_audio(trimmed)
assert np.max(np.abs(norm)) <= 1.0 + 1e-6

Xet Storage Details

Size:
1.24 kB
·
Xet hash:
817cd70fa1379833f4dadffd26149305db5bacd5d89301adfc7eb0992bb42d54

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.