Skip to content

Commit

Permalink
Fix: 音声合成モデルのインストール/アンインストール後にロード状態が破棄されてしまう不具合を修正
Browse files Browse the repository at this point in the history
  • Loading branch information
tsukumijima committed Dec 25, 2024
1 parent fbaf669 commit 8e7dad8
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions voicevox_engine/aivm_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]:
"""
すべてのインストール済み音声合成モデルの情報を取得する
Expand Down Expand Up @@ -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 からの情報更新を開始
# 音声合成エンジンの起動を遅延させないよう、別スレッドで非同期タスクを開始する
Expand Down

0 comments on commit 8e7dad8

Please sign in to comment.