1
0
mirror of https://github.com/MarkParker5/STARK.git synced 2025-07-12 22:50:22 +02:00

separate transcribe method

This commit is contained in:
Mark Parker
2023-06-28 19:28:38 +02:00
parent 3f64c58703
commit 5a3ec6ebf2

View File

@ -37,7 +37,9 @@ class VoskSpeechRecognizer(SpeechRecognizer):
self.audio_queue = queue.Queue() self.audio_queue = queue.Queue()
self.kaldiRecognizer = vosk.KaldiRecognizer(self.model, self.samplerate) self.kaldiRecognizer = vosk.KaldiRecognizer(self.model, self.samplerate)
self.parameters = { @property
def sounddevice_parameters(self):
return {
'samplerate': self.samplerate, 'samplerate': self.samplerate,
'blocksize': self.blocksize, 'blocksize': self.blocksize,
'dtype': self.dtype, 'dtype': self.dtype,
@ -52,25 +54,28 @@ class VoskSpeechRecognizer(SpeechRecognizer):
async def start_listening(self): async def start_listening(self):
self._is_listening = True self._is_listening = True
with sounddevice.RawInputStream(**self.parameters): with sounddevice.RawInputStream(**self.sounddevice_parameters):
while self._is_listening: while self._is_listening:
await asyncio.sleep(0.05) await asyncio.sleep(0.05)
data = self.audio_queue.get() data = self.audio_queue.get()
if self.kaldiRecognizer.AcceptWaveform(data): self._transcribe(data)
result = json.loads(self.kaldiRecognizer.Result())
if (string := result.get('text')) and string != self.last_result: def _transcribe(self, data):
self.last_result = string if self.kaldiRecognizer.AcceptWaveform(data):
self.delegate.speech_recognizer_did_receive_final_result(string) result = json.loads(self.kaldiRecognizer.Result())
else: if (string := result.get('text')) and string != self.last_result:
self.last_result = None self.last_result = string
self.delegate.speech_recognizer_did_receive_empty_result() self.delegate.speech_recognizer_did_receive_final_result(string)
else: else:
result = json.loads(self.kaldiRecognizer.PartialResult()) self.last_result = None
if (string := result.get('partial')) and string != self.last_partial_result: self.delegate.speech_recognizer_did_receive_empty_result()
self.last_partial_result = string else:
self.delegate.speech_recognizer_did_receive_partial_result(string) result = json.loads(self.kaldiRecognizer.PartialResult())
if (string := result.get('partial')) and string != self.last_partial_result:
self.last_partial_result = string
self.delegate.speech_recognizer_did_receive_partial_result(string)
def _audio_input_callback(self, indata, frames, time, status): def _audio_input_callback(self, indata, frames, time, status):
if not self.is_recognizing: return if not self.is_recognizing: return