From d1384f6c6ef19ad79feeb23151c112b163afcb86 Mon Sep 17 00:00:00 2001 From: misyaguziya Date: Thu, 26 Sep 2024 12:47:22 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8D=EF=B8=8F[Update]=20Model=20:=20Dev?= =?UTF-8?q?ice=E3=81=AE=E8=87=AA=E5=8B=95=E6=A4=9C=E5=87=BA=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=82=92=E5=BC=B7=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deviceの変更したものだけを通知するように変更 --- .../transcription/transcription_utils.py | 38 ++++++++++++++++--- src-python/webui_controller.py | 2 + 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src-python/models/transcription/transcription_utils.py b/src-python/models/transcription/transcription_utils.py index 9e71a0cb..70552bab 100644 --- a/src-python/models/transcription/transcription_utils.py +++ b/src-python/models/transcription/transcription_utils.py @@ -35,6 +35,12 @@ class DeviceManager: self.default_speaker_device = {"device": {"name": "NoDevice"}} self.update() + self.prev_mic_host = [host for host in self.mic_devices] + self.prev_mic_devices = self.mic_devices + self.prev_default_mic_device = self.default_mic_device + self.prev_speaker_devices = self.speaker_devices + self.prev_default_speaker_device = self.default_speaker_device + self.callback_default_mic_device = None self.callback_default_speaker_device = None self.callback_host_list = None @@ -127,6 +133,8 @@ class DeviceManager: while cb.loop is True: sleep(1) enumerator.UnregisterEndpointNotificationCallback(cb) + sleep(1) + self.update() self.noticeDefaultDevice() @@ -179,15 +187,35 @@ class DeviceManager: def noticeDefaultDevice(self): if self.callback_default_mic_device is not None: - self.callback_default_mic_device(self.default_mic_device["host"]["name"], self.default_mic_device["device"]["name"]) + if self.prev_default_mic_device["device"]["name"] != self.default_mic_device["device"]["name"]: + self.callback_default_mic_device(self.default_mic_device["host"]["name"], self.default_mic_device["device"]["name"]) + self.prev_default_mic_device = self.default_mic_device + if self.callback_default_speaker_device is not None: - self.callback_default_speaker_device(self.default_speaker_device["device"]["name"]) + if self.prev_default_speaker_device["device"]["name"] != self.default_speaker_device["device"]["name"]: + self.callback_default_speaker_device(self.default_speaker_device["device"]["name"]) + self.prev_default_speaker_device = self.default_speaker_device + if self.callback_host_list is not None: - self.callback_host_list() + if self.prev_mic_host != [host for host in self.mic_devices]: + self.callback_host_list() + self.prev_mic_host = [host for host in self.mic_devices] + if self.callback_mic_device_list is not None: - self.callback_mic_device_list() + if {key: [device['name'] for device in devices] for key, devices in self.prev_mic_devices.items()} != {key: [device['name'] for device in devices] for key, devices in self.mic_devices.items()}: + self.callback_mic_device_list() + self.prev_mic_devices = self.mic_devices + if self.callback_speaker_device_list is not None: - self.callback_speaker_device_list() + if [device['name'] for device in self.prev_speaker_devices] != [device['name'] for device in self.speaker_devices]: + self.callback_speaker_device_list() + self.prev_speaker_devices = self.speaker_devices + + def forceSetMicDefaultDevice(self): + self.callback_default_mic_device(self.default_mic_device["host"]["name"], self.default_mic_device["device"]["name"]) + + def forceSetSpeakerDefaultDevice(self): + self.callback_default_speaker_device(self.default_speaker_device["device"]["name"]) def getMicDevices(self): return self.mic_devices diff --git a/src-python/webui_controller.py b/src-python/webui_controller.py index 6c6bd299..b449aaf8 100644 --- a/src-python/webui_controller.py +++ b/src-python/webui_controller.py @@ -603,6 +603,7 @@ class Controller: config.AUTO_MIC_SELECT = True device_manager.setCallbackDefaultMicDevice(self.updateSelectedMicDevice) device_manager.noticeDefaultDevice() + device_manager.forceSetMicDefaultDevice() return {"status":200, "result":config.AUTO_MIC_SELECT} @staticmethod @@ -785,6 +786,7 @@ class Controller: config.AUTO_SPEAKER_SELECT = True device_manager.setCallbackDefaultSpeakerDevice(self.updateSelectedSpeakerDevice) device_manager.noticeDefaultDevice() + device_manager.forceSetSpeakerDefaultDevice() return {"status":200, "result":config.AUTO_SPEAKER_SELECT} @staticmethod