feat: audio module — sounddevice recorder with WAV export
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import numpy as np
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
|
||||
def test_recorder_starts_and_stops():
|
||||
from audio import AudioRecorder
|
||||
with patch("sounddevice.InputStream") as MockStream:
|
||||
mock_stream = MagicMock()
|
||||
MockStream.return_value.start = MagicMock()
|
||||
MockStream.return_value.stop = MagicMock()
|
||||
MockStream.return_value.close = MagicMock()
|
||||
recorder = AudioRecorder(sample_rate=16000)
|
||||
assert not recorder.is_recording
|
||||
recorder._stream = MockStream.return_value
|
||||
recorder.is_recording = True
|
||||
recorder.stop()
|
||||
assert not recorder.is_recording
|
||||
|
||||
|
||||
def test_recorder_save_wav(tmp_path):
|
||||
import wave
|
||||
from audio import AudioRecorder
|
||||
recorder = AudioRecorder(sample_rate=16000)
|
||||
recorder._buffer = [np.zeros(1600, dtype=np.int16)]
|
||||
out = str(tmp_path / "test.wav")
|
||||
recorder.save_wav(out)
|
||||
with wave.open(out) as wf:
|
||||
assert wf.getframerate() == 16000
|
||||
assert wf.getnchannels() == 1
|
||||
Reference in New Issue
Block a user