Merge branch 'bugfix_speakerdevice' into develop
This commit is contained in:
34
model.py
34
model.py
@@ -9,7 +9,7 @@ from datetime import datetime
|
|||||||
from logging import getLogger, FileHandler, Formatter, INFO
|
from logging import getLogger, FileHandler, Formatter, INFO
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from threading import Thread, Event
|
from threading import Thread
|
||||||
from requests import get as requests_get
|
from requests import get as requests_get
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
@@ -33,22 +33,20 @@ from config import config
|
|||||||
|
|
||||||
class threadFnc(Thread):
|
class threadFnc(Thread):
|
||||||
def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs):
|
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.fnc = fnc
|
||||||
self.end_fnc = end_fnc
|
self.end_fnc = end_fnc
|
||||||
self._stop = Event()
|
self.loop = True
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self._stop.set()
|
self.loop = False
|
||||||
def stopped(self):
|
|
||||||
return self._stop.is_set()
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while True:
|
while self.loop:
|
||||||
if self.stopped():
|
self.fnc(*self._args, **self._kwargs)
|
||||||
if callable(self.end_fnc):
|
if callable(self.end_fnc):
|
||||||
self.end_fnc()
|
self.end_fnc()
|
||||||
return
|
return
|
||||||
self.fnc(*self._args, **self._kwargs)
|
|
||||||
|
|
||||||
class Model:
|
class Model:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
@@ -392,7 +390,8 @@ class Model:
|
|||||||
)
|
)
|
||||||
def sendMicTranscript():
|
def sendMicTranscript():
|
||||||
try:
|
try:
|
||||||
self.mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.SOURCE_LANGUAGE, config.SOURCE_COUNTRY)
|
res = self.mic_transcriber.transcribeAudioQueue(mic_audio_queue, config.SOURCE_LANGUAGE, config.SOURCE_COUNTRY)
|
||||||
|
if res:
|
||||||
message = self.mic_transcriber.getTranscript()
|
message = self.mic_transcriber.getTranscript()
|
||||||
fnc(message)
|
fnc(message)
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -425,9 +424,10 @@ class Model:
|
|||||||
def stopMicTranscript(self):
|
def stopMicTranscript(self):
|
||||||
if isinstance(self.mic_print_transcript, threadFnc):
|
if isinstance(self.mic_print_transcript, threadFnc):
|
||||||
self.mic_print_transcript.stop()
|
self.mic_print_transcript.stop()
|
||||||
|
self.mic_print_transcript.join()
|
||||||
self.mic_print_transcript = None
|
self.mic_print_transcript = None
|
||||||
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
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
|
self.mic_audio_recorder = None
|
||||||
# if isinstance(self.mic_get_energy, threadFnc):
|
# if isinstance(self.mic_get_energy, threadFnc):
|
||||||
# self.mic_get_energy.stop()
|
# self.mic_get_energy.stop()
|
||||||
@@ -465,7 +465,7 @@ class Model:
|
|||||||
self.mic_energy_plot_progressbar.stop()
|
self.mic_energy_plot_progressbar.stop()
|
||||||
self.mic_energy_plot_progressbar = None
|
self.mic_energy_plot_progressbar = None
|
||||||
if isinstance(self.mic_energy_recorder, SelectedMicEnergyRecorder):
|
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
|
self.mic_energy_recorder = None
|
||||||
|
|
||||||
def startSpeakerTranscript(self, fnc, error_fnc=None):
|
def startSpeakerTranscript(self, fnc, error_fnc=None):
|
||||||
@@ -505,7 +505,8 @@ class Model:
|
|||||||
)
|
)
|
||||||
def sendSpeakerTranscript():
|
def sendSpeakerTranscript():
|
||||||
try:
|
try:
|
||||||
self.speaker_transcriber.transcribeAudioQueue(speaker_audio_queue, config.TARGET_LANGUAGE, config.TARGET_COUNTRY)
|
res = self.speaker_transcriber.transcribeAudioQueue(speaker_audio_queue, config.TARGET_LANGUAGE, config.TARGET_COUNTRY)
|
||||||
|
if res:
|
||||||
message = self.speaker_transcriber.getTranscript()
|
message = self.speaker_transcriber.getTranscript()
|
||||||
fnc(message)
|
fnc(message)
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -538,9 +539,10 @@ class Model:
|
|||||||
def stopSpeakerTranscript(self):
|
def stopSpeakerTranscript(self):
|
||||||
if isinstance(self.speaker_print_transcript, threadFnc):
|
if isinstance(self.speaker_print_transcript, threadFnc):
|
||||||
self.speaker_print_transcript.stop()
|
self.speaker_print_transcript.stop()
|
||||||
|
self.speaker_print_transcript.join()
|
||||||
self.speaker_print_transcript = None
|
self.speaker_print_transcript = None
|
||||||
if isinstance(self.speaker_audio_recorder, SelectedSpeakerEnergyAndAudioRecorder):
|
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
|
self.speaker_audio_recorder = None
|
||||||
# if isinstance(self.speaker_get_energy, threadFnc):
|
# if isinstance(self.speaker_get_energy, threadFnc):
|
||||||
# self.speaker_get_energy.stop()
|
# self.speaker_get_energy.stop()
|
||||||
@@ -578,7 +580,7 @@ class Model:
|
|||||||
self.speaker_energy_plot_progressbar.stop()
|
self.speaker_energy_plot_progressbar.stop()
|
||||||
self.speaker_energy_plot_progressbar = None
|
self.speaker_energy_plot_progressbar = None
|
||||||
if isinstance(self.speaker_energy_recorder, SelectedSpeakerEnergyRecorder):
|
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
|
self.speaker_energy_recorder = None
|
||||||
|
|
||||||
def notificationXSOverlay(self, message):
|
def notificationXSOverlay(self, message):
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import time
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from threading import Event
|
from threading import Event
|
||||||
import wave
|
import wave
|
||||||
@@ -38,6 +39,9 @@ class AudioTranscriber:
|
|||||||
self.transcription_engine = "Whisper"
|
self.transcription_engine = "Whisper"
|
||||||
|
|
||||||
def transcribeAudioQueue(self, audio_queue, language, country):
|
def transcribeAudioQueue(self, audio_queue, language, country):
|
||||||
|
if audio_queue.empty():
|
||||||
|
time.sleep(0.01)
|
||||||
|
return False
|
||||||
audio, time_spoken = audio_queue.get()
|
audio, time_spoken = audio_queue.get()
|
||||||
self.updateLastSampleAndPhraseStatus(audio, time_spoken)
|
self.updateLastSampleAndPhraseStatus(audio, time_spoken)
|
||||||
|
|
||||||
@@ -75,6 +79,7 @@ class AudioTranscriber:
|
|||||||
|
|
||||||
if text != '':
|
if text != '':
|
||||||
self.updateTranscript(text)
|
self.updateTranscript(text)
|
||||||
|
return True
|
||||||
|
|
||||||
def updateLastSampleAndPhraseStatus(self, data, time_spoken):
|
def updateLastSampleAndPhraseStatus(self, data, time_spoken):
|
||||||
source_info = self.audio_sources
|
source_info = self.audio_sources
|
||||||
|
|||||||
@@ -14,5 +14,5 @@ ctranslate2==4.1.0
|
|||||||
faster-whisper==1.0.1
|
faster-whisper==1.0.1
|
||||||
openvr==1.26.701
|
openvr==1.26.701
|
||||||
translators @ git+https://github.com/misyaguziya/translators@5.8.9
|
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
|
tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.2
|
||||||
Reference in New Issue
Block a user