Transcribe during recording with recoverable chunks and microphone activity icon

This commit is contained in:
2026-09-07 21:52:50 -04:00
parent 82bc350521
commit f30fbdfce8
13 changed files with 2277 additions and 35 deletions
+54
View File
@@ -0,0 +1,54 @@
"""Exercise real audio/session integration with deterministic provider responses."""
import tempfile
import threading
import unittest
import numpy as np
from blurt_client import TranscriptionConfig
from blurt_session import RecordingSession, TranscriptionScheduler
class PipelineTests(unittest.TestCase):
def test_real_audio_uploads_before_stop_and_seals_final_speech(self):
with tempfile.TemporaryDirectory() as directory:
requested = threading.Event()
calls = []
completions = []
def transcribe(audio, config):
calls.append((len(audio), config))
requested.set()
return f"phrase {len(calls)}"
scheduler = TranscriptionScheduler(transcribe)
config = TranscriptionConfig("test", "en", "openai", "fake")
session = RecordingSession(48000, 1, config, directory, scheduler,
on_complete=completions.append)
try:
tone = (0.05 * np.sin(2 * np.pi * 220 * np.arange(48000) / 48000)).astype(np.float32)
for _ in range(9):
self.assertTrue(session.feed(tone[:, None]))
for _ in range(2):
self.assertTrue(session.feed(np.zeros((48000, 1), dtype=np.float32)))
self.assertTrue(requested.wait(5), "real pause detector did not upload during capture")
self.assertIsNone(session.result)
self.assertEqual(completions, [])
self.assertTrue(session.feed(tone[:, None]))
session.stop()
result = session.join(5)
self.assertIsNotNone(result)
self.assertTrue(result.complete, result.errors)
self.assertEqual(result.text, "phrase 1 phrase 2")
self.assertEqual(sum(length for length, _ in calls), 12 * 16000)
self.assertTrue(all(snapshot is config for _, snapshot in calls))
session.acknowledge_delivery()
self.assertFalse(session.path.exists())
finally:
session.stop()
session.join(5)
scheduler.shutdown()
if __name__ == "__main__":
unittest.main()