From 733717c33fb3d591b01b531f84a1264c6a01599a Mon Sep 17 00:00:00 2001 From: tsukumi Date: Mon, 28 Oct 2024 23:13:33 +0900 Subject: [PATCH] =?UTF-8?q?Update:=20=E8=A9=B1=E8=80=85=E3=81=AE=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E8=A8=80=E8=AA=9E=E3=81=AE=E6=A0=BC=E7=B4=8D=E4=BB=95?= =?UTF-8?q?=E6=A7=98=E3=82=92=E5=8E=B3=E5=AF=86=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 11 ++++++----- aivmlib/__init__.py | 4 ++-- aivmlib/schemas/aivm_manifest.py | 13 +++++++------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Readme.md b/Readme.md index 80658c2..0fbd52c 100644 --- a/Readme.md +++ b/Readme.md @@ -294,8 +294,8 @@ JSON フォーマットの都合上、画像や音声データは Base64 エン ```python class ModelArchitecture(StrEnum): - StyleBertVITS2 = 'Style-Bert-VITS2' - StyleBertVITS2JPExtra = 'Style-Bert-VITS2 (JP-Extra)' + StyleBertVITS2 = 'Style-Bert-VITS2' # 対応言語: "ja", "en-US", "zh-CN" + StyleBertVITS2JPExtra = 'Style-Bert-VITS2 (JP-Extra)' # 対応言語: "ja" class ModelFormat(StrEnum): Safetensors = 'Safetensors' @@ -305,7 +305,7 @@ class AivmManifest(BaseModel): """ AIVM マニフェストのスキーマ """ # AIVM マニフェストのバージョン (ex: 1.0) # 現在は 1.0 のみサポート - manifest_version: Annotated[str, StringConstraints(pattern=r'^1\.0$')] + manifest_version: Literal['1.0'] # 音声合成モデルの名前 (最大 80 文字) # 音声合成モデル内の話者が 1 名の場合は話者名と同じ値を設定すべき name: Annotated[str, StringConstraints(min_length=1, max_length=80)] @@ -343,8 +343,9 @@ class AivmManifestSpeaker(BaseModel): # 話者のアイコン画像 (Data URL) # 画像ファイル形式は 512×512 の JPEG (image/jpeg)・PNG (image/png) のいずれか (JPEG を推奨) icon: Annotated[str, StringConstraints(pattern=r'^data:image/(jpeg|png);base64,[A-Za-z0-9+/=]+$')] - # 話者の対応言語のリスト (ja, en, zh のような ISO 639-1 言語コード) - supported_languages: list[Annotated[str, StringConstraints(min_length=2, max_length=2)]] + # 話者の対応言語のリスト (BCP 47 言語タグ) + # 例: 日本語: "ja", アメリカ英語: "en-US", 標準中国語: "zh-CN" + supported_languages: list[Annotated[str, StringConstraints(pattern=r'^[a-z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*(-[a-zA-Z](-[a-zA-Z0-9]{2,8})+)*(-x(-[a-zA-Z0-9]{1,8})+)?$')]] # 話者を一意に識別する UUID uuid: UUID # 話者のローカル ID (この音声合成モデル内で話者を識別するための一意なローカル ID で、uuid とは異なる) diff --git a/aivmlib/__init__.py b/aivmlib/__init__.py index 9bf9b3d..0a7a944 100755 --- a/aivmlib/__init__.py +++ b/aivmlib/__init__.py @@ -87,8 +87,8 @@ def generate_aivm_metadata( name = speaker_name, # デフォルトアイコンを使用 icon = DEFAULT_ICON_DATA_URL, - # JP-Extra の場合は日本語のみ、それ以外は日本語・英語・中国語をサポート - supported_languages = ['ja'] if hyper_parameters.data.use_jp_extra else ['ja', 'en', 'zh'], + # JP-Extra の場合は日本語のみ、それ以外は日本語・アメリカ英語・標準中国語をサポート + supported_languages = ['ja'] if hyper_parameters.data.use_jp_extra else ['ja', 'en-US', 'zh-CN'], # 話者 UUID はランダムに生成 uuid = uuid.uuid4(), # ローカル ID は spk2id の ID の部分を使用 diff --git a/aivmlib/schemas/aivm_manifest.py b/aivmlib/schemas/aivm_manifest.py index 6c45c87..6ecfd11 100644 --- a/aivmlib/schemas/aivm_manifest.py +++ b/aivmlib/schemas/aivm_manifest.py @@ -5,15 +5,15 @@ from dataclasses import dataclass from pydantic import BaseModel, ConfigDict, Field, StringConstraints from uuid import UUID -from typing import Annotated +from typing import Annotated, Literal from aivmlib.schemas.aivm_manifest_constants import DEFAULT_ICON_DATA_URL from aivmlib.schemas.style_bert_vits2 import StyleBertVITS2HyperParameters class ModelArchitecture(StrEnum): - StyleBertVITS2 = 'Style-Bert-VITS2' - StyleBertVITS2JPExtra = 'Style-Bert-VITS2 (JP-Extra)' + StyleBertVITS2 = 'Style-Bert-VITS2' # 対応言語: "ja", "en-US", "zh-CN" + StyleBertVITS2JPExtra = 'Style-Bert-VITS2 (JP-Extra)' # 対応言語: "ja" class ModelFormat(StrEnum): Safetensors = 'Safetensors' @@ -35,7 +35,7 @@ class AivmManifest(BaseModel): """ AIVM マニフェストのスキーマ """ # AIVM マニフェストのバージョン (ex: 1.0) # 現在は 1.0 のみサポート - manifest_version: Annotated[str, StringConstraints(pattern=r'^1\.0$')] + manifest_version: Literal['1.0'] # 音声合成モデルの名前 (最大 80 文字) # 音声合成モデル内の話者が 1 名の場合は話者名と同じ値を設定すべき name: Annotated[str, StringConstraints(min_length=1, max_length=80)] @@ -76,8 +76,9 @@ class AivmManifestSpeaker(BaseModel): # 話者のアイコン画像 (Data URL) # 画像ファイル形式は 512×512 の JPEG (image/jpeg)・PNG (image/png) のいずれか (JPEG を推奨) icon: Annotated[str, StringConstraints(pattern=r'^data:image/(jpeg|png);base64,[A-Za-z0-9+/=]+$')] - # 話者の対応言語のリスト (ja, en, zh のような ISO 639-1 言語コード) - supported_languages: list[Annotated[str, StringConstraints(min_length=2, max_length=2)]] + # 話者の対応言語のリスト (BCP 47 言語タグ) + # 例: 日本語: "ja", アメリカ英語: "en-US", 標準中国語: "zh-CN" + supported_languages: list[Annotated[str, StringConstraints(pattern=r'^[a-z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-([a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3}))*(-[a-zA-Z](-[a-zA-Z0-9]{2,8})+)*(-x(-[a-zA-Z0-9]{1,8})+)?$')]] # 話者を一意に識別する UUID uuid: UUID # 話者のローカル ID (この音声合成モデル内で話者を識別するための一意なローカル ID で、uuid とは異なる)