From 3ea40e1bd312f0f2741c2a78b93201d58f727be2 Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Sun, 5 May 2024 02:46:15 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20Model:=20mic/speaker?= =?UTF-8?q?=E3=81=AE=E9=9F=B3=E5=A3=B0=E5=85=A5=E5=8A=9B=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92OFF=E6=99=82=E3=81=AB=E5=BC=B7=E5=88=B6=E7=B5=82?= =?UTF-8?q?=E4=BA=86=E3=81=99=E3=82=8B=E5=87=A6=E7=90=86=E3=81=8C=E4=B8=8D?= =?UTF-8?q?=E8=A6=81=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=80=81=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model.py b/model.py index ae0cc25d..f30dd0bb 100644 --- a/model.py +++ b/model.py @@ -427,7 +427,7 @@ class Model: self.mic_print_transcript.stop() self.mic_print_transcript = None if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder): - self.mic_audio_recorder.stop(wait_for_stop=False, forced_stop=True) + self.mic_audio_recorder.stop() self.mic_audio_recorder = None # if isinstance(self.mic_get_energy, threadFnc): # self.mic_get_energy.stop() @@ -465,7 +465,7 @@ class Model: self.mic_energy_plot_progressbar.stop() self.mic_energy_plot_progressbar = None if isinstance(self.mic_energy_recorder, SelectedMicEnergyRecorder): - self.mic_energy_recorder.stop(wait_for_stop=False, forced_stop=True) + self.mic_energy_recorder.stop() self.mic_energy_recorder = None def startSpeakerTranscript(self, fnc, error_fnc=None): @@ -540,7 +540,7 @@ class Model: self.speaker_print_transcript.stop() self.speaker_print_transcript = None if isinstance(self.speaker_audio_recorder, SelectedSpeakerEnergyAndAudioRecorder): - self.speaker_audio_recorder.stop(wait_for_stop=False, forced_stop=True) + self.speaker_audio_recorder.stop() self.speaker_audio_recorder = None # if isinstance(self.speaker_get_energy, threadFnc): # self.speaker_get_energy.stop() @@ -578,7 +578,7 @@ class Model: self.speaker_energy_plot_progressbar.stop() self.speaker_energy_plot_progressbar = None if isinstance(self.speaker_energy_recorder, SelectedSpeakerEnergyRecorder): - self.speaker_energy_recorder.stop(wait_for_stop=False, forced_stop=True) + self.speaker_energy_recorder.stop() self.speaker_energy_recorder = None def notificationXSOverlay(self, message): From 5566ebe401d8aa73fb4c39df631d6f68457fbed9 Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Mon, 6 May 2024 01:29:44 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20Model:=20mic/speaker?= =?UTF-8?q?=E3=81=AE=E9=9F=B3=E5=A3=B0=E5=85=A5=E5=8A=9B=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=81=AEThread=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3(energy=E3=81=AF=E3=81=BE=E3=81=A0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model.py | 38 ++++++++++--------- .../transcription_transcriber.py | 5 +++ 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/model.py b/model.py index f30dd0bb..71c3d92f 100644 --- a/model.py +++ b/model.py @@ -36,19 +36,17 @@ class threadFnc(Thread): super(threadFnc, self).__init__(daemon=daemon, *args, **kwargs) self.fnc = fnc self.end_fnc = end_fnc - self._stop = Event() - def stop(self): - self._stop.set() - def stopped(self): - return self._stop.is_set() - def run(self): - while True: - if self.stopped(): - if callable(self.end_fnc): - self.end_fnc() - return - self.fnc(*self._args, **self._kwargs) + self.loop = True + def stop(self): + self.loop = False + + def run(self): + while self.loop: + self.fnc(*self._args, **self._kwargs) + if callable(self.end_fnc): + self.end_fnc() + return class Model: _instance = None @@ -392,9 +390,10 @@ class Model: ) def sendMicTranscript(): try: - self.mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.SOURCE_LANGUAGE, config.SOURCE_COUNTRY) - message = self.mic_transcriber.getTranscript() - fnc(message) + res = self.mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.SOURCE_LANGUAGE, config.SOURCE_COUNTRY) + if res: + message = self.mic_transcriber.getTranscript() + fnc(message) except Exception: pass @@ -425,6 +424,7 @@ class Model: def stopMicTranscript(self): if isinstance(self.mic_print_transcript, threadFnc): self.mic_print_transcript.stop() + self.mic_print_transcript.join() self.mic_print_transcript = None if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder): self.mic_audio_recorder.stop() @@ -505,9 +505,10 @@ class Model: ) def sendSpeakerTranscript(): try: - self.speaker_transcriber.transcribeAudioQueue(speaker_audio_queue, config.TARGET_LANGUAGE, config.TARGET_COUNTRY) - message = self.speaker_transcriber.getTranscript() - fnc(message) + res = self.speaker_transcriber.transcribeAudioQueue(speaker_audio_queue, config.TARGET_LANGUAGE, config.TARGET_COUNTRY) + if res: + message = self.speaker_transcriber.getTranscript() + fnc(message) except Exception: pass @@ -538,6 +539,7 @@ class Model: def stopSpeakerTranscript(self): if isinstance(self.speaker_print_transcript, threadFnc): self.speaker_print_transcript.stop() + self.speaker_print_transcript.join() self.speaker_print_transcript = None if isinstance(self.speaker_audio_recorder, SelectedSpeakerEnergyAndAudioRecorder): self.speaker_audio_recorder.stop() diff --git a/models/transcription/transcription_transcriber.py b/models/transcription/transcription_transcriber.py index c5a6cbff..aaaca210 100644 --- a/models/transcription/transcription_transcriber.py +++ b/models/transcription/transcription_transcriber.py @@ -1,3 +1,4 @@ +import time from io import BytesIO from threading import Event import wave @@ -38,6 +39,9 @@ class AudioTranscriber: self.transcription_engine = "Whisper" def transcribeAudioQueue(self, audio_queue, language, country): + if audio_queue.empty(): + time.sleep(0.1) + return False audio, time_spoken = audio_queue.get() self.updateLastSampleAndPhraseStatus(audio, time_spoken) @@ -75,6 +79,7 @@ class AudioTranscriber: if text != '': self.updateTranscript(text) + return True def updateLastSampleAndPhraseStatus(self, data, time_spoken): source_info = self.audio_sources From 6552dc4aa8c57682c6c19d5ccdba0938d02388cc Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Mon, 6 May 2024 02:16:45 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=90=9B[bugfix]=20Model:=20ThreadFnc?= =?UTF-8?q?=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model.py | 4 ++-- models/transcription/transcription_transcriber.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/model.py b/model.py index 71c3d92f..bc0b2706 100644 --- a/model.py +++ b/model.py @@ -9,7 +9,7 @@ from datetime import datetime from logging import getLogger, FileHandler, Formatter, INFO from time import sleep from queue import Queue -from threading import Thread, Event +from threading import Thread from requests import get as requests_get import webbrowser @@ -33,7 +33,7 @@ from config import config class threadFnc(Thread): def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs): - super(threadFnc, self).__init__(daemon=daemon, *args, **kwargs) + super(threadFnc, self).__init__(daemon=daemon, target=fnc, *args, **kwargs) self.fnc = fnc self.end_fnc = end_fnc self.loop = True diff --git a/models/transcription/transcription_transcriber.py b/models/transcription/transcription_transcriber.py index aaaca210..56d9d979 100644 --- a/models/transcription/transcription_transcriber.py +++ b/models/transcription/transcription_transcriber.py @@ -40,7 +40,7 @@ class AudioTranscriber: def transcribeAudioQueue(self, audio_queue, language, country): if audio_queue.empty(): - time.sleep(0.1) + time.sleep(0.01) return False audio, time_spoken = audio_queue.get() self.updateLastSampleAndPhraseStatus(audio, time_spoken) From 39faa8707fab6f68823388a51c38de299dfb0b0c Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Mon, 6 May 2024 03:21:02 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=91=8D=EF=B8=8F[Update]=20Model=20:?= =?UTF-8?q?=20custom=5Fspeech=5Frecognition=E3=81=AEversion=E3=82=92?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 14958d63..3e4c175b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,5 +14,5 @@ ctranslate2==4.1.0 faster-whisper==1.0.1 openvr==1.26.701 translators @ git+https://github.com/misyaguziya/translators@5.8.9 -SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.3 +SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4 tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.2 \ No newline at end of file