Spaces:
Running
Running
| from __future__ import annotations | |
| import contextlib | |
| import sys | |
| import tempfile | |
| import unittest | |
| import wave | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) | |
| from carepath.services.audio import normalize_audio | |
| class AudioTests(unittest.TestCase): | |
| def test_stdlib_fallback_converts_stereo_pcm16_to_mono(self) -> None: | |
| with tempfile.TemporaryDirectory() as temp_dir: | |
| input_path = Path(temp_dir) / "input.wav" | |
| output_path = Path(temp_dir) / "output.wav" | |
| with contextlib.closing(wave.open(str(input_path), "wb")) as writer: | |
| writer.setnchannels(2) | |
| writer.setsampwidth(2) | |
| writer.setframerate(16000) | |
| frames = bytearray() | |
| for _ in range(8): | |
| frames.extend((1000).to_bytes(2, "little", signed=True)) | |
| frames.extend((3000).to_bytes(2, "little", signed=True)) | |
| writer.writeframes(bytes(frames)) | |
| normalize_audio(input_path, output_path) | |
| with contextlib.closing(wave.open(str(output_path), "rb")) as reader: | |
| self.assertEqual(reader.getnchannels(), 1) | |
| self.assertEqual(reader.getsampwidth(), 2) | |
| self.assertEqual(reader.getframerate(), 16000) | |
| first_sample = int.from_bytes(reader.readframes(1), "little", signed=True) | |
| self.assertEqual(first_sample, 2000) | |
| if __name__ == "__main__": | |
| unittest.main() | |