Jirat Jaturanpinyo
Upload voicevox_engine
edc06cb verified
raw
history blame
4.32 kB
import json
import shutil
from pathlib import Path
from typing import Any
import pytest
from fastapi import FastAPI
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 (
DEFAULT_DICT_PATH,
UserDictionary,
)
from voicevox_engine.utility.path_utility import engine_manifest_path, get_save_dir
def _copy_under_dir(file_path: Path, dir_path: Path) -> Path:
"""ๆŒ‡ๅฎšใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชไธ‹ใธใƒ•ใ‚กใ‚คใƒซใ‚’ใ‚ณใƒ”ใƒผใ—ใ€็”Ÿๆˆใ•ใ‚ŒใŸใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚นใ‚’่ฟ”ใ™ใ€‚"""
copied_file_path = dir_path / file_path.name
shutil.copyfile(file_path, copied_file_path)
return copied_file_path
@pytest.fixture()
def app_params(tmp_path: Path) -> dict[str, Any]:
core_manager = initialize_cores(use_gpu=False, enable_mock=True)
tts_engines = make_tts_engines_from_cores(core_manager)
setting_loader = SettingHandler(tmp_path / "not_exist.yaml")
# ใƒ†ใ‚นใƒˆ็”จใซ้š”้›ขใ•ใ‚ŒใŸใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’็”Ÿๆˆใ™ใ‚‹
preset_path = Path("./presets.yaml")
preset_manager = PresetManager(_copy_under_dir(preset_path, tmp_path))
# ใƒ†ใ‚นใƒˆ็”จใซ้š”้›ขใ•ใ‚ŒใŸใƒฆใƒผใ‚ถใƒผ่พžๆ›ธใ‚’็”Ÿๆˆใ™ใ‚‹
user_dict = UserDictionary(
default_dict_path=_copy_under_dir(DEFAULT_DICT_PATH, tmp_path),
user_dict_path=_generate_user_dict(tmp_path),
compiled_dict_path=tmp_path / "user.dic",
)
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,
)
return {
"tts_engines": tts_engines,
"core_manager": core_manager,
"setting_loader": setting_loader,
"preset_manager": preset_manager,
"user_dict": user_dict,
"engine_manifest": engine_manifest,
"library_manager": library_manager,
}
@pytest.fixture()
def app(app_params: dict) -> FastAPI:
return generate_app(**app_params)
@pytest.fixture()
def client(app: FastAPI) -> TestClient:
return TestClient(app)
def _generate_user_dict(dir_path: Path) -> Path:
"""ๆŒ‡ๅฎšใ•ใ‚ŒใŸใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชไธ‹ใซใƒฆใƒผใ‚ถใƒผ่พžๆ›ธใƒ•ใ‚กใ‚คใƒซใ‚’็”Ÿๆˆใ—ใ€็”Ÿๆˆใ•ใ‚ŒใŸใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚นใ‚’่ฟ”ใ™ใ€‚"""
contents = {
"a89596ad-caa8-4f4e-8eb3-3d2261c798fd": {
"surface": "๏ฝ”๏ฝ…๏ฝ“๏ฝ”๏ผ‘",
"context_id": 1348,
"part_of_speech": "ๅ่ฉž",
"part_of_speech_detail_1": "ๅ›บๆœ‰ๅ่ฉž",
"part_of_speech_detail_2": "ไธ€่ˆฌ",
"part_of_speech_detail_3": "*",
"inflectional_type": "*",
"inflectional_form": "*",
"stem": "*",
"yomi": "ใƒ†ใ‚นใƒˆใ‚คใƒ",
"pronunciation": "ใƒ†ใ‚นใƒˆใ‚คใƒ",
"accent_type": 1,
"mora_count": 3,
"accent_associative_rule": "*",
"cost": 8609,
},
"c89596ad-caa8-4f4e-8eb3-3d2261c798fd": {
"surface": "๏ฝ”๏ฝ…๏ฝ“๏ฝ”๏ผ’",
"context_id": 1348,
"part_of_speech": "ๅ่ฉž",
"part_of_speech_detail_1": "ๅ›บๆœ‰ๅ่ฉž",
"part_of_speech_detail_2": "ไธ€่ˆฌ",
"part_of_speech_detail_3": "*",
"inflectional_type": "*",
"inflectional_form": "*",
"stem": "*",
"yomi": "ใƒ†ใ‚นใƒˆใƒ‹",
"pronunciation": "ใƒ†ใ‚นใƒˆใƒ‹",
"accent_type": 1,
"mora_count": 2,
"accent_associative_rule": "*",
"cost": 8608,
},
}
contents_json = json.dumps(contents, ensure_ascii=False)
file_path = dir_path / "user_dict_for_test.json"
file_path.write_text(contents_json, encoding="utf-8")
return file_path