Spaces:
Running
Running
File size: 1,135 Bytes
330f477 | 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 | from pathlib import Path
import wave
import numpy as np
import pytest
from openmusic_analysis.audio.decoder import AudioDecoder
from openmusic_analysis.errors import AudioDecodeError
def test_decoder_rejects_invalid_audio(tmp_path: Path):
source = tmp_path / "invalid.mp3"
source.write_bytes(b"not an audio file")
with pytest.raises(AudioDecodeError):
AudioDecoder(timeout_seconds=5).decode(source)
def test_decoder_produces_canonical_mono_float32_pcm(tmp_path: Path):
source = tmp_path / "valid.wav"
samples = (np.sin(np.linspace(0, 10, 8_000)) * 20_000).astype("<i2")
with wave.open(str(source), "wb") as output:
output.setnchannels(1)
output.setsampwidth(2)
output.setframerate(8_000)
output.writeframes(samples.tobytes())
decoded = AudioDecoder(canonical_sample_rate=16_000, timeout_seconds=5).decode(source)
assert decoded.sample_rate == 16_000
assert decoded.waveform.dtype == np.float32
assert decoded.waveform.ndim == 1
assert decoded.waveform.size == pytest.approx(16_000, abs=2)
assert decoded.metadata.source_sample_rate == 8_000
|