Spaces:
Sleeping
Sleeping
"""VOICEVOX ENGINE へアクセス可能なクライアントの生成""" | |
import warnings | |
from pathlib import Path | |
from typing import Literal | |
import httpx | |
from fastapi.testclient import TestClient | |
from voicevox_engine.app.application import generate_app | |
from voicevox_engine.core.core_initializer import initialize_cores | |
from voicevox_engine.engine_manifest import load_manifest | |
from voicevox_engine.library.library_manager import LibraryManager | |
from voicevox_engine.preset.preset_manager import PresetManager | |
from voicevox_engine.setting.setting_manager import SettingHandler | |
from voicevox_engine.tts_pipeline.tts_engine import make_tts_engines_from_cores | |
from voicevox_engine.user_dict.user_dict_manager import UserDictionary | |
from voicevox_engine.utility.path_utility import engine_manifest_path, get_save_dir | |
def _generate_engine_fake_server(root_dir: Path) -> TestClient: | |
core_manager = initialize_cores( | |
voicevox_dir=root_dir, use_gpu=False, enable_mock=False | |
) | |
tts_engines = make_tts_engines_from_cores(core_manager) | |
setting_loader = SettingHandler(Path("./not_exist.yaml")) | |
preset_manager = PresetManager(Path("./presets.yaml")) | |
user_dict = UserDictionary() | |
engine_manifest = load_manifest(engine_manifest_path()) | |
library_manager = LibraryManager( | |
get_save_dir() / "installed_libraries", | |
engine_manifest.supported_vvlib_manifest_version, | |
engine_manifest.brand_name, | |
engine_manifest.name, | |
engine_manifest.uuid, | |
) | |
app = generate_app( | |
tts_engines=tts_engines, | |
core_manager=core_manager, | |
setting_loader=setting_loader, | |
preset_manager=preset_manager, | |
character_info_dir=root_dir / "resources" / "character_info", | |
user_dict=user_dict, | |
engine_manifest=engine_manifest, | |
library_manager=library_manager, | |
) | |
return TestClient(app) | |
ServerType = Literal["localhost", "fake"] | |
def generate_client( | |
server: ServerType, root_dir: Path | None | |
) -> TestClient | httpx.Client: | |
""" | |
VOICEVOX ENGINE へアクセス可能なクライアントを生成する。 | |
`server=localhost` では http://localhost:50021 へのクライアントを生成する。 | |
`server=fake` ではネットワークを介さずレスポンスを返す疑似サーバーを生成する。 | |
""" | |
if server == "fake": | |
if root_dir is None: | |
warn_msg = "root_dirが未指定であるため、自動的に `VOICEVOX/vv-engine` を `root_dir` に設定します。" | |
warnings.warn(warn_msg, stacklevel=2) | |
root_dir = Path("VOICEVOX/vv-engine") | |
return _generate_engine_fake_server(root_dir) | |
elif server == "localhost": | |
return httpx.Client(base_url="http://localhost:50021") | |
else: | |
raise Exception(f"{server} はサポートされていないサーバータイプです") | |