diff --git a/requirements.txt b/requirements.txt index 72270760..dbe35d50 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,5 +16,5 @@ psutil==5.9.8 pykakasi==2.3.0 pycaw==20240210 translators @ git+https://github.com/misyaguziya/translators@5.9.2.1 -SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4 +SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4.1 tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.2 \ No newline at end of file diff --git a/src-python/model.py b/src-python/model.py index 4c49dd0a..0c1431cf 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -426,13 +426,8 @@ class Model: return result def startMicTranscript(self, fnc): - if config.AUTO_MIC_SELECT is True: - default_device = device_manager.getDefaultMicDevice() - mic_host_name = default_device["host"]["name"] - mic_device_name = default_device["device"]["name"] - else: - mic_host_name = config.SELECTED_MIC_HOST - mic_device_name = config.SELECTED_MIC_DEVICE + mic_host_name = config.SELECTED_MIC_HOST + mic_device_name = config.SELECTED_MIC_DEVICE mic_device_list = device_manager.getMicDevices().get(mic_host_name, [{"name": "NoDevice"}]) selected_mic_device = [device for device in mic_device_list if device["name"] == mic_device_name] @@ -453,7 +448,7 @@ class Model: device=mic_device, energy_threshold=config.MIC_THRESHOLD, dynamic_energy_threshold=config.MIC_AUTOMATIC_THRESHOLD, - record_timeout=record_timeout, + phrase_time_limit=record_timeout, ) # self.mic_audio_recorder.recordIntoQueue(self.mic_audio_queue, mic_energy_queue) self.mic_audio_recorder.recordIntoQueue(self.mic_audio_queue, None) @@ -560,13 +555,8 @@ class Model: if isinstance(fnc, Callable): self.check_mic_energy_fnc = fnc - if config.AUTO_MIC_SELECT is True: - default_device = device_manager.getDefaultMicDevice() - mic_host_name = default_device["host"]["name"] - mic_device_name = default_device["device"]["name"] - else: - mic_host_name = config.SELECTED_MIC_HOST - mic_device_name = config.SELECTED_MIC_DEVICE + mic_host_name = config.SELECTED_MIC_HOST + mic_device_name = config.SELECTED_MIC_DEVICE mic_device_list = device_manager.getMicDevices().get(mic_host_name, [{"name": "NoDevice"}]) selected_mic_device = [device for device in mic_device_list if device["name"] == mic_device_name] @@ -620,7 +610,7 @@ class Model: device=speaker_device, energy_threshold=config.SPEAKER_THRESHOLD, dynamic_energy_threshold=config.SPEAKER_AUTOMATIC_THRESHOLD, - record_timeout=record_timeout, + phrase_time_limit=record_timeout, ) # self.speaker_audio_recorder.recordIntoQueue(speaker_audio_queue, speaker_energy_queue) self.speaker_audio_recorder.recordIntoQueue(speaker_audio_queue, None) diff --git a/src-python/models/transcription/transcription_recorder.py b/src-python/models/transcription/transcription_recorder.py index 0e9b147d..f30c071f 100644 --- a/src-python/models/transcription/transcription_recorder.py +++ b/src-python/models/transcription/transcription_recorder.py @@ -91,10 +91,12 @@ class SelectedSpeakerEnergyRecorder(BaseEnergyRecorder): # self.adjustForNoise() class BaseEnergyAndAudioRecorder: - def __init__(self, source, energy_threshold, dynamic_energy_threshold, record_timeout): + def __init__(self, source, energy_threshold, dynamic_energy_threshold, phrase_time_limit, phrase_timeout, record_timeout): self.recorder = Recognizer() self.recorder.energy_threshold = energy_threshold self.recorder.dynamic_energy_threshold = dynamic_energy_threshold + self.phrase_time_limit = phrase_time_limit + self.phrase_timeout = phrase_timeout self.record_timeout = record_timeout self.stop = None @@ -117,20 +119,29 @@ class BaseEnergyAndAudioRecorder: self.stop, self.pause, self.resume = self.recorder.listen_energy_and_audio_in_background( source=self.source, callback=audioRecordCallback, - phrase_time_limit=self.record_timeout, - callback_energy=energyRecordCallback if energy_queue is not None else None) + phrase_time_limit=self.phrase_time_limit, + callback_energy=energyRecordCallback if energy_queue is not None else None, + phrase_timeout=self.phrase_timeout, + record_timeout=self.record_timeout) class SelectedMicEnergyAndAudioRecorder(BaseEnergyAndAudioRecorder): - def __init__(self, device, energy_threshold, dynamic_energy_threshold, record_timeout): + def __init__(self, device, energy_threshold, dynamic_energy_threshold, phrase_time_limit, phrase_timeout:int=1, record_timeout:int=5): source=Microphone( device_index=device['index'], sample_rate=int(device["defaultSampleRate"]), ) - super().__init__(source=source, energy_threshold=energy_threshold, dynamic_energy_threshold=dynamic_energy_threshold, record_timeout=record_timeout) + super().__init__( + source=source, + energy_threshold=energy_threshold, + dynamic_energy_threshold=dynamic_energy_threshold, + phrase_time_limit=phrase_time_limit, + phrase_timeout=phrase_timeout, + record_timeout=record_timeout, + ) # self.adjustForNoise() class SelectedSpeakerEnergyAndAudioRecorder(BaseEnergyAndAudioRecorder): - def __init__(self, device, energy_threshold, dynamic_energy_threshold, record_timeout): + def __init__(self, device, energy_threshold, dynamic_energy_threshold, phrase_time_limit, phrase_timeout:int=1, record_timeout:int=5): source = Microphone(speaker=True, device_index= device["index"], @@ -138,5 +149,12 @@ class SelectedSpeakerEnergyAndAudioRecorder(BaseEnergyAndAudioRecorder): chunk_size=get_sample_size(paInt16), channels=device["maxInputChannels"] ) - super().__init__(source=source, energy_threshold=energy_threshold, dynamic_energy_threshold=dynamic_energy_threshold, record_timeout=record_timeout) + super().__init__( + source=source, + energy_threshold=energy_threshold, + dynamic_energy_threshold=dynamic_energy_threshold, + phrase_time_limit=phrase_time_limit, + phrase_timeout=phrase_timeout, + record_timeout=record_timeout, + ) # self.adjustForNoise() \ No newline at end of file