Mercurial
diff dictation/audio_test.py @ 275:78699f810817
Add Qwen3-VL and WebRTC dictation services
Add Bazel targets for the CUDA-backed Qwen3-VL server and a local WebRTC faster-whisper dictation service.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: e3d8cb06-6c95-4ae0-9757-651d3796ab00
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 10:58:47 -0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dictation/audio_test.py Mon Aug 17 10:58:47 2026 -0700 @@ -0,0 +1,50 @@ +import unittest + +import numpy as np + +from dictation.audio import AudioEventKind, AudioSegmenter + + +class AudioSegmenterTest(unittest.TestCase): + def test_emits_partial_and_final_events(self): + segmenter = AudioSegmenter( + sample_rate=1000, + speech_threshold=0.01, + silence_ms=200, + partial_interval_ms=500, + max_utterance_seconds=5, + pre_roll_ms=100, + ) + silence = np.zeros(100, dtype=np.float32) + speech = np.full(250, 0.2, dtype=np.float32) + + self.assertEqual(segmenter.feed(silence), []) + events = segmenter.feed(speech) + self.assertEqual(events[0].kind, AudioEventKind.SPEECH_STARTED) + events = segmenter.feed(speech) + self.assertIn(AudioEventKind.PARTIAL_READY, [event.kind for event in events]) + events = segmenter.feed(np.zeros(200, dtype=np.float32)) + self.assertEqual(events[-1].kind, AudioEventKind.FINAL_READY) + self.assertFalse(segmenter.speaking) + + def test_max_duration_bounds_utterance(self): + segmenter = AudioSegmenter( + sample_rate=100, + speech_threshold=0.01, + silence_ms=500, + partial_interval_ms=10000, + max_utterance_seconds=3, + pre_roll_ms=0, + ) + events = [] + for _ in range(3): + events.extend( + segmenter.feed(np.full(100, 0.2, dtype=np.float32)) + ) + final = [event for event in events if event.kind == AudioEventKind.FINAL_READY] + self.assertEqual(len(final), 1) + self.assertLessEqual(final[0].samples.size, 300) + + +if __name__ == "__main__": + unittest.main()