|
1 | 1 | import base64 |
2 | 2 | import json |
3 | 3 | import queue |
| 4 | +import struct |
4 | 5 | import threading |
5 | 6 | from unittest.mock import MagicMock, Mock, patch |
6 | 7 |
|
@@ -146,7 +147,7 @@ def collect_data(): |
146 | 147 | audio_stream._buff.put(None) |
147 | 148 |
|
148 | 149 | assert len(collected_chunks) > 0 |
149 | | - assert all(isinstance(data, dict) for data in collected_chunks) |
| 150 | + assert all(isinstance(data, bytes) for data in collected_chunks) |
150 | 151 |
|
151 | 152 |
|
152 | 153 | def test_stop(audio_stream, mock_pyaudio): |
@@ -182,16 +183,17 @@ def test_callback(data): |
182 | 183 | # Process one chunk through generator |
183 | 184 | next(stream.generator()) |
184 | 185 |
|
185 | | - # Verify callback was called with correct data |
186 | | - assert callback_data == json.dumps( |
187 | | - { |
188 | | - "audio": base64.b64encode(test_data).decode("utf-8"), |
189 | | - "rate": 16000, |
190 | | - "language_code": "en-US", |
191 | | - "alternative_language_codes": [], |
192 | | - "timestamp": fixed_time, |
193 | | - } |
194 | | - ) |
| 186 | + # Verify callback was called with binary header format |
| 187 | + assert isinstance(callback_data, bytes) |
| 188 | + header_len = struct.unpack(">I", callback_data[:4])[0] |
| 189 | + header = json.loads(callback_data[4 : 4 + header_len]) |
| 190 | + audio = callback_data[4 + header_len :] |
| 191 | + |
| 192 | + assert header["rate"] == 16000 |
| 193 | + assert header["language_code"] == "en-US" |
| 194 | + assert header["alternative_language_codes"] == [] |
| 195 | + assert header["timestamp"] == int(fixed_time * 1000) |
| 196 | + assert audio == test_data |
195 | 197 |
|
196 | 198 | stream.stop() |
197 | 199 |
|
@@ -258,10 +260,15 @@ def test_generator_with_alternative_languages(mock_pyaudio): |
258 | 260 |
|
259 | 261 | generated = next(stream.generator()) |
260 | 262 |
|
261 | | - assert generated["language_code"] == "en-GB" |
262 | | - assert generated["alternative_language_codes"] == alt_langs |
263 | | - assert generated["audio"] == base64.b64encode(test_data).decode("utf-8") |
264 | | - assert generated["rate"] == 16000 |
| 263 | + assert isinstance(generated, bytes) |
| 264 | + header_len = struct.unpack(">I", generated[:4])[0] |
| 265 | + header = json.loads(generated[4 : 4 + header_len]) |
| 266 | + audio = generated[4 + header_len :] |
| 267 | + |
| 268 | + assert header["language_code"] == "en-GB" |
| 269 | + assert header["alternative_language_codes"] == alt_langs |
| 270 | + assert header["rate"] == 16000 |
| 271 | + assert audio == test_data |
265 | 272 |
|
266 | 273 | stream.stop() |
267 | 274 |
|
@@ -318,15 +325,15 @@ def test_callback(data): |
318 | 325 |
|
319 | 326 | next(stream.generator()) |
320 | 327 |
|
321 | | - expected_data = json.dumps( |
322 | | - { |
323 | | - "audio": base64.b64encode(test_data).decode("utf-8"), |
324 | | - "rate": 16000, |
325 | | - "language_code": "es-MX", |
326 | | - "alternative_language_codes": alt_langs, |
327 | | - "timestamp": fixed_time, |
328 | | - } |
329 | | - ) |
330 | | - assert callback_data == expected_data |
| 328 | + assert isinstance(callback_data, bytes) |
| 329 | + header_len = struct.unpack(">I", callback_data[:4])[0] |
| 330 | + header = json.loads(callback_data[4 : 4 + header_len]) |
| 331 | + audio = callback_data[4 + header_len :] |
| 332 | + |
| 333 | + assert header["rate"] == 16000 |
| 334 | + assert header["language_code"] == "es-MX" |
| 335 | + assert header["alternative_language_codes"] == alt_langs |
| 336 | + assert header["timestamp"] == int(fixed_time * 1000) |
| 337 | + assert audio == test_data |
331 | 338 |
|
332 | 339 | stream.stop() |
0 commit comments