From 8e7dad8d0c5a175fc99f582ca505c82a4b0491b7 Mon Sep 17 00:00:00 2001 From: tsukumi Date: Wed, 25 Dec 2024 13:03:29 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=E9=9F=B3=E5=A3=B0=E5=90=88=E6=88=90?= =?UTF-8?q?=E3=83=A2=E3=83=87=E3=83=AB=E3=81=AE=E3=82=A4=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=83=BC=E3=83=AB/=E3=82=A2=E3=83=B3=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB=E5=BE=8C=E3=81=AB?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=89=E7=8A=B6=E6=85=8B=E3=81=8C=E7=A0=B4?= =?UTF-8?q?=E6=A3=84=E3=81=95=E3=82=8C=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86?= =?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voicevox_engine/aivm_manager.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/voicevox_engine/aivm_manager.py b/voicevox_engine/aivm_manager.py index ac76b90..db4f319 100644 --- a/voicevox_engine/aivm_manager.py +++ b/voicevox_engine/aivm_manager.py @@ -233,7 +233,9 @@ def get_aivm_manifest_from_style_id( detail=f"スタイル {style_id} は存在しません。", ) - def get_installed_aivm_infos(self, force: bool = False, wait_for_update_check: bool = False) -> dict[str, AivmInfo]: + def get_installed_aivm_infos( + self, force: bool = False, wait_for_update_check: bool = False + ) -> dict[str, AivmInfo]: """ すべてのインストール済み音声合成モデルの情報を取得する @@ -429,9 +431,19 @@ def get_installed_aivm_infos(self, force: bool = False, wait_for_update_check: b # 完成した AivmInfo を UUID をキーとして追加 aivm_infos[aivm_uuid] = aivm_info - # 音声合成モデル名でソートしてから返す - # 実行結果はキャッシュとして保持する - self._installed_aivm_infos = dict(sorted(aivm_infos.items(), key=lambda x: x[1].manifest.name)) # fmt: skip + # 音声合成モデル名でソート + sorted_aivm_infos = dict(sorted(aivm_infos.items(), key=lambda x: x[1].manifest.name)) # fmt: skip + + # キャッシュ更新前に、キャッシュに保持されている既存のロード状態を移行する + if self._installed_aivm_infos is not None: + for aivm_uuid, aivm_info in sorted_aivm_infos.items(): + if aivm_uuid in self._installed_aivm_infos: + aivm_info.is_loaded = self._installed_aivm_infos[ + aivm_uuid + ].is_loaded + + # 実行結果のキャッシュを更新 + self._installed_aivm_infos = sorted_aivm_infos # 非同期で AivisHub からの情報更新を開始 # 音声合成エンジンの起動を遅延させないよう、別スレッドで非同期タスクを開始する