Skip to content

Commit 614b395

Browse files
Add segments debug logging (#294)
1 parent 40b0236 commit 614b395

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

buzz/transcriber.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ def start(self, model_path: str):
126126
self.is_running = True
127127
try:
128128
with sounddevice.InputStream(samplerate=self.sample_rate,
129-
device=self.input_device_index, dtype="float32",
130-
channels=1, callback=self.stream_callback):
129+
device=self.input_device_index, dtype="float32",
130+
channels=1, callback=self.stream_callback):
131131
while self.is_running:
132132
self.mutex.acquire()
133133
if self.queue.size >= self.n_batch_samples:
@@ -136,7 +136,7 @@ def start(self, model_path: str):
136136
self.mutex.release()
137137

138138
logging.debug('Processing next frame, sample size = %s, queue size = %s, amplitude = %s',
139-
samples.size, self.queue.size, self.amplitude(samples))
139+
samples.size, self.queue.size, self.amplitude(samples))
140140
time_started = datetime.datetime.now()
141141

142142
if self.transcription_options.model.model_type == ModelType.WHISPER:
@@ -157,17 +157,17 @@ def start(self, model_path: str):
157157
else:
158158
assert isinstance(model, TransformersWhisper)
159159
result = model.transcribe(audio=samples,
160-
language=self.transcription_options.language
161-
if self.transcription_options.language is not None else 'en',
162-
task=self.transcription_options.task.value)
160+
language=self.transcription_options.language
161+
if self.transcription_options.language is not None else 'en',
162+
task=self.transcription_options.task.value)
163163

164164
next_text: str = result.get('text')
165165

166166
# Update initial prompt between successive recording chunks
167167
initial_prompt += next_text
168168

169169
logging.debug('Received next result, length = %s, time taken = %s',
170-
len(next_text), datetime.datetime.now() - time_started)
170+
len(next_text), datetime.datetime.now() - time_started)
171171
self.transcription.emit(next_text)
172172
else:
173173
self.mutex.release()
@@ -367,19 +367,16 @@ def run(self):
367367

368368
self.current_process.join()
369369

370-
logging.debug(
371-
'whisper process completed with code = %s, time taken = %s',
372-
self.current_process.exitcode, datetime.datetime.now() - time_started)
373-
374370
if self.current_process.exitcode != 0:
375371
send_pipe.close()
376372

377373
self.read_line_thread.join()
378374

379-
# TODO: fix error handling when process crashes
380-
if self.current_process.exitcode != 0 and self.current_process.exitcode is not None:
381-
self.completed.emit([])
375+
logging.debug(
376+
'whisper process completed with code = %s, time taken = %s, number of segments = %s',
377+
self.current_process.exitcode, datetime.datetime.now() - time_started, len(self.segments))
382378

379+
self.completed.emit(self.segments)
383380
self.running = False
384381

385382
def stop(self):
@@ -403,9 +400,7 @@ def read_line(self, pipe: Connection):
403400
end=segment.get('end'),
404401
text=segment.get('text'),
405402
) for segment in segments_dict]
406-
self.current_process.join()
407-
# TODO: move this back to the parent thread
408-
self.completed.emit(segments)
403+
self.segments = segments
409404
else:
410405
try:
411406
progress = int(line.split('|')[0].strip().strip('%'))

tests/transcriber_test.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import logging
12
import os
23
import pathlib
34
import platform
@@ -7,7 +8,7 @@
78
from unittest.mock import Mock, patch
89

910
import pytest
10-
from PyQt6.QtCore import QThread
11+
from PyQt6.QtCore import QThread, QCoreApplication
1112
from pytestqt.qtbot import QtBot
1213

1314
from buzz.model_loader import WhisperModelSize, ModelType, TranscriptionModel, ModelLoader
@@ -135,7 +136,8 @@ def test_transcribe(self, qtbot: QtBot, word_level_timings: bool, expected_segme
135136
file_path='testdata/whisper-french.mp3', model_path=model_path))
136137
transcriber.progress.connect(mock_progress)
137138
transcriber.completed.connect(mock_completed)
138-
with qtbot.wait_signal(transcriber.completed, timeout=10 * 6000):
139+
with qtbot.wait_signal(transcriber.progress, timeout=10 * 6000), qtbot.wait_signal(transcriber.completed,
140+
timeout=10 * 6000):
139141
transcriber.run()
140142

141143
if check_progress:
@@ -150,6 +152,7 @@ def test_transcribe(self, qtbot: QtBot, word_level_timings: bool, expected_segme
150152

151153
mock_completed.assert_called()
152154
segments = mock_completed.call_args[0][0]
155+
assert len(segments) >= len(expected_segments)
153156
for (i, expected_segment) in enumerate(expected_segments):
154157
assert segments[i] == expected_segment
155158

0 commit comments

Comments
 (0)