Mercurial
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 274:c9be578316a6 | 275:78699f810817 |
|---|---|
| 1 import unittest | |
| 2 | |
| 3 import numpy as np | |
| 4 | |
| 5 from dictation.audio import AudioEventKind, AudioSegmenter | |
| 6 | |
| 7 | |
| 8 class AudioSegmenterTest(unittest.TestCase): | |
| 9 def test_emits_partial_and_final_events(self): | |
| 10 segmenter = AudioSegmenter( | |
| 11 sample_rate=1000, | |
| 12 speech_threshold=0.01, | |
| 13 silence_ms=200, | |
| 14 partial_interval_ms=500, | |
| 15 max_utterance_seconds=5, | |
| 16 pre_roll_ms=100, | |
| 17 ) | |
| 18 silence = np.zeros(100, dtype=np.float32) | |
| 19 speech = np.full(250, 0.2, dtype=np.float32) | |
| 20 | |
| 21 self.assertEqual(segmenter.feed(silence), []) | |
| 22 events = segmenter.feed(speech) | |
| 23 self.assertEqual(events[0].kind, AudioEventKind.SPEECH_STARTED) | |
| 24 events = segmenter.feed(speech) | |
| 25 self.assertIn(AudioEventKind.PARTIAL_READY, [event.kind for event in events]) | |
| 26 events = segmenter.feed(np.zeros(200, dtype=np.float32)) | |
| 27 self.assertEqual(events[-1].kind, AudioEventKind.FINAL_READY) | |
| 28 self.assertFalse(segmenter.speaking) | |
| 29 | |
| 30 def test_max_duration_bounds_utterance(self): | |
| 31 segmenter = AudioSegmenter( | |
| 32 sample_rate=100, | |
| 33 speech_threshold=0.01, | |
| 34 silence_ms=500, | |
| 35 partial_interval_ms=10000, | |
| 36 max_utterance_seconds=3, | |
| 37 pre_roll_ms=0, | |
| 38 ) | |
| 39 events = [] | |
| 40 for _ in range(3): | |
| 41 events.extend( | |
| 42 segmenter.feed(np.full(100, 0.2, dtype=np.float32)) | |
| 43 ) | |
| 44 final = [event for event in events if event.kind == AudioEventKind.FINAL_READY] | |
| 45 self.assertEqual(len(final), 1) | |
| 46 self.assertLessEqual(final[0].samples.size, 300) | |
| 47 | |
| 48 | |
| 49 if __name__ == "__main__": | |
| 50 unittest.main() |