Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

整理: エンジンマニフェストにモデルモジュールを追加 #1344

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build_util/make_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from voicevox_engine.core.core_initializer import CoreManager
from voicevox_engine.dev.core.mock import MockCoreWrapper
from voicevox_engine.dev.tts_engine.mock import MockTTSEngine
from voicevox_engine.engine_manifest import load_manifest
from voicevox_engine.engine_manifest.engine_manifest_loader import load_manifest
from voicevox_engine.preset.Preset import PresetManager
from voicevox_engine.setting.Setting import USER_SETTING_PATH, SettingHandler
from voicevox_engine.tts_pipeline.tts_engine import TTSEngineManager
Expand Down
2 changes: 1 addition & 1 deletion run.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from voicevox_engine.app.application import generate_app
from voicevox_engine.cancellable_engine import CancellableEngine
from voicevox_engine.core.core_initializer import initialize_cores
from voicevox_engine.engine_manifest import load_manifest
from voicevox_engine.engine_manifest.engine_manifest_loader import load_manifest
from voicevox_engine.preset.Preset import PresetManager
from voicevox_engine.setting.Setting import (
USER_SETTING_PATH,
Expand Down
2 changes: 1 addition & 1 deletion test/benchmark/engine_preparation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

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.engine_manifest.engine_manifest_loader import load_manifest
from voicevox_engine.preset.PresetManager import PresetManager
from voicevox_engine.setting.Setting import SettingHandler
from voicevox_engine.tts_pipeline.tts_engine import make_tts_engines_from_cores
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

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.engine_manifest.engine_manifest_loader import load_manifest
from voicevox_engine.preset.Preset import PresetManager
from voicevox_engine.setting.Setting import SettingHandler
from voicevox_engine.tts_pipeline.tts_engine import make_tts_engines_from_cores
Expand Down
2 changes: 1 addition & 1 deletion voicevox_engine/app/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from voicevox_engine.app.routers.user_dict import generate_user_dict_router
from voicevox_engine.cancellable_engine import CancellableEngine
from voicevox_engine.core.core_initializer import CoreManager
from voicevox_engine.engine_manifest import EngineManifest
from voicevox_engine.engine_manifest.model import EngineManifest
from voicevox_engine.library_manager import LibraryManager
from voicevox_engine.metas.MetasStore import MetasStore
from voicevox_engine.preset.Preset import PresetManager
Expand Down
2 changes: 1 addition & 1 deletion voicevox_engine/app/routers/engine_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from voicevox_engine import __version__
from voicevox_engine.core.core_adapter import DeviceSupport
from voicevox_engine.core.core_initializer import CoreManager
from voicevox_engine.engine_manifest import EngineManifest
from voicevox_engine.engine_manifest.model import EngineManifest


class SupportedDevicesInfo(BaseModel):
Expand Down
2 changes: 1 addition & 1 deletion voicevox_engine/app/routers/library.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from fastapi import APIRouter, Depends, HTTPException, Path, Request

from voicevox_engine.engine_manifest import EngineManifest
from voicevox_engine.engine_manifest.model import EngineManifest
from voicevox_engine.library_manager import LibraryManager
from voicevox_engine.model import DownloadableLibraryInfo, InstalledLibraryInfo

Expand Down
2 changes: 1 addition & 1 deletion voicevox_engine/app/routers/portal_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from fastapi import APIRouter
from fastapi.responses import HTMLResponse

from voicevox_engine.engine_manifest import EngineName
from voicevox_engine.engine_manifest.model import EngineName


def generate_portal_page_router(engine_name: EngineName) -> APIRouter:
Expand Down
2 changes: 1 addition & 1 deletion voicevox_engine/app/routers/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from fastapi import APIRouter, Depends, Form, Request, Response
from fastapi.templating import Jinja2Templates

from voicevox_engine.engine_manifest import BrandName
from voicevox_engine.engine_manifest.model import BrandName
from voicevox_engine.setting.Setting import CorsPolicyMode, Setting, SettingHandler
from voicevox_engine.utility.path_utility import resource_root

Expand Down
160 changes: 0 additions & 160 deletions voicevox_engine/engine_manifest.py

This file was deleted.

88 changes: 88 additions & 0 deletions voicevox_engine/engine_manifest/engine_manifest_loader.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import json
from base64 import b64encode
from pathlib import Path

from pydantic import BaseModel

from .model import EngineManifest, LicenseInfo, UpdateInfo


class FeatureSupportJson(BaseModel):
"""`engine_manifest.json` の機能サポート状況"""

type: str
value: bool
name: str


class SupportedFeaturesJson(BaseModel):
"""`engine_manifest.json` のサポート機能一覧"""

adjust_mora_pitch: FeatureSupportJson
adjust_phoneme_length: FeatureSupportJson
adjust_speed_scale: FeatureSupportJson
adjust_pitch_scale: FeatureSupportJson
adjust_intonation_scale: FeatureSupportJson
adjust_volume_scale: FeatureSupportJson
interrogative_upspeak: FeatureSupportJson
synthesis_morphing: FeatureSupportJson
sing: FeatureSupportJson
manage_library: FeatureSupportJson


class EngineManifestJson(BaseModel):
"""`engine_manifest.json` のコンテンツ"""

manifest_version: str
name: str
brand_name: str
uuid: str
version: str
url: str
command: str
port: int
icon: str
default_sampling_rate: int
frame_rate: float
terms_of_service: str
update_infos: str
dependency_licenses: str
supported_features: SupportedFeaturesJson


def load_manifest(manifest_path: Path) -> EngineManifest:
"""エンジンマニフェストを指定ファイルから読み込む。"""

root_dir = manifest_path.parent
manifest = EngineManifestJson.parse_file(manifest_path).dict()
return EngineManifest(
manifest_version=manifest["manifest_version"],
name=manifest["name"],
brand_name=manifest["brand_name"],
uuid=manifest["uuid"],
url=manifest["url"],
default_sampling_rate=manifest["default_sampling_rate"],
frame_rate=manifest["frame_rate"],
icon=b64encode((root_dir / manifest["icon"]).read_bytes()).decode("utf-8"),
terms_of_service=(root_dir / manifest["terms_of_service"]).read_text("utf-8"),
update_infos=[
UpdateInfo(**update_info)
for update_info in json.loads(
(root_dir / manifest["update_infos"]).read_text("utf-8")
)
],
# supported_vvlib_manifest_versionを持たないengine_manifestのために
# キーが存在しない場合はNoneを返すgetを使う
supported_vvlib_manifest_version=manifest.get(
"supported_vvlib_manifest_version"
),
dependency_licenses=[
LicenseInfo(**license_info)
for license_info in json.loads(
(root_dir / manifest["dependency_licenses"]).read_text("utf-8")
)
],
supported_features={
key: item["value"] for key, item in manifest["supported_features"].items()
},
)
Loading