diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7975bb446c..bfac2dd020 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ on: env: VOICEVOX_ENGINE_REPO_URL: "https://github.com/VOICEVOX/voicevox_engine" - VOICEVOX_ENGINE_VERSION: 0.20-preview.0 + VOICEVOX_ENGINE_VERSION: 0.20-preview.1 VOICEVOX_RESOURCE_VERSION: 0.19.1 VOICEVOX_EDITOR_VERSION: |- # releaseタグ名か、workflow_dispatchでのバージョン名か、999.999.999-developが入る diff --git a/openapi.json b/openapi.json index 12f75ded53..8029cff86f 100644 --- a/openapi.json +++ b/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"VOICEVOX Engine","description":"VOICEVOXの音声合成エンジンです。","version":"latest"},"paths":{"/audio_query":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリを作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_audio_query_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audio_query_from_preset":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリをプリセットを用いて作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_from_preset_audio_query_from_preset_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Preset Id"},"name":"preset_id","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accent_phrases":{"post":{"tags":["クエリ編集"],"summary":"テキストからアクセント句を得る","description":"テキストからアクセント句を得ます。\nis_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。\n* 全てのカナはカタカナで記述される\n* アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。\n* カナの手前に`_`を入れるとそのカナは無声化される\n* アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。\n* アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。","operationId":"accent_phrases_accent_phrases_post","parameters":[{"required":true,"schema":{"type":"string","title":"Text"},"name":"text","in":"query"},{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"boolean","title":"Is Kana","default":false},"name":"is_kana","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Accent Phrases Accent Phrases Post"}}}},"400":{"description":"読み仮名のパースに失敗","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_data":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高・音素長を得る","operationId":"mora_data_mora_data_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Data Mora Data Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_length":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音素長を得る","operationId":"mora_length_mora_length_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Length Mora Length Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_pitch":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高を得る","operationId":"mora_pitch_mora_pitch_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Accent Phrases"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"Response Mora Pitch Mora Pitch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する","operationId":"synthesis_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"description":"疑問系のテキストが与えられたら語尾を自動調整する","required":false,"schema":{"type":"boolean","title":"Enable Interrogative Upspeak","description":"疑問系のテキストが与えられたら語尾を自動調整する","default":true},"name":"enable_interrogative_upspeak","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cancellable_synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する(キャンセル可能)","operationId":"cancellable_synthesis_cancellable_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/multi_synthesis":{"post":{"tags":["音声合成"],"summary":"複数まとめて音声合成する","operationId":"multi_synthesis_multi_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AudioQuery"},"type":"array","title":"Queries"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sing_frame_audio_query":{"post":{"tags":["クエリ作成"],"summary":"歌唱音声合成用のクエリを作成する","description":"歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"sing_frame_audio_query_sing_frame_audio_query_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Score"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sing_frame_volume":{"post":{"tags":["クエリ編集"],"summary":"スコア・歌唱音声合成用のクエリからフレームごとの音量を得る","operationId":"sing_frame_volume_sing_frame_volume_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_sing_frame_volume_sing_frame_volume_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"number"},"type":"array","title":"Response Sing Frame Volume Sing Frame Volume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/frame_synthesis":{"post":{"tags":["音声合成"],"summary":"Frame Synthesis","description":"歌唱音声合成を行います。","operationId":"frame_synthesis_frame_synthesis_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect_waves":{"post":{"tags":["その他"],"summary":"base64エンコードされた複数のwavデータを一つに結合する","description":"base64エンコードされたwavデータを一纏めにし、wavファイルで返します。","operationId":"connect_waves_connect_waves_post","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Waves"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/validate_kana":{"post":{"tags":["その他"],"summary":"テキストがAquesTalk 風記法に従っているか判定する","description":"テキストがAquesTalk 風記法に従っているかどうかを判定します。\n従っていない場合はエラーが返ります。","operationId":"validate_kana_validate_kana_post","parameters":[{"description":"判定する対象の文字列","required":true,"schema":{"type":"string","title":"Text","description":"判定する対象の文字列"},"name":"text","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Validate Kana Validate Kana Post"}}}},"400":{"description":"テキストが不正です","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/morphable_targets":{"post":{"tags":["音声合成"],"summary":"指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する","description":"指定されたベーススタイルに対してエンジン内の各話者がモーフィング機能を利用可能か返します。\nモーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。\nプロパティが存在しない場合は、モーフィングが許可されているとみなします。\n返り値のスタイルIDはstring型なので注意。","operationId":"morphable_targets_morphable_targets_post","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Base Style Ids"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":{"$ref":"#/components/schemas/MorphableTargetInfo"},"type":"object"},"type":"array","title":"Response Morphable Targets Morphable Targets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis_morphing":{"post":{"tags":["音声合成"],"summary":"2種類のスタイルでモーフィングした音声を合成する","description":"指定された2種類のスタイルで音声を合成、指定した割合でモーフィングした音声を得ます。\nモーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。","operationId":"_synthesis_morphing_synthesis_morphing_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Base Speaker"},"name":"base_speaker","in":"query"},{"required":true,"schema":{"type":"integer","title":"Target Speaker"},"name":"target_speaker","in":"query"},{"required":true,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Morph Rate"},"name":"morph_rate","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presets":{"get":{"tags":["その他"],"summary":"Get Presets","description":"エンジンが保持しているプリセットの設定を返します","operationId":"get_presets_presets_get","responses":{"200":{"description":"プリセットのリスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Preset"},"type":"array","title":"Response Get Presets Presets Get"}}}}}}},"/add_preset":{"post":{"tags":["その他"],"summary":"Add Preset","description":"新しいプリセットを追加します","operationId":"add_preset_add_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"新しいプリセット。プリセットIDが既存のものと重複している場合は、新規のプリセットIDが採番されます。"}}},"required":true},"responses":{"200":{"description":"追加したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Add Preset Add Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/update_preset":{"post":{"tags":["その他"],"summary":"Update Preset","description":"既存のプリセットを更新します","operationId":"update_preset_update_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"更新するプリセット。プリセットIDが更新対象と一致している必要があります。"}}},"required":true},"responses":{"200":{"description":"更新したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Update Preset Update Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delete_preset":{"post":{"tags":["その他"],"summary":"Delete Preset","description":"既存のプリセットを削除します","operationId":"delete_preset_delete_preset_post","parameters":[{"description":"削除するプリセットのプリセットID","required":true,"schema":{"type":"integer","title":"Id","description":"削除するプリセットのプリセットID"},"name":"id","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/version":{"get":{"tags":["その他"],"summary":"Version","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Version Version Get"}}}}}}},"/core_versions":{"get":{"tags":["その他"],"summary":"Core Versions","operationId":"core_versions_core_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Core Versions Core Versions Get"}}}}}}},"/speakers":{"get":{"tags":["その他"],"summary":"Speakers","operationId":"speakers_speakers_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Speaker"},"type":"array","title":"Response Speakers Speakers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speaker_info":{"get":{"tags":["その他"],"summary":"Speaker Info","description":"指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。","operationId":"speaker_info_speaker_info_get","parameters":[{"required":true,"schema":{"type":"string","title":"Speaker Uuid"},"name":"speaker_uuid","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singers":{"get":{"tags":["その他"],"summary":"Singers","operationId":"singers_singers_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Speaker"},"type":"array","title":"Response Singers Singers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singer_info":{"get":{"tags":["その他"],"summary":"Singer Info","description":"指定されたspeaker_uuidに関する情報をjson形式で返します。\n画像や音声はbase64エンコードされたものが返されます。","operationId":"singer_info_singer_info_get","parameters":[{"required":true,"schema":{"type":"string","title":"Speaker Uuid"},"name":"speaker_uuid","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/downloadable_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Downloadable Libraries","description":"ダウンロード可能な音声ライブラリの情報を返します。","operationId":"downloadable_libraries_downloadable_libraries_get","responses":{"200":{"description":"ダウンロード可能な音声ライブラリの情報リスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DownloadableLibraryInfo"},"type":"array","title":"Response Downloadable Libraries Downloadable Libraries Get"}}}}}}},"/installed_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Installed Libraries","description":"インストールした音声ライブラリの情報を返します。","operationId":"installed_libraries_installed_libraries_get","responses":{"200":{"description":"インストールした音声ライブラリの情報","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/InstalledLibraryInfo"},"type":"object","title":"Response Installed Libraries Installed Libraries Get"}}}}}}},"/install_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Install Library","description":"音声ライブラリをインストールします。\n音声ライブラリのZIPファイルをリクエストボディとして送信してください。","operationId":"install_library_install_library__library_uuid__post","parameters":[{"description":"音声ライブラリのID","required":true,"schema":{"type":"string","title":"Library Uuid","description":"音声ライブラリのID"},"name":"library_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/uninstall_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Uninstall Library","description":"音声ライブラリをアンインストールします。","operationId":"uninstall_library_uninstall_library__library_uuid__post","parameters":[{"description":"音声ライブラリのID","required":true,"schema":{"type":"string","title":"Library Uuid","description":"音声ライブラリのID"},"name":"library_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/initialize_speaker":{"post":{"tags":["その他"],"summary":"Initialize Speaker","description":"指定されたスタイルを初期化します。\n実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。","operationId":"initialize_speaker_initialize_speaker_post","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"description":"既に初期化済みのスタイルの再初期化をスキップするかどうか","required":false,"schema":{"type":"boolean","title":"Skip Reinit","description":"既に初期化済みのスタイルの再初期化をスキップするかどうか","default":false},"name":"skip_reinit","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/is_initialized_speaker":{"get":{"tags":["その他"],"summary":"Is Initialized Speaker","description":"指定されたスタイルが初期化されているかどうかを返します。","operationId":"is_initialized_speaker_is_initialized_speaker_get","parameters":[{"required":true,"schema":{"type":"integer","title":"Speaker"},"name":"speaker","in":"query"},{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Is Initialized Speaker Is Initialized Speaker Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict":{"get":{"tags":["ユーザー辞書"],"summary":"Get User Dict Words","description":"ユーザー辞書に登録されている単語の一覧を返します。\n単語の表層形(surface)は正規化済みの物を返します。","operationId":"get_user_dict_words_user_dict_get","responses":{"200":{"description":"単語のUUIDとその詳細","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"type":"object","title":"Response Get User Dict Words User Dict Get"}}}}}}},"/user_dict_word":{"post":{"tags":["ユーザー辞書"],"summary":"Add User Dict Word","description":"ユーザー辞書に言葉を追加します。","operationId":"add_user_dict_word_user_dict_word_post","parameters":[{"description":"言葉の表層形","required":true,"schema":{"type":"string","title":"Surface","description":"言葉の表層形"},"name":"surface","in":"query"},{"description":"言葉の発音(カタカナ)","required":true,"schema":{"type":"string","title":"Pronunciation","description":"言葉の発音(カタカナ)"},"name":"pronunciation","in":"query"},{"description":"アクセント型(音が下がる場所を指す)","required":true,"schema":{"type":"integer","title":"Accent Type","description":"アクセント型(音が下がる場所を指す)"},"name":"accent_type","in":"query"},{"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},"name":"word_type","in":"query"},{"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨","required":false,"schema":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Priority","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨"},"name":"priority","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Add User Dict Word User Dict Word Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict_word/{word_uuid}":{"put":{"tags":["ユーザー辞書"],"summary":"Rewrite User Dict Word","description":"ユーザー辞書に登録されている言葉を更新します。","operationId":"rewrite_user_dict_word_user_dict_word__word_uuid__put","parameters":[{"description":"更新する言葉のUUID","required":true,"schema":{"type":"string","title":"Word Uuid","description":"更新する言葉のUUID"},"name":"word_uuid","in":"path"},{"description":"言葉の表層形","required":true,"schema":{"type":"string","title":"Surface","description":"言葉の表層形"},"name":"surface","in":"query"},{"description":"言葉の発音(カタカナ)","required":true,"schema":{"type":"string","title":"Pronunciation","description":"言葉の発音(カタカナ)"},"name":"pronunciation","in":"query"},{"description":"アクセント型(音が下がる場所を指す)","required":true,"schema":{"type":"integer","title":"Accent Type","description":"アクセント型(音が下がる場所を指す)"},"name":"accent_type","in":"query"},{"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},"name":"word_type","in":"query"},{"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。","required":false,"schema":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Priority","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。"},"name":"priority","in":"query"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ユーザー辞書"],"summary":"Delete User Dict Word","description":"ユーザー辞書に登録されている言葉を削除します。","operationId":"delete_user_dict_word_user_dict_word__word_uuid__delete","parameters":[{"description":"削除する言葉のUUID","required":true,"schema":{"type":"string","title":"Word Uuid","description":"削除する言葉のUUID"},"name":"word_uuid","in":"path"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/import_user_dict":{"post":{"tags":["ユーザー辞書"],"summary":"Import User Dict Words","description":"他のユーザー辞書をインポートします。","operationId":"import_user_dict_words_import_user_dict_post","parameters":[{"description":"重複したエントリがあった場合、上書きするかどうか","required":true,"schema":{"type":"boolean","title":"Override","description":"重複したエントリがあった場合、上書きするかどうか"},"name":"override","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"type":"object","title":"Import Dict Data","description":"インポートするユーザー辞書のデータ"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/supported_devices":{"get":{"tags":["その他"],"summary":"Supported Devices","operationId":"supported_devices_supported_devices_get","parameters":[{"required":false,"schema":{"type":"string","title":"Core Version"},"name":"core_version","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedDevicesInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine_manifest":{"get":{"tags":["その他"],"summary":"Engine Manifest","operationId":"engine_manifest_engine_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineManifest"}}}}}}},"/setting":{"get":{"tags":["設定"],"summary":"Setting Get","description":"設定ページを返します。","operationId":"setting_get_setting_get","responses":{"200":{"description":"Successful Response"}}},"post":{"tags":["設定"],"summary":"Setting Post","description":"設定を更新します。","operationId":"setting_post_setting_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_setting_post_setting_post"}}},"required":true},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccentPhrase":{"properties":{"moras":{"items":{"$ref":"#/components/schemas/Mora"},"type":"array","title":"モーラのリスト"},"accent":{"type":"integer","title":"アクセント箇所"},"pause_mora":{"allOf":[{"$ref":"#/components/schemas/Mora"}],"title":"後ろに無音を付けるかどうか"},"is_interrogative":{"type":"boolean","title":"疑問系かどうか","default":false}},"type":"object","required":["moras","accent"],"title":"AccentPhrase","description":"アクセント句ごとの情報"},"AudioQuery":{"properties":{"accent_phrases":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"アクセント句のリスト"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"},"kana":{"type":"string","title":"[読み取り専用]AquesTalk 風記法によるテキスト。音声合成用のクエリとしては無視される"}},"type":"object","required":["accent_phrases","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength","outputSamplingRate","outputStereo"],"title":"AudioQuery","description":"音声合成用のクエリ"},"Body_setting_post_setting_post":{"properties":{"cors_policy_mode":{"$ref":"#/components/schemas/CorsPolicyMode"},"allow_origin":{"type":"string","title":"Allow Origin"}},"type":"object","required":["cors_policy_mode"],"title":"Body_setting_post_setting_post"},"Body_sing_frame_volume_sing_frame_volume_post":{"properties":{"score":{"$ref":"#/components/schemas/Score"},"frame_audio_query":{"$ref":"#/components/schemas/FrameAudioQuery"}},"type":"object","required":["score","frame_audio_query"],"title":"Body_sing_frame_volume_sing_frame_volume_post"},"CorsPolicyMode":{"type":"string","enum":["all","localapps"],"title":"CorsPolicyMode","description":"CORSの許可モード"},"DownloadableLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers"],"title":"DownloadableLibraryInfo","description":"ダウンロード可能な音声ライブラリの情報"},"EngineManifest":{"properties":{"manifest_version":{"type":"string","title":"マニフェストのバージョン"},"name":{"type":"string","title":"エンジン名"},"brand_name":{"type":"string","title":"ブランド名"},"uuid":{"type":"string","title":"エンジンのUUID"},"url":{"type":"string","title":"エンジンのURL"},"icon":{"type":"string","title":"エンジンのアイコンをBASE64エンコードしたもの"},"default_sampling_rate":{"type":"integer","title":"デフォルトのサンプリング周波数"},"frame_rate":{"type":"number","title":"エンジンのフレームレート"},"terms_of_service":{"type":"string","title":"エンジンの利用規約"},"update_infos":{"items":{"$ref":"#/components/schemas/UpdateInfo"},"type":"array","title":"エンジンのアップデート情報"},"dependency_licenses":{"items":{"$ref":"#/components/schemas/LicenseInfo"},"type":"array","title":"依存関係のライセンス情報"},"supported_vvlib_manifest_version":{"type":"string","title":"エンジンが対応するvvlibのバージョン"},"supported_features":{"allOf":[{"$ref":"#/components/schemas/SupportedFeatures"}],"title":"エンジンが持つ機能"}},"type":"object","required":["manifest_version","name","brand_name","uuid","url","icon","default_sampling_rate","frame_rate","terms_of_service","update_infos","dependency_licenses","supported_features"],"title":"EngineManifest","description":"エンジン自体に関する情報"},"FrameAudioQuery":{"properties":{"f0":{"items":{"type":"number"},"type":"array","title":"フレームごとの基本周波数"},"volume":{"items":{"type":"number"},"type":"array","title":"フレームごとの音量"},"phonemes":{"items":{"$ref":"#/components/schemas/FramePhoneme"},"type":"array","title":"音素のリスト"},"volumeScale":{"type":"number","title":"全体の音量"},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"}},"type":"object","required":["f0","volume","phonemes","volumeScale","outputSamplingRate","outputStereo"],"title":"FrameAudioQuery","description":"フレームごとの音声合成用のクエリ"},"FramePhoneme":{"properties":{"phoneme":{"type":"string","title":"音素"},"frame_length":{"type":"integer","title":"音素のフレーム長"}},"type":"object","required":["phoneme","frame_length"],"title":"FramePhoneme","description":"音素の情報"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InstalledLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"},"uninstallable":{"type":"boolean","title":"アンインストール可能かどうか"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers","uninstallable"],"title":"InstalledLibraryInfo","description":"インストール済み音声ライブラリの情報"},"LibrarySpeaker":{"properties":{"speaker":{"allOf":[{"$ref":"#/components/schemas/Speaker"}],"title":"話者情報"},"speaker_info":{"allOf":[{"$ref":"#/components/schemas/SpeakerInfo"}],"title":"話者の追加情報"}},"type":"object","required":["speaker","speaker_info"],"title":"LibrarySpeaker","description":"音声ライブラリに含まれる話者の情報"},"LicenseInfo":{"properties":{"name":{"type":"string","title":"依存ライブラリ名"},"version":{"type":"string","title":"依存ライブラリのバージョン"},"license":{"type":"string","title":"依存ライブラリのライセンス名"},"text":{"type":"string","title":"依存ライブラリのライセンス本文"}},"type":"object","required":["name","text"],"title":"LicenseInfo","description":"依存ライブラリのライセンス情報"},"Mora":{"properties":{"text":{"type":"string","title":"文字"},"consonant":{"type":"string","title":"子音の音素"},"consonant_length":{"type":"number","title":"子音の音長"},"vowel":{"type":"string","title":"母音の音素"},"vowel_length":{"type":"number","title":"母音の音長"},"pitch":{"type":"number","title":"音高"}},"type":"object","required":["text","vowel","vowel_length","pitch"],"title":"Mora","description":"モーラ(子音+母音)ごとの情報"},"MorphableTargetInfo":{"properties":{"is_morphable":{"type":"boolean","title":"指定した話者に対してモーフィングの可否"}},"type":"object","required":["is_morphable"],"title":"MorphableTargetInfo"},"Note":{"properties":{"key":{"type":"integer","title":"音階"},"frame_length":{"type":"integer","title":"音符のフレーム長"},"lyric":{"type":"string","title":"音符の歌詞"}},"type":"object","required":["frame_length","lyric"],"title":"Note","description":"音符ごとの情報"},"ParseKanaBadRequest":{"properties":{"text":{"type":"string","title":"エラーメッセージ"},"error_name":{"type":"string","title":"エラー名","description":"|name|description|\n|---|---|\n| UNKNOWN_TEXT | 判別できない読み仮名があります: {text} |\n| ACCENT_TOP | 句頭にアクセントは置けません: {text} |\n| ACCENT_TWICE | 1つのアクセント句に二つ以上のアクセントは置けません: {text} |\n| ACCENT_NOTFOUND | アクセントを指定していないアクセント句があります: {text} |\n| EMPTY_PHRASE | {position}番目のアクセント句が空白です |\n| INTERROGATION_MARK_NOT_AT_END | アクセント句末以外に「?」は置けません: {text} |\n| INFINITE_LOOP | 処理時に無限ループになってしまいました...バグ報告をお願いします。 |"},"error_args":{"additionalProperties":{"type":"string"},"type":"object","title":"エラーを起こした箇所"}},"type":"object","required":["text","error_name","error_args"],"title":"ParseKanaBadRequest"},"Preset":{"properties":{"id":{"type":"integer","title":"プリセットID"},"name":{"type":"string","title":"プリセット名"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"style_id":{"type":"integer","title":"スタイルID"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"}},"type":"object","required":["id","name","speaker_uuid","style_id","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength"],"title":"Preset","description":"プリセット情報"},"Score":{"properties":{"notes":{"items":{"$ref":"#/components/schemas/Note"},"type":"array","title":"音符のリスト"}},"type":"object","required":["notes"],"title":"Score","description":"楽譜情報"},"Speaker":{"properties":{"supported_features":{"allOf":[{"$ref":"#/components/schemas/SpeakerSupportedFeatures"}],"title":"話者の対応機能"},"name":{"type":"string","title":"名前"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"styles":{"items":{"$ref":"#/components/schemas/SpeakerStyle"},"type":"array","title":"スタイルの一覧"},"version":{"type":"string","title":"Version","default":"話者のバージョン"}},"type":"object","required":["name","speaker_uuid","styles"],"title":"Speaker","description":"話者情報"},"SpeakerInfo":{"properties":{"policy":{"type":"string","title":"policy.md"},"portrait":{"type":"string","title":"portrait.pngをbase64エンコードしたもの"},"style_infos":{"items":{"$ref":"#/components/schemas/StyleInfo"},"type":"array","title":"スタイルの追加情報"}},"type":"object","required":["policy","portrait","style_infos"],"title":"SpeakerInfo","description":"話者の追加情報"},"SpeakerStyle":{"properties":{"name":{"type":"string","title":"スタイル名"},"id":{"type":"integer","title":"スタイルID"},"type":{"type":"string","enum":["talk","singing_teacher","frame_decode","sing"],"title":"スタイルの種類。talk:音声合成クエリの作成と音声合成が可能。singing_teacher:歌唱音声合成用のクエリの作成が可能。frame_decode:歌唱音声合成が可能。sing:歌唱音声合成用のクエリの作成と歌唱音声合成が可能。","default":"talk"}},"type":"object","required":["name","id"],"title":"SpeakerStyle","description":"話者のスタイル情報"},"SpeakerSupportPermittedSynthesisMorphing":{"type":"string","enum":["ALL","SELF_ONLY","NOTHING"],"title":"SpeakerSupportPermittedSynthesisMorphing","description":"An enumeration."},"SpeakerSupportedFeatures":{"properties":{"permitted_synthesis_morphing":{"allOf":[{"$ref":"#/components/schemas/SpeakerSupportPermittedSynthesisMorphing"}],"title":"モーフィング機能への対応","default":"ALL"}},"type":"object","title":"SpeakerSupportedFeatures","description":"話者の対応機能の情報"},"StyleInfo":{"properties":{"id":{"type":"integer","title":"スタイルID"},"icon":{"type":"string","title":"当該スタイルのアイコンをbase64エンコードしたもの"},"portrait":{"type":"string","title":"当該スタイルのportrait.pngをbase64エンコードしたもの"},"voice_samples":{"items":{"type":"string"},"type":"array","title":"voice_sampleのwavファイルをbase64エンコードしたもの"}},"type":"object","required":["id","icon","voice_samples"],"title":"StyleInfo","description":"スタイルの追加情報"},"SupportedDevicesInfo":{"properties":{"cpu":{"type":"boolean","title":"CPUに対応しているか"},"cuda":{"type":"boolean","title":"CUDA(Nvidia GPU)に対応しているか"},"dml":{"type":"boolean","title":"DirectML(Nvidia GPU/Radeon GPU等)に対応しているか"}},"type":"object","required":["cpu","cuda","dml"],"title":"SupportedDevicesInfo","description":"対応しているデバイスの情報"},"SupportedFeatures":{"properties":{"adjust_mora_pitch":{"type":"boolean","title":"モーラごとの音高の調整"},"adjust_phoneme_length":{"type":"boolean","title":"音素ごとの長さの調整"},"adjust_speed_scale":{"type":"boolean","title":"全体の話速の調整"},"adjust_pitch_scale":{"type":"boolean","title":"全体の音高の調整"},"adjust_intonation_scale":{"type":"boolean","title":"全体の抑揚の調整"},"adjust_volume_scale":{"type":"boolean","title":"全体の音量の調整"},"interrogative_upspeak":{"type":"boolean","title":"疑問文の自動調整"},"synthesis_morphing":{"type":"boolean","title":"2種類のスタイルでモーフィングした音声を合成"},"sing":{"type":"boolean","title":"歌唱音声合成"},"manage_library":{"type":"boolean","title":"音声ライブラリのインストール・アンインストール"}},"type":"object","required":["adjust_mora_pitch","adjust_phoneme_length","adjust_speed_scale","adjust_pitch_scale","adjust_intonation_scale","adjust_volume_scale","interrogative_upspeak","synthesis_morphing"],"title":"SupportedFeatures","description":"エンジンが持つ機能の一覧"},"UpdateInfo":{"properties":{"version":{"type":"string","title":"エンジンのバージョン名"},"descriptions":{"items":{"type":"string"},"type":"array","title":"アップデートの詳細についての説明"},"contributors":{"items":{"type":"string"},"type":"array","title":"貢献者名"}},"type":"object","required":["version","descriptions"],"title":"UpdateInfo","description":"エンジンのアップデート情報"},"UserDictWord":{"properties":{"surface":{"type":"string","title":"表層形"},"priority":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"優先度"},"context_id":{"type":"integer","title":"文脈ID","default":1348},"part_of_speech":{"type":"string","title":"品詞"},"part_of_speech_detail_1":{"type":"string","title":"品詞細分類1"},"part_of_speech_detail_2":{"type":"string","title":"品詞細分類2"},"part_of_speech_detail_3":{"type":"string","title":"品詞細分類3"},"inflectional_type":{"type":"string","title":"活用型"},"inflectional_form":{"type":"string","title":"活用形"},"stem":{"type":"string","title":"原形"},"yomi":{"type":"string","title":"読み"},"pronunciation":{"type":"string","title":"発音"},"accent_type":{"type":"integer","title":"アクセント型"},"mora_count":{"type":"integer","title":"モーラ数"},"accent_associative_rule":{"type":"string","title":"アクセント結合規則"}},"type":"object","required":["surface","priority","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","accent_associative_rule"],"title":"UserDictWord","description":"辞書のコンパイルに使われる情報"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WordTypes":{"type":"string","enum":["PROPER_NOUN","COMMON_NOUN","VERB","ADJECTIVE","SUFFIX"],"title":"WordTypes","description":"fastapiでword_type引数を検証する時に使用するクラス"},"VvlibManifest":{"title":"VvlibManifest","description":"vvlib(VOICEVOX Library)に関する情報","type":"object","properties":{"manifest_version":{"title":"マニフェストバージョン","type":"string"},"name":{"title":"音声ライブラリ名","type":"string"},"version":{"title":"音声ライブラリバージョン","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"brand_name":{"title":"エンジンのブランド名","type":"string"},"engine_name":{"title":"エンジン名","type":"string"},"engine_uuid":{"title":"エンジンのUUID","type":"string"}},"required":["manifest_version","name","version","uuid","brand_name","engine_name","engine_uuid"]},"BaseLibraryInfo":{"title":"BaseLibraryInfo","description":"音声ライブラリの情報","type":"object","properties":{"name":{"title":"音声ライブラリの名前","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"version":{"title":"音声ライブラリのバージョン","type":"string"},"download_url":{"title":"音声ライブラリのダウンロードURL","type":"string"},"bytes":{"title":"音声ライブラリのバイト数","type":"integer"},"speakers":{"title":"音声ライブラリに含まれる話者のリスト","type":"array","items":{"$ref":"#/components/schemas/LibrarySpeaker"}}},"required":["name","uuid","version","download_url","bytes","speakers"]}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"VOICEVOX Engine","description":"VOICEVOX の音声合成エンジンです。","version":"latest"},"paths":{"/audio_query":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリを作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_audio_query_post","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audio_query_from_preset":{"post":{"tags":["クエリ作成"],"summary":"音声合成用のクエリをプリセットを用いて作成する","description":"音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"audio_query_from_preset_audio_query_from_preset_post","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"preset_id","in":"query","required":true,"schema":{"type":"integer","title":"Preset Id"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/accent_phrases":{"post":{"tags":["クエリ編集"],"summary":"テキストからアクセント句を得る","description":"テキストからアクセント句を得ます。\nis_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。\n* 全てのカナはカタカナで記述される\n* アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。\n* カナの手前に`_`を入れるとそのカナは無声化される\n* アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。\n* アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。","operationId":"accent_phrases_accent_phrases_post","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"is_kana","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Kana"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Response Accent Phrases Accent Phrases Post"}}}},"400":{"description":"読み仮名のパースに失敗","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_data":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高・音素長を得る","operationId":"mora_data_mora_data_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Accent Phrases"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Response Mora Data Mora Data Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_length":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音素長を得る","operationId":"mora_length_mora_length_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Accent Phrases"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Response Mora Length Mora Length Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mora_pitch":{"post":{"tags":["クエリ編集"],"summary":"アクセント句から音高を得る","operationId":"mora_pitch_mora_pitch_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Accent Phrases"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccentPhrase"},"title":"Response Mora Pitch Mora Pitch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する","operationId":"synthesis_synthesis_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"enable_interrogative_upspeak","in":"query","required":false,"schema":{"type":"boolean","description":"疑問系のテキストが与えられたら語尾を自動調整する","default":true,"title":"Enable Interrogative Upspeak"},"description":"疑問系のテキストが与えられたら語尾を自動調整する"},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cancellable_synthesis":{"post":{"tags":["音声合成"],"summary":"音声合成する(キャンセル可能)","operationId":"cancellable_synthesis_cancellable_synthesis_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/multi_synthesis":{"post":{"tags":["音声合成"],"summary":"複数まとめて音声合成する","operationId":"multi_synthesis_multi_synthesis_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AudioQuery"},"title":"Queries"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sing_frame_audio_query":{"post":{"tags":["クエリ作成"],"summary":"歌唱音声合成用のクエリを作成する","description":"歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。","operationId":"sing_frame_audio_query_sing_frame_audio_query_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Score"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sing_frame_volume":{"post":{"tags":["クエリ編集"],"summary":"スコア・歌唱音声合成用のクエリからフレームごとの音量を得る","operationId":"sing_frame_volume_sing_frame_volume_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_sing_frame_volume_sing_frame_volume_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"number"},"title":"Response Sing Frame Volume Sing Frame Volume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/frame_synthesis":{"post":{"tags":["音声合成"],"summary":"Frame Synthesis","description":"歌唱音声合成を行います。","operationId":"frame_synthesis_frame_synthesis_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameAudioQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect_waves":{"post":{"tags":["その他"],"summary":"base64エンコードされた複数のwavデータを一つに結合する","description":"base64エンコードされたwavデータを一纏めにし、wavファイルで返します。","operationId":"connect_waves_connect_waves_post","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Waves"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/validate_kana":{"post":{"tags":["その他"],"summary":"テキストがAquesTalk 風記法に従っているか判定する","description":"テキストがAquesTalk 風記法に従っているかどうかを判定します。\n従っていない場合はエラーが返ります。","operationId":"validate_kana_validate_kana_post","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","description":"判定する対象の文字列","title":"Text"},"description":"判定する対象の文字列"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Validate Kana Validate Kana Post"}}}},"400":{"description":"テキストが不正です","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseKanaBadRequest"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/initialize_speaker":{"post":{"tags":["その他"],"summary":"Initialize Speaker","description":"指定されたスタイルを初期化します。\n実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。","operationId":"initialize_speaker_initialize_speaker_post","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"skip_reinit","in":"query","required":false,"schema":{"type":"boolean","description":"既に初期化済みのスタイルの再初期化をスキップするかどうか","default":false,"title":"Skip Reinit"},"description":"既に初期化済みのスタイルの再初期化をスキップするかどうか"},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/is_initialized_speaker":{"get":{"tags":["その他"],"summary":"Is Initialized Speaker","description":"指定されたスタイルが初期化されているかどうかを返します。","operationId":"is_initialized_speaker_is_initialized_speaker_get","parameters":[{"name":"speaker","in":"query","required":true,"schema":{"type":"integer","title":"Speaker"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Is Initialized Speaker Is Initialized Speaker Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/morphable_targets":{"post":{"tags":["音声合成"],"summary":"指定したスタイルに対してエンジン内の話者がモーフィングが可能か判定する","description":"指定されたベーススタイルに対してエンジン内の各話者がモーフィング機能を利用可能か返します。\nモーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。\nプロパティが存在しない場合は、モーフィングが許可されているとみなします。\n返り値のスタイルIDはstring型なので注意。","operationId":"morphable_targets_morphable_targets_post","parameters":[{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer"},"title":"Base Style Ids"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/MorphableTargetInfo"}},"title":"Response Morphable Targets Morphable Targets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/synthesis_morphing":{"post":{"tags":["音声合成"],"summary":"2種類のスタイルでモーフィングした音声を合成する","description":"指定された2種類のスタイルで音声を合成、指定した割合でモーフィングした音声を得ます。\nモーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。","operationId":"_synthesis_morphing_synthesis_morphing_post","parameters":[{"name":"base_speaker","in":"query","required":true,"schema":{"type":"integer","title":"Base Speaker"}},{"name":"target_speaker","in":"query","required":true,"schema":{"type":"integer","title":"Target Speaker"}},{"name":"morph_rate","in":"query","required":true,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Morph Rate"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioQuery"}}}},"responses":{"200":{"description":"Successful Response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presets":{"get":{"tags":["その他"],"summary":"Get Presets","description":"エンジンが保持しているプリセットの設定を返します","operationId":"get_presets_presets_get","responses":{"200":{"description":"プリセットのリスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Preset"},"type":"array","title":"Response Get Presets Presets Get"}}}}}}},"/add_preset":{"post":{"tags":["その他"],"summary":"Add Preset","description":"新しいプリセットを追加します","operationId":"add_preset_add_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"新しいプリセット。プリセットIDが既存のものと重複している場合は、新規のプリセットIDが採番されます。"}}},"required":true},"responses":{"200":{"description":"追加したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Add Preset Add Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/update_preset":{"post":{"tags":["その他"],"summary":"Update Preset","description":"既存のプリセットを更新します","operationId":"update_preset_update_preset_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Preset"}],"title":"Preset","description":"更新するプリセット。プリセットIDが更新対象と一致している必要があります。"}}},"required":true},"responses":{"200":{"description":"更新したプリセットのプリセットID","content":{"application/json":{"schema":{"type":"integer","title":"Response Update Preset Update Preset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delete_preset":{"post":{"tags":["その他"],"summary":"Delete Preset","description":"既存のプリセットを削除します","operationId":"delete_preset_delete_preset_post","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"integer","description":"削除するプリセットのプリセットID","title":"Id"},"description":"削除するプリセットのプリセットID"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speakers":{"get":{"tags":["その他"],"summary":"Speakers","description":"話者情報の一覧を取得します。","operationId":"speakers_speakers_get","parameters":[{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Speaker"},"title":"Response Speakers Speakers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/speaker_info":{"get":{"tags":["その他"],"summary":"Speaker Info","description":"指定されたspeaker_uuidの話者に関する情報をjson形式で返します。\n画像や音声はresource_formatで指定した形式で返されます。","operationId":"speaker_info_speaker_info_get","parameters":[{"name":"speaker_uuid","in":"query","required":true,"schema":{"type":"string","title":"Speaker Uuid"}},{"name":"resource_format","in":"query","required":false,"schema":{"enum":["base64","url"],"type":"string","default":"base64","title":"Resource Format"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singers":{"get":{"tags":["その他"],"summary":"Singers","description":"歌手情報の一覧を取得します","operationId":"singers_singers_get","parameters":[{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Speaker"},"title":"Response Singers Singers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/singer_info":{"get":{"tags":["その他"],"summary":"Singer Info","description":"指定されたspeaker_uuidの歌手に関する情報をjson形式で返します。\n画像や音声はresource_formatで指定した形式で返されます。","operationId":"singer_info_singer_info_get","parameters":[{"name":"speaker_uuid","in":"query","required":true,"schema":{"type":"string","title":"Speaker Uuid"}},{"name":"resource_format","in":"query","required":false,"schema":{"enum":["base64","url"],"type":"string","default":"base64","title":"Resource Format"}},{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/downloadable_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Downloadable Libraries","description":"ダウンロード可能な音声ライブラリの情報を返します。","operationId":"downloadable_libraries_downloadable_libraries_get","responses":{"200":{"description":"ダウンロード可能な音声ライブラリの情報リスト","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DownloadableLibraryInfo"},"type":"array","title":"Response Downloadable Libraries Downloadable Libraries Get"}}}}}}},"/installed_libraries":{"get":{"tags":["音声ライブラリ管理"],"summary":"Installed Libraries","description":"インストールした音声ライブラリの情報を返します。","operationId":"installed_libraries_installed_libraries_get","responses":{"200":{"description":"インストールした音声ライブラリの情報","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/InstalledLibraryInfo"},"type":"object","title":"Response Installed Libraries Installed Libraries Get"}}}}}}},"/install_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Install Library","description":"音声ライブラリをインストールします。\n音声ライブラリのZIPファイルをリクエストボディとして送信してください。","operationId":"install_library_install_library__library_uuid__post","parameters":[{"name":"library_uuid","in":"path","required":true,"schema":{"type":"string","description":"音声ライブラリのID","title":"Library Uuid"},"description":"音声ライブラリのID"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/uninstall_library/{library_uuid}":{"post":{"tags":["音声ライブラリ管理"],"summary":"Uninstall Library","description":"音声ライブラリをアンインストールします。","operationId":"uninstall_library_uninstall_library__library_uuid__post","parameters":[{"name":"library_uuid","in":"path","required":true,"schema":{"type":"string","description":"音声ライブラリのID","title":"Library Uuid"},"description":"音声ライブラリのID"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict":{"get":{"tags":["ユーザー辞書"],"summary":"Get User Dict Words","description":"ユーザー辞書に登録されている単語の一覧を返します。\n単語の表層形(surface)は正規化済みの物を返します。","operationId":"get_user_dict_words_user_dict_get","responses":{"200":{"description":"単語のUUIDとその詳細","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"type":"object","title":"Response Get User Dict Words User Dict Get"}}}}}}},"/user_dict_word":{"post":{"tags":["ユーザー辞書"],"summary":"Add User Dict Word","description":"ユーザー辞書に言葉を追加します。","operationId":"add_user_dict_word_user_dict_word_post","parameters":[{"name":"surface","in":"query","required":true,"schema":{"type":"string","description":"言葉の表層形","title":"Surface"},"description":"言葉の表層形"},{"name":"pronunciation","in":"query","required":true,"schema":{"type":"string","description":"言葉の発音(カタカナ)","title":"Pronunciation"},"description":"言葉の発音(カタカナ)"},{"name":"accent_type","in":"query","required":true,"schema":{"type":"integer","description":"アクセント型(音が下がる場所を指す)","title":"Accent Type"},"description":"アクセント型(音が下がる場所を指す)"},{"name":"word_type","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","title":"Word Type"},"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},{"name":"priority","in":"query","required":false,"schema":{"type":"integer","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨","maximum":10,"minimum":0,"title":"Priority"},"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Add User Dict Word User Dict Word Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_dict_word/{word_uuid}":{"put":{"tags":["ユーザー辞書"],"summary":"Rewrite User Dict Word","description":"ユーザー辞書に登録されている言葉を更新します。","operationId":"rewrite_user_dict_word_user_dict_word__word_uuid__put","parameters":[{"name":"word_uuid","in":"path","required":true,"schema":{"type":"string","description":"更新する言葉のUUID","title":"Word Uuid"},"description":"更新する言葉のUUID"},{"name":"surface","in":"query","required":true,"schema":{"type":"string","description":"言葉の表層形","title":"Surface"},"description":"言葉の表層形"},{"name":"pronunciation","in":"query","required":true,"schema":{"type":"string","description":"言葉の発音(カタカナ)","title":"Pronunciation"},"description":"言葉の発音(カタカナ)"},{"name":"accent_type","in":"query","required":true,"schema":{"type":"integer","description":"アクセント型(音が下がる場所を指す)","title":"Accent Type"},"description":"アクセント型(音が下がる場所を指す)"},{"name":"word_type","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WordTypes"}],"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか","title":"Word Type"},"description":"PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか"},{"name":"priority","in":"query","required":false,"schema":{"type":"integer","description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。","maximum":10,"minimum":0,"title":"Priority"},"description":"単語の優先度(0から10までの整数)。数字が大きいほど優先度が高くなる。1から9までの値を指定することを推奨。"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ユーザー辞書"],"summary":"Delete User Dict Word","description":"ユーザー辞書に登録されている言葉を削除します。","operationId":"delete_user_dict_word_user_dict_word__word_uuid__delete","parameters":[{"name":"word_uuid","in":"path","required":true,"schema":{"type":"string","description":"削除する言葉のUUID","title":"Word Uuid"},"description":"削除する言葉のUUID"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/import_user_dict":{"post":{"tags":["ユーザー辞書"],"summary":"Import User Dict Words","description":"他のユーザー辞書をインポートします。","operationId":"import_user_dict_words_import_user_dict_post","parameters":[{"name":"override","in":"query","required":true,"schema":{"type":"boolean","description":"重複したエントリがあった場合、上書きするかどうか","title":"Override"},"description":"重複したエントリがあった場合、上書きするかどうか"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/UserDictWord"},"description":"インポートするユーザー辞書のデータ","title":"Import Dict Data"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/version":{"get":{"tags":["その他"],"summary":"Version","description":"エンジンのバージョンを取得します。","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Version Version Get"}}}}}}},"/core_versions":{"get":{"tags":["その他"],"summary":"Core Versions","description":"利用可能なコアのバージョン一覧を取得します。","operationId":"core_versions_core_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Core Versions Core Versions Get"}}}}}}},"/supported_devices":{"get":{"tags":["その他"],"summary":"Supported Devices","description":"対応デバイスの一覧を取得します。","operationId":"supported_devices_supported_devices_get","parameters":[{"name":"core_version","in":"query","required":false,"schema":{"type":"string","title":"Core Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedDevicesInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/engine_manifest":{"get":{"tags":["その他"],"summary":"Engine Manifest","description":"エンジンマニフェストを取得します。","operationId":"engine_manifest_engine_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineManifest"}}}}}}},"/setting":{"get":{"tags":["設定"],"summary":"Setting Get","description":"設定ページを返します。","operationId":"setting_get_setting_get","responses":{"200":{"description":"Successful Response"}}},"post":{"tags":["設定"],"summary":"Setting Post","description":"設定を更新します。","operationId":"setting_post_setting_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_setting_post_setting_post"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["その他"],"summary":"Get Portal Page","description":"ポータルページを返します。","operationId":"get_portal_page__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AccentPhrase":{"properties":{"moras":{"items":{"$ref":"#/components/schemas/Mora"},"type":"array","title":"モーラのリスト"},"accent":{"type":"integer","title":"アクセント箇所"},"pause_mora":{"allOf":[{"$ref":"#/components/schemas/Mora"}],"title":"後ろに無音を付けるかどうか"},"is_interrogative":{"type":"boolean","title":"疑問系かどうか","default":false}},"type":"object","required":["moras","accent"],"title":"AccentPhrase","description":"アクセント句ごとの情報"},"AudioQuery":{"properties":{"accent_phrases":{"items":{"$ref":"#/components/schemas/AccentPhrase"},"type":"array","title":"アクセント句のリスト"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"},"pauseLength":{"type":"number","title":"句読点などの無音時間"},"pauseLengthScale":{"type":"number","title":"句読点などの無音時間(倍率)","default":1},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"},"kana":{"type":"string","title":"[読み取り専用]AquesTalk 風記法によるテキスト。音声合成用のクエリとしては無視される"}},"type":"object","required":["accent_phrases","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength","outputSamplingRate","outputStereo"],"title":"AudioQuery","description":"音声合成用のクエリ"},"Body_setting_post_setting_post":{"properties":{"cors_policy_mode":{"$ref":"#/components/schemas/CorsPolicyMode"},"allow_origin":{"type":"string","title":"Allow Origin"}},"type":"object","required":["cors_policy_mode"],"title":"Body_setting_post_setting_post"},"Body_sing_frame_volume_sing_frame_volume_post":{"properties":{"score":{"$ref":"#/components/schemas/Score"},"frame_audio_query":{"$ref":"#/components/schemas/FrameAudioQuery"}},"type":"object","required":["score","frame_audio_query"],"title":"Body_sing_frame_volume_sing_frame_volume_post"},"CorsPolicyMode":{"type":"string","enum":["all","localapps"],"title":"CorsPolicyMode","description":"CORSの許可モード"},"DownloadableLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers"],"title":"DownloadableLibraryInfo","description":"ダウンロード可能な音声ライブラリの情報"},"EngineManifest":{"properties":{"manifest_version":{"type":"string","title":"マニフェストのバージョン"},"name":{"type":"string","title":"エンジン名"},"brand_name":{"type":"string","title":"ブランド名"},"uuid":{"type":"string","title":"エンジンのUUID"},"url":{"type":"string","title":"エンジンのURL"},"icon":{"type":"string","title":"エンジンのアイコンをBASE64エンコードしたもの"},"default_sampling_rate":{"type":"integer","title":"デフォルトのサンプリング周波数"},"frame_rate":{"type":"number","title":"エンジンのフレームレート"},"terms_of_service":{"type":"string","title":"エンジンの利用規約"},"update_infos":{"items":{"$ref":"#/components/schemas/UpdateInfo"},"type":"array","title":"エンジンのアップデート情報"},"dependency_licenses":{"items":{"$ref":"#/components/schemas/LicenseInfo"},"type":"array","title":"依存関係のライセンス情報"},"supported_vvlib_manifest_version":{"type":"string","title":"エンジンが対応するvvlibのバージョン"},"supported_features":{"allOf":[{"$ref":"#/components/schemas/SupportedFeatures"}],"title":"エンジンが持つ機能"}},"type":"object","required":["manifest_version","name","brand_name","uuid","url","icon","default_sampling_rate","frame_rate","terms_of_service","update_infos","dependency_licenses","supported_features"],"title":"EngineManifest","description":"エンジン自体に関する情報"},"FrameAudioQuery":{"properties":{"f0":{"items":{"type":"number"},"type":"array","title":"フレームごとの基本周波数"},"volume":{"items":{"type":"number"},"type":"array","title":"フレームごとの音量"},"phonemes":{"items":{"$ref":"#/components/schemas/FramePhoneme"},"type":"array","title":"音素のリスト"},"volumeScale":{"type":"number","title":"全体の音量"},"outputSamplingRate":{"type":"integer","title":"音声データの出力サンプリングレート"},"outputStereo":{"type":"boolean","title":"音声データをステレオ出力するか否か"}},"type":"object","required":["f0","volume","phonemes","volumeScale","outputSamplingRate","outputStereo"],"title":"FrameAudioQuery","description":"フレームごとの音声合成用のクエリ"},"FramePhoneme":{"properties":{"phoneme":{"type":"string","title":"音素"},"frame_length":{"type":"integer","title":"音素のフレーム長"}},"type":"object","required":["phoneme","frame_length"],"title":"FramePhoneme","description":"音素の情報"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InstalledLibraryInfo":{"properties":{"name":{"type":"string","title":"音声ライブラリの名前"},"uuid":{"type":"string","title":"音声ライブラリのUUID"},"version":{"type":"string","title":"音声ライブラリのバージョン"},"download_url":{"type":"string","title":"音声ライブラリのダウンロードURL"},"bytes":{"type":"integer","title":"音声ライブラリのバイト数"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"type":"array","title":"音声ライブラリに含まれる話者のリスト"},"uninstallable":{"type":"boolean","title":"アンインストール可能かどうか"}},"type":"object","required":["name","uuid","version","download_url","bytes","speakers","uninstallable"],"title":"InstalledLibraryInfo","description":"インストール済み音声ライブラリの情報"},"LibrarySpeaker":{"properties":{"speaker":{"allOf":[{"$ref":"#/components/schemas/Speaker"}],"title":"話者情報"},"speaker_info":{"allOf":[{"$ref":"#/components/schemas/SpeakerInfo"}],"title":"話者の追加情報"}},"type":"object","required":["speaker","speaker_info"],"title":"LibrarySpeaker","description":"音声ライブラリに含まれる話者の情報"},"LicenseInfo":{"properties":{"name":{"type":"string","title":"依存ライブラリ名"},"version":{"type":"string","title":"依存ライブラリのバージョン"},"license":{"type":"string","title":"依存ライブラリのライセンス名"},"text":{"type":"string","title":"依存ライブラリのライセンス本文"}},"type":"object","required":["name","text"],"title":"LicenseInfo","description":"依存ライブラリのライセンス情報"},"Mora":{"properties":{"text":{"type":"string","title":"文字"},"consonant":{"type":"string","title":"子音の音素"},"consonant_length":{"type":"number","title":"子音の音長"},"vowel":{"type":"string","title":"母音の音素"},"vowel_length":{"type":"number","title":"母音の音長"},"pitch":{"type":"number","title":"音高"}},"type":"object","required":["text","vowel","vowel_length","pitch"],"title":"Mora","description":"モーラ(子音+母音)ごとの情報"},"MorphableTargetInfo":{"properties":{"is_morphable":{"type":"boolean","title":"指定した話者に対してモーフィングの可否"}},"type":"object","required":["is_morphable"],"title":"MorphableTargetInfo"},"Note":{"properties":{"key":{"type":"integer","title":"音階"},"frame_length":{"type":"integer","title":"音符のフレーム長"},"lyric":{"type":"string","title":"音符の歌詞"}},"type":"object","required":["frame_length","lyric"],"title":"Note","description":"音符ごとの情報"},"ParseKanaBadRequest":{"properties":{"text":{"type":"string","title":"エラーメッセージ"},"error_name":{"type":"string","title":"エラー名","description":"|name|description|\n|---|---|\n| UNKNOWN_TEXT | 判別できない読み仮名があります: {text} |\n| ACCENT_TOP | 句頭にアクセントは置けません: {text} |\n| ACCENT_TWICE | 1つのアクセント句に二つ以上のアクセントは置けません: {text} |\n| ACCENT_NOTFOUND | アクセントを指定していないアクセント句があります: {text} |\n| EMPTY_PHRASE | {position}番目のアクセント句が空白です |\n| INTERROGATION_MARK_NOT_AT_END | アクセント句末以外に「?」は置けません: {text} |\n| INFINITE_LOOP | 処理時に無限ループになってしまいました...バグ報告をお願いします。 |"},"error_args":{"additionalProperties":{"type":"string"},"type":"object","title":"エラーを起こした箇所"}},"type":"object","required":["text","error_name","error_args"],"title":"ParseKanaBadRequest"},"Preset":{"properties":{"id":{"type":"integer","title":"プリセットID"},"name":{"type":"string","title":"プリセット名"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"style_id":{"type":"integer","title":"スタイルID"},"speedScale":{"type":"number","title":"全体の話速"},"pitchScale":{"type":"number","title":"全体の音高"},"intonationScale":{"type":"number","title":"全体の抑揚"},"volumeScale":{"type":"number","title":"全体の音量"},"prePhonemeLength":{"type":"number","title":"音声の前の無音時間"},"postPhonemeLength":{"type":"number","title":"音声の後の無音時間"},"pauseLength":{"type":"number","title":"句読点などの無音時間"},"pauseLengthScale":{"type":"number","title":"句読点などの無音時間(倍率)","default":1}},"type":"object","required":["id","name","speaker_uuid","style_id","speedScale","pitchScale","intonationScale","volumeScale","prePhonemeLength","postPhonemeLength"],"title":"Preset","description":"プリセット情報"},"Score":{"properties":{"notes":{"items":{"$ref":"#/components/schemas/Note"},"type":"array","title":"音符のリスト"}},"type":"object","required":["notes"],"title":"Score","description":"楽譜情報"},"Speaker":{"properties":{"name":{"type":"string","title":"名前"},"speaker_uuid":{"type":"string","title":"話者のUUID"},"styles":{"items":{"$ref":"#/components/schemas/SpeakerStyle"},"type":"array","title":"スタイルの一覧"},"version":{"type":"string","title":"話者のバージョン"},"supported_features":{"allOf":[{"$ref":"#/components/schemas/SpeakerSupportedFeatures"}],"title":"話者の対応機能"}},"type":"object","required":["name","speaker_uuid","styles","version"],"title":"Speaker","description":"話者情報"},"SpeakerInfo":{"properties":{"policy":{"type":"string","title":"policy.md"},"portrait":{"type":"string","title":"立ち絵画像をbase64エンコードしたもの、あるいはURL"},"style_infos":{"items":{"$ref":"#/components/schemas/StyleInfo"},"type":"array","title":"スタイルの追加情報"}},"type":"object","required":["policy","portrait","style_infos"],"title":"SpeakerInfo","description":"話者の追加情報"},"SpeakerStyle":{"properties":{"name":{"type":"string","title":"スタイル名"},"id":{"type":"integer","title":"スタイルID"},"type":{"type":"string","enum":["talk","singing_teacher","frame_decode","sing"],"title":"スタイルの種類。talk:音声合成クエリの作成と音声合成が可能。singing_teacher:歌唱音声合成用のクエリの作成が可能。frame_decode:歌唱音声合成が可能。sing:歌唱音声合成用のクエリの作成と歌唱音声合成が可能。","default":"talk"}},"type":"object","required":["name","id"],"title":"SpeakerStyle","description":"話者のスタイル情報"},"SpeakerSupportedFeatures":{"properties":{"permitted_synthesis_morphing":{"type":"string","enum":["ALL","SELF_ONLY","NOTHING"],"title":"モーフィング機能への対応","description":"'ALL' は「全て許可」、'SELF_ONLY' は「同じ話者内でのみ許可」、'NOTHING' は「全て禁止」","default":"ALL"}},"type":"object","title":"SpeakerSupportedFeatures","description":"話者の対応機能の情報"},"StyleInfo":{"properties":{"id":{"type":"integer","title":"スタイルID"},"icon":{"type":"string","title":"このスタイルのアイコンをbase64エンコードしたもの、あるいはURL"},"portrait":{"type":"string","title":"このスタイルの立ち絵画像をbase64エンコードしたもの、あるいはURL"},"voice_samples":{"items":{"type":"string"},"type":"array","title":"サンプル音声をbase64エンコードしたもの、あるいはURL"}},"type":"object","required":["id","icon","voice_samples"],"title":"StyleInfo","description":"スタイルの追加情報"},"SupportedDevicesInfo":{"properties":{"cpu":{"type":"boolean","title":"CPUに対応しているか"},"cuda":{"type":"boolean","title":"CUDA(Nvidia GPU)に対応しているか"},"dml":{"type":"boolean","title":"DirectML(Nvidia GPU/Radeon GPU等)に対応しているか"}},"type":"object","required":["cpu","cuda","dml"],"title":"SupportedDevicesInfo","description":"対応しているデバイスの情報"},"SupportedFeatures":{"properties":{"adjust_mora_pitch":{"type":"boolean","title":"モーラごとの音高の調整"},"adjust_phoneme_length":{"type":"boolean","title":"音素ごとの長さの調整"},"adjust_speed_scale":{"type":"boolean","title":"全体の話速の調整"},"adjust_pitch_scale":{"type":"boolean","title":"全体の音高の調整"},"adjust_intonation_scale":{"type":"boolean","title":"全体の抑揚の調整"},"adjust_volume_scale":{"type":"boolean","title":"全体の音量の調整"},"interrogative_upspeak":{"type":"boolean","title":"疑問文の自動調整"},"synthesis_morphing":{"type":"boolean","title":"2種類のスタイルでモーフィングした音声を合成"},"sing":{"type":"boolean","title":"歌唱音声合成"},"manage_library":{"type":"boolean","title":"音声ライブラリのインストール・アンインストール"},"return_resource_url":{"type":"boolean","title":"speaker_info・singer_infoのリソースをURLで返送"}},"type":"object","required":["adjust_mora_pitch","adjust_phoneme_length","adjust_speed_scale","adjust_pitch_scale","adjust_intonation_scale","adjust_volume_scale","interrogative_upspeak","synthesis_morphing"],"title":"SupportedFeatures","description":"エンジンが持つ機能の一覧"},"UpdateInfo":{"properties":{"version":{"type":"string","title":"エンジンのバージョン名"},"descriptions":{"items":{"type":"string"},"type":"array","title":"アップデートの詳細についての説明"},"contributors":{"items":{"type":"string"},"type":"array","title":"貢献者名"}},"type":"object","required":["version","descriptions"],"title":"UpdateInfo","description":"エンジンのアップデート情報"},"UserDictWord":{"properties":{"surface":{"type":"string","title":"表層形"},"priority":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"優先度"},"context_id":{"type":"integer","title":"文脈ID","default":1348},"part_of_speech":{"type":"string","title":"品詞"},"part_of_speech_detail_1":{"type":"string","title":"品詞細分類1"},"part_of_speech_detail_2":{"type":"string","title":"品詞細分類2"},"part_of_speech_detail_3":{"type":"string","title":"品詞細分類3"},"inflectional_type":{"type":"string","title":"活用型"},"inflectional_form":{"type":"string","title":"活用形"},"stem":{"type":"string","title":"原形"},"yomi":{"type":"string","title":"読み"},"pronunciation":{"type":"string","title":"発音"},"accent_type":{"type":"integer","title":"アクセント型"},"mora_count":{"type":"integer","title":"モーラ数"},"accent_associative_rule":{"type":"string","title":"アクセント結合規則"}},"type":"object","required":["surface","priority","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","accent_associative_rule"],"title":"UserDictWord","description":"辞書のコンパイルに使われる情報"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WordTypes":{"type":"string","enum":["PROPER_NOUN","COMMON_NOUN","VERB","ADJECTIVE","SUFFIX"],"title":"WordTypes","description":"品詞"},"BaseLibraryInfo":{"description":"音声ライブラリの情報","properties":{"name":{"title":"音声ライブラリの名前","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"version":{"title":"音声ライブラリのバージョン","type":"string"},"download_url":{"title":"音声ライブラリのダウンロードURL","type":"string"},"bytes":{"title":"音声ライブラリのバイト数","type":"integer"},"speakers":{"items":{"$ref":"#/components/schemas/LibrarySpeaker"},"title":"音声ライブラリに含まれる話者のリスト","type":"array"}},"required":["name","uuid","version","download_url","bytes","speakers"],"title":"BaseLibraryInfo","type":"object"},"VvlibManifest":{"description":"vvlib(VOICEVOX Library)に関する情報","properties":{"manifest_version":{"title":"マニフェストバージョン","type":"string"},"name":{"title":"音声ライブラリ名","type":"string"},"version":{"title":"音声ライブラリバージョン","type":"string"},"uuid":{"title":"音声ライブラリのUUID","type":"string"},"brand_name":{"title":"エンジンのブランド名","type":"string"},"engine_name":{"title":"エンジン名","type":"string"},"engine_uuid":{"title":"エンジンのUUID","type":"string"}},"required":["manifest_version","name","version","uuid","brand_name","engine_name","engine_uuid"],"title":"VvlibManifest","type":"object"}}}} \ No newline at end of file diff --git a/src/openapi/.openapi-generator/FILES b/src/openapi/.openapi-generator/FILES index 92187a58f5..06624bd77c 100644 --- a/src/openapi/.openapi-generator/FILES +++ b/src/openapi/.openapi-generator/FILES @@ -23,7 +23,6 @@ models/Score.ts models/Speaker.ts models/SpeakerInfo.ts models/SpeakerStyle.ts -models/SpeakerSupportPermittedSynthesisMorphing.ts models/SpeakerSupportedFeatures.ts models/StyleInfo.ts models/SupportedDevicesInfo.ts diff --git a/src/openapi/apis/DefaultApi.ts b/src/openapi/apis/DefaultApi.ts index 0295755437..f093033010 100644 --- a/src/openapi/apis/DefaultApi.ts +++ b/src/openapi/apis/DefaultApi.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -205,6 +205,7 @@ export interface SingFrameVolumeSingFrameVolumePostRequest { export interface SingerInfoSingerInfoGetRequest { speakerUuid: string; + resourceFormat?: SingerInfoSingerInfoGetResourceFormatEnum; coreVersion?: string; } @@ -214,6 +215,7 @@ export interface SingersSingersGetRequest { export interface SpeakerInfoSpeakerInfoGetRequest { speakerUuid: string; + resourceFormat?: SpeakerInfoSpeakerInfoGetResourceFormatEnum; coreVersion?: string; } @@ -384,7 +386,7 @@ export interface DefaultApiInterface { connectWavesConnectWavesPost(requestParameters: ConnectWavesConnectWavesPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * + * 利用可能なコアのバージョン一覧を取得します。 * @summary Core Versions * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -393,6 +395,7 @@ export interface DefaultApiInterface { coreVersionsCoreVersionsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; /** + * 利用可能なコアのバージョン一覧を取得します。 * Core Versions */ coreVersionsCoreVersionsGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; @@ -445,7 +448,7 @@ export interface DefaultApiInterface { downloadableLibrariesDownloadableLibrariesGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * + * エンジンマニフェストを取得します。 * @summary Engine Manifest * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -454,6 +457,7 @@ export interface DefaultApiInterface { engineManifestEngineManifestGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** + * エンジンマニフェストを取得します。 * Engine Manifest */ engineManifestEngineManifestGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; @@ -476,6 +480,21 @@ export interface DefaultApiInterface { */ frameSynthesisFrameSynthesisPost(requestParameters: FrameSynthesisFrameSynthesisPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * ポータルページを返します。 + * @summary Get Portal Page + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DefaultApiInterface + */ + getPortalPageGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + + /** + * ポータルページを返します。 + * Get Portal Page + */ + getPortalPageGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** * エンジンが保持しているプリセットの設定を返します * @summary Get Presets @@ -763,9 +782,10 @@ export interface DefaultApiInterface { singFrameVolumeSingFrameVolumePost(requestParameters: SingFrameVolumeSingFrameVolumePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの歌手に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * @summary Singer Info * @param {string} speakerUuid + * @param {'base64' | 'url'} [resourceFormat] * @param {string} [coreVersion] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -774,13 +794,13 @@ export interface DefaultApiInterface { singerInfoSingerInfoGetRaw(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの歌手に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Singer Info */ singerInfoSingerInfoGet(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * + * 歌手情報の一覧を取得します * @summary Singers * @param {string} [coreVersion] * @param {*} [options] Override http request option. @@ -790,14 +810,16 @@ export interface DefaultApiInterface { singersSingersGetRaw(requestParameters: SingersSingersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; /** + * 歌手情報の一覧を取得します * Singers */ singersSingersGet(requestParameters: SingersSingersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの話者に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * @summary Speaker Info * @param {string} speakerUuid + * @param {'base64' | 'url'} [resourceFormat] * @param {string} [coreVersion] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -806,13 +828,13 @@ export interface DefaultApiInterface { speakerInfoSpeakerInfoGetRaw(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの話者に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Speaker Info */ speakerInfoSpeakerInfoGet(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * + * 話者情報の一覧を取得します。 * @summary Speakers * @param {string} [coreVersion] * @param {*} [options] Override http request option. @@ -822,12 +844,13 @@ export interface DefaultApiInterface { speakersSpeakersGetRaw(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; /** + * 話者情報の一覧を取得します。 * Speakers */ speakersSpeakersGet(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * + * 対応デバイスの一覧を取得します。 * @summary Supported Devices * @param {string} [coreVersion] * @param {*} [options] Override http request option. @@ -837,6 +860,7 @@ export interface DefaultApiInterface { supportedDevicesSupportedDevicesGetRaw(requestParameters: SupportedDevicesSupportedDevicesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** + * 対応デバイスの一覧を取得します。 * Supported Devices */ supportedDevicesSupportedDevicesGet(requestParameters: SupportedDevicesSupportedDevicesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; @@ -928,7 +952,7 @@ export interface DefaultApiInterface { validateKanaValidateKanaPost(requestParameters: ValidateKanaValidateKanaPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * + * エンジンのバージョンを取得します。 * @summary Version * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -937,6 +961,7 @@ export interface DefaultApiInterface { versionVersionGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** + * エンジンのバージョンを取得します。 * Version */ versionVersionGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; @@ -1280,6 +1305,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 利用可能なコアのバージョン一覧を取得します。 * Core Versions */ async coreVersionsCoreVersionsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { @@ -1298,6 +1324,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 利用可能なコアのバージョン一覧を取得します。 * Core Versions */ async coreVersionsCoreVersionsGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -1400,6 +1427,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * エンジンマニフェストを取得します。 * Engine Manifest */ async engineManifestEngineManifestGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -1418,6 +1446,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * エンジンマニフェストを取得します。 * Engine Manifest */ async engineManifestEngineManifestGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -1472,6 +1501,38 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { return await response.value(); } + /** + * ポータルページを返します。 + * Get Portal Page + */ + async getPortalPageGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * ポータルページを返します。 + * Get Portal Page + */ + async getPortalPageGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.getPortalPageGetRaw(initOverrides); + return await response.value(); + } + /** * エンジンが保持しているプリセットの設定を返します * Get Presets @@ -2172,7 +2233,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの歌手に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Singer Info */ async singerInfoSingerInfoGetRaw(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2186,6 +2247,10 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { queryParameters['speaker_uuid'] = requestParameters.speakerUuid; } + if (requestParameters.resourceFormat !== undefined) { + queryParameters['resource_format'] = requestParameters.resourceFormat; + } + if (requestParameters.coreVersion !== undefined) { queryParameters['core_version'] = requestParameters.coreVersion; } @@ -2203,7 +2268,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの歌手に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Singer Info */ async singerInfoSingerInfoGet(requestParameters: SingerInfoSingerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -2212,6 +2277,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 歌手情報の一覧を取得します * Singers */ async singersSingersGetRaw(requestParameters: SingersSingersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { @@ -2234,6 +2300,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 歌手情報の一覧を取得します * Singers */ async singersSingersGet(requestParameters: SingersSingersGetRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2242,7 +2309,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの話者に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Speaker Info */ async speakerInfoSpeakerInfoGetRaw(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2256,6 +2323,10 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { queryParameters['speaker_uuid'] = requestParameters.speakerUuid; } + if (requestParameters.resourceFormat !== undefined) { + queryParameters['resource_format'] = requestParameters.resourceFormat; + } + if (requestParameters.coreVersion !== undefined) { queryParameters['core_version'] = requestParameters.coreVersion; } @@ -2273,7 +2344,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * 指定されたspeaker_uuidに関する情報をjson形式で返します。 画像や音声はbase64エンコードされたものが返されます。 + * 指定されたspeaker_uuidの話者に関する情報をjson形式で返します。 画像や音声はresource_formatで指定した形式で返されます。 * Speaker Info */ async speakerInfoSpeakerInfoGet(requestParameters: SpeakerInfoSpeakerInfoGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -2282,6 +2353,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 話者情報の一覧を取得します。 * Speakers */ async speakersSpeakersGetRaw(requestParameters: SpeakersSpeakersGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { @@ -2304,6 +2376,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 話者情報の一覧を取得します。 * Speakers */ async speakersSpeakersGet(requestParameters: SpeakersSpeakersGetRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2312,6 +2385,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 対応デバイスの一覧を取得します。 * Supported Devices */ async supportedDevicesSupportedDevicesGetRaw(requestParameters: SupportedDevicesSupportedDevicesGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2334,6 +2408,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * 対応デバイスの一覧を取得します。 * Supported Devices */ async supportedDevicesSupportedDevicesGet(requestParameters: SupportedDevicesSupportedDevicesGetRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -2564,6 +2639,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * エンジンのバージョンを取得します。 * Version */ async versionVersionGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -2586,6 +2662,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** + * エンジンのバージョンを取得します。 * Version */ async versionVersionGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -2594,3 +2671,20 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } } + +/** + * @export + */ +export const SingerInfoSingerInfoGetResourceFormatEnum = { + Base64: 'base64', + Url: 'url' +} as const; +export type SingerInfoSingerInfoGetResourceFormatEnum = typeof SingerInfoSingerInfoGetResourceFormatEnum[keyof typeof SingerInfoSingerInfoGetResourceFormatEnum]; +/** + * @export + */ +export const SpeakerInfoSpeakerInfoGetResourceFormatEnum = { + Base64: 'base64', + Url: 'url' +} as const; +export type SpeakerInfoSpeakerInfoGetResourceFormatEnum = typeof SpeakerInfoSpeakerInfoGetResourceFormatEnum[keyof typeof SpeakerInfoSpeakerInfoGetResourceFormatEnum]; diff --git a/src/openapi/models/AccentPhrase.ts b/src/openapi/models/AccentPhrase.ts index 9361e65cd1..6194a64077 100644 --- a/src/openapi/models/AccentPhrase.ts +++ b/src/openapi/models/AccentPhrase.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/AudioQuery.ts b/src/openapi/models/AudioQuery.ts index 6dfe8177e5..ae1203859e 100644 --- a/src/openapi/models/AudioQuery.ts +++ b/src/openapi/models/AudioQuery.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -68,6 +68,18 @@ export interface AudioQuery { * @memberof AudioQuery */ postPhonemeLength: number; + /** + * + * @type {number} + * @memberof AudioQuery + */ + pauseLength?: number; + /** + * + * @type {number} + * @memberof AudioQuery + */ + pauseLengthScale?: number; /** * * @type {number} @@ -123,6 +135,8 @@ export function AudioQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean) 'volumeScale': json['volumeScale'], 'prePhonemeLength': json['prePhonemeLength'], 'postPhonemeLength': json['postPhonemeLength'], + 'pauseLength': !exists(json, 'pauseLength') ? undefined : json['pauseLength'], + 'pauseLengthScale': !exists(json, 'pauseLengthScale') ? undefined : json['pauseLengthScale'], 'outputSamplingRate': json['outputSamplingRate'], 'outputStereo': json['outputStereo'], 'kana': !exists(json, 'kana') ? undefined : json['kana'], @@ -145,6 +159,8 @@ export function AudioQueryToJSON(value?: AudioQuery | null): any { 'volumeScale': value.volumeScale, 'prePhonemeLength': value.prePhonemeLength, 'postPhonemeLength': value.postPhonemeLength, + 'pauseLength': value.pauseLength, + 'pauseLengthScale': value.pauseLengthScale, 'outputSamplingRate': value.outputSamplingRate, 'outputStereo': value.outputStereo, 'kana': value.kana, diff --git a/src/openapi/models/BaseLibraryInfo.ts b/src/openapi/models/BaseLibraryInfo.ts index 9592d82b2b..3f327d17c9 100644 --- a/src/openapi/models/BaseLibraryInfo.ts +++ b/src/openapi/models/BaseLibraryInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/BodySingFrameVolumeSingFrameVolumePost.ts b/src/openapi/models/BodySingFrameVolumeSingFrameVolumePost.ts index ff56e3210a..8b683c2abf 100644 --- a/src/openapi/models/BodySingFrameVolumeSingFrameVolumePost.ts +++ b/src/openapi/models/BodySingFrameVolumeSingFrameVolumePost.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/CorsPolicyMode.ts b/src/openapi/models/CorsPolicyMode.ts index 29b5dbcdeb..73d3943c7f 100644 --- a/src/openapi/models/CorsPolicyMode.ts +++ b/src/openapi/models/CorsPolicyMode.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/DownloadableLibrary.ts b/src/openapi/models/DownloadableLibrary.ts deleted file mode 100644 index e6566d0a67..0000000000 --- a/src/openapi/models/DownloadableLibrary.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 - * - * The version of the OpenAPI document: 0.15.0-projects.3 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { exists, mapValues } from '../runtime'; -import type { LibrarySpeaker } from './LibrarySpeaker'; -import { - LibrarySpeakerFromJSON, - LibrarySpeakerFromJSONTyped, - LibrarySpeakerToJSON, -} from './LibrarySpeaker'; - -/** - * ダウンロード可能な音声ライブラリの情報 - * @export - * @interface DownloadableLibrary - */ -export interface DownloadableLibrary { - /** - * - * @type {string} - * @memberof DownloadableLibrary - */ - name: string; - /** - * - * @type {string} - * @memberof DownloadableLibrary - */ - uuid: string; - /** - * - * @type {string} - * @memberof DownloadableLibrary - */ - version: string; - /** - * - * @type {string} - * @memberof DownloadableLibrary - */ - downloadUrl: string; - /** - * - * @type {number} - * @memberof DownloadableLibrary - */ - bytes: number; - /** - * - * @type {Array} - * @memberof DownloadableLibrary - */ - speakers: Array; -} - -/** - * Check if a given object implements the DownloadableLibrary interface. - */ -export function instanceOfDownloadableLibrary(value: object): boolean { - let isInstance = true; - isInstance = isInstance && "name" in value; - isInstance = isInstance && "uuid" in value; - isInstance = isInstance && "version" in value; - isInstance = isInstance && "downloadUrl" in value; - isInstance = isInstance && "bytes" in value; - isInstance = isInstance && "speakers" in value; - - return isInstance; -} - -export function DownloadableLibraryFromJSON(json: any): DownloadableLibrary { - return DownloadableLibraryFromJSONTyped(json, false); -} - -export function DownloadableLibraryFromJSONTyped(json: any, ignoreDiscriminator: boolean): DownloadableLibrary { - if ((json === undefined) || (json === null)) { - return json; - } - return { - - 'name': json['name'], - 'uuid': json['uuid'], - 'version': json['version'], - 'downloadUrl': json['download_url'], - 'bytes': json['bytes'], - 'speakers': ((json['speakers'] as Array).map(LibrarySpeakerFromJSON)), - }; -} - -export function DownloadableLibraryToJSON(value?: DownloadableLibrary | null): any { - if (value === undefined) { - return undefined; - } - if (value === null) { - return null; - } - return { - - 'name': value.name, - 'uuid': value.uuid, - 'version': value.version, - 'download_url': value.downloadUrl, - 'bytes': value.bytes, - 'speakers': ((value.speakers as Array).map(LibrarySpeakerToJSON)), - }; -} - diff --git a/src/openapi/models/DownloadableLibraryInfo.ts b/src/openapi/models/DownloadableLibraryInfo.ts index 1016e9c940..ee13403cf5 100644 --- a/src/openapi/models/DownloadableLibraryInfo.ts +++ b/src/openapi/models/DownloadableLibraryInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/EngineManifest.ts b/src/openapi/models/EngineManifest.ts index 38952d796e..606a736d34 100644 --- a/src/openapi/models/EngineManifest.ts +++ b/src/openapi/models/EngineManifest.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/FrameAudioQuery.ts b/src/openapi/models/FrameAudioQuery.ts index db0e2d0b45..86b13201e7 100644 --- a/src/openapi/models/FrameAudioQuery.ts +++ b/src/openapi/models/FrameAudioQuery.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/FramePhoneme.ts b/src/openapi/models/FramePhoneme.ts index 417e9546d3..8110e62a74 100644 --- a/src/openapi/models/FramePhoneme.ts +++ b/src/openapi/models/FramePhoneme.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/HTTPValidationError.ts b/src/openapi/models/HTTPValidationError.ts index 75c74fa13b..29ec8b62fe 100644 --- a/src/openapi/models/HTTPValidationError.ts +++ b/src/openapi/models/HTTPValidationError.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/InstalledLibrary.ts b/src/openapi/models/InstalledLibrary.ts deleted file mode 100644 index 2bfff3c855..0000000000 --- a/src/openapi/models/InstalledLibrary.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 - * - * The version of the OpenAPI document: 0.15.0-projects.3 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { exists, mapValues } from '../runtime'; -import type { LibrarySpeaker } from './LibrarySpeaker'; -import { - LibrarySpeakerFromJSON, - LibrarySpeakerFromJSONTyped, - LibrarySpeakerToJSON, -} from './LibrarySpeaker'; - -/** - * インストール済み音声ライブラリの情報 - * @export - * @interface InstalledLibrary - */ -export interface InstalledLibrary { - /** - * - * @type {string} - * @memberof InstalledLibrary - */ - name: string; - /** - * - * @type {string} - * @memberof InstalledLibrary - */ - uuid: string; - /** - * - * @type {string} - * @memberof InstalledLibrary - */ - version: string; - /** - * - * @type {string} - * @memberof InstalledLibrary - */ - downloadUrl: string; - /** - * - * @type {number} - * @memberof InstalledLibrary - */ - bytes: number; - /** - * - * @type {Array} - * @memberof InstalledLibrary - */ - speakers: Array; - /** - * - * @type {boolean} - * @memberof InstalledLibrary - */ - uninstallable: boolean; -} - -/** - * Check if a given object implements the InstalledLibrary interface. - */ -export function instanceOfInstalledLibrary(value: object): boolean { - let isInstance = true; - isInstance = isInstance && "name" in value; - isInstance = isInstance && "uuid" in value; - isInstance = isInstance && "version" in value; - isInstance = isInstance && "downloadUrl" in value; - isInstance = isInstance && "bytes" in value; - isInstance = isInstance && "speakers" in value; - isInstance = isInstance && "uninstallable" in value; - - return isInstance; -} - -export function InstalledLibraryFromJSON(json: any): InstalledLibrary { - return InstalledLibraryFromJSONTyped(json, false); -} - -export function InstalledLibraryFromJSONTyped(json: any, ignoreDiscriminator: boolean): InstalledLibrary { - if ((json === undefined) || (json === null)) { - return json; - } - return { - - 'name': json['name'], - 'uuid': json['uuid'], - 'version': json['version'], - 'downloadUrl': json['download_url'], - 'bytes': json['bytes'], - 'speakers': ((json['speakers'] as Array).map(LibrarySpeakerFromJSON)), - 'uninstallable': json['uninstallable'], - }; -} - -export function InstalledLibraryToJSON(value?: InstalledLibrary | null): any { - if (value === undefined) { - return undefined; - } - if (value === null) { - return null; - } - return { - - 'name': value.name, - 'uuid': value.uuid, - 'version': value.version, - 'download_url': value.downloadUrl, - 'bytes': value.bytes, - 'speakers': ((value.speakers as Array).map(LibrarySpeakerToJSON)), - 'uninstallable': value.uninstallable, - }; -} - diff --git a/src/openapi/models/InstalledLibraryInfo.ts b/src/openapi/models/InstalledLibraryInfo.ts index b65eabcd1d..ace7e5eab5 100644 --- a/src/openapi/models/InstalledLibraryInfo.ts +++ b/src/openapi/models/InstalledLibraryInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/LibrarySpeaker.ts b/src/openapi/models/LibrarySpeaker.ts index dcff3ee459..37479e5dc2 100644 --- a/src/openapi/models/LibrarySpeaker.ts +++ b/src/openapi/models/LibrarySpeaker.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/LicenseInfo.ts b/src/openapi/models/LicenseInfo.ts index 7176e993cb..8ca0dabc3a 100644 --- a/src/openapi/models/LicenseInfo.ts +++ b/src/openapi/models/LicenseInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/Mora.ts b/src/openapi/models/Mora.ts index 430d8c2983..26a61f1ebb 100644 --- a/src/openapi/models/Mora.ts +++ b/src/openapi/models/Mora.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/MorphableTargetInfo.ts b/src/openapi/models/MorphableTargetInfo.ts index a7627ddb8b..38b56aab8c 100644 --- a/src/openapi/models/MorphableTargetInfo.ts +++ b/src/openapi/models/MorphableTargetInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/Note.ts b/src/openapi/models/Note.ts index fd5a715ced..89b2c87617 100644 --- a/src/openapi/models/Note.ts +++ b/src/openapi/models/Note.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/ParseKanaBadRequest.ts b/src/openapi/models/ParseKanaBadRequest.ts index 8cedd507a4..8d0068e781 100644 --- a/src/openapi/models/ParseKanaBadRequest.ts +++ b/src/openapi/models/ParseKanaBadRequest.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/PeriodicData.ts b/src/openapi/models/PeriodicData.ts deleted file mode 100644 index 9c370d27b1..0000000000 --- a/src/openapi/models/PeriodicData.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 - * - * The version of the OpenAPI document: 0.15.0-projects.3 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -import { exists, mapValues } from '../runtime'; -/** - * 周期的なデータの情報 - * @export - * @interface PeriodicData - */ -export interface PeriodicData { - /** - * - * @type {number} - * @memberof PeriodicData - */ - rate: number; - /** - * - * @type {Array} - * @memberof PeriodicData - */ - data: Array; -} - -/** - * Check if a given object implements the PeriodicData interface. - */ -export function instanceOfPeriodicData(value: object): boolean { - let isInstance = true; - isInstance = isInstance && "rate" in value; - isInstance = isInstance && "data" in value; - - return isInstance; -} - -export function PeriodicDataFromJSON(json: any): PeriodicData { - return PeriodicDataFromJSONTyped(json, false); -} - -export function PeriodicDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): PeriodicData { - if ((json === undefined) || (json === null)) { - return json; - } - return { - - 'rate': json['rate'], - 'data': json['data'], - }; -} - -export function PeriodicDataToJSON(value?: PeriodicData | null): any { - if (value === undefined) { - return undefined; - } - if (value === null) { - return null; - } - return { - - 'rate': value.rate, - 'data': value.data, - }; -} - diff --git a/src/openapi/models/Preset.ts b/src/openapi/models/Preset.ts index 4a7670ffab..4db336bd5a 100644 --- a/src/openapi/models/Preset.ts +++ b/src/openapi/models/Preset.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -79,6 +79,18 @@ export interface Preset { * @memberof Preset */ postPhonemeLength: number; + /** + * + * @type {number} + * @memberof Preset + */ + pauseLength?: number; + /** + * + * @type {number} + * @memberof Preset + */ + pauseLengthScale?: number; } /** @@ -120,6 +132,8 @@ export function PresetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pr 'volumeScale': json['volumeScale'], 'prePhonemeLength': json['prePhonemeLength'], 'postPhonemeLength': json['postPhonemeLength'], + 'pauseLength': !exists(json, 'pauseLength') ? undefined : json['pauseLength'], + 'pauseLengthScale': !exists(json, 'pauseLengthScale') ? undefined : json['pauseLengthScale'], }; } @@ -142,6 +156,8 @@ export function PresetToJSON(value?: Preset | null): any { 'volumeScale': value.volumeScale, 'prePhonemeLength': value.prePhonemeLength, 'postPhonemeLength': value.postPhonemeLength, + 'pauseLength': value.pauseLength, + 'pauseLengthScale': value.pauseLengthScale, }; } diff --git a/src/openapi/models/Score.ts b/src/openapi/models/Score.ts index 4bfa57ae6a..6bcb86a5f3 100644 --- a/src/openapi/models/Score.ts +++ b/src/openapi/models/Score.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/Speaker.ts b/src/openapi/models/Speaker.ts index 83255477f1..8fde623b15 100644 --- a/src/openapi/models/Speaker.ts +++ b/src/openapi/models/Speaker.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -32,12 +32,6 @@ import { * @interface Speaker */ export interface Speaker { - /** - * - * @type {SpeakerSupportedFeatures} - * @memberof Speaker - */ - supportedFeatures?: SpeakerSupportedFeatures; /** * * @type {string} @@ -61,7 +55,13 @@ export interface Speaker { * @type {string} * @memberof Speaker */ - version?: string; + version: string; + /** + * + * @type {SpeakerSupportedFeatures} + * @memberof Speaker + */ + supportedFeatures?: SpeakerSupportedFeatures; } /** @@ -72,6 +72,7 @@ export function instanceOfSpeaker(value: object): boolean { isInstance = isInstance && "name" in value; isInstance = isInstance && "speakerUuid" in value; isInstance = isInstance && "styles" in value; + isInstance = isInstance && "version" in value; return isInstance; } @@ -86,11 +87,11 @@ export function SpeakerFromJSONTyped(json: any, ignoreDiscriminator: boolean): S } return { - 'supportedFeatures': !exists(json, 'supported_features') ? undefined : SpeakerSupportedFeaturesFromJSON(json['supported_features']), 'name': json['name'], 'speakerUuid': json['speaker_uuid'], 'styles': ((json['styles'] as Array).map(SpeakerStyleFromJSON)), - 'version': !exists(json, 'version') ? undefined : json['version'], + 'version': json['version'], + 'supportedFeatures': !exists(json, 'supported_features') ? undefined : SpeakerSupportedFeaturesFromJSON(json['supported_features']), }; } @@ -103,11 +104,11 @@ export function SpeakerToJSON(value?: Speaker | null): any { } return { - 'supported_features': SpeakerSupportedFeaturesToJSON(value.supportedFeatures), 'name': value.name, 'speaker_uuid': value.speakerUuid, 'styles': ((value.styles as Array).map(SpeakerStyleToJSON)), 'version': value.version, + 'supported_features': SpeakerSupportedFeaturesToJSON(value.supportedFeatures), }; } diff --git a/src/openapi/models/SpeakerInfo.ts b/src/openapi/models/SpeakerInfo.ts index e375fe646b..4939db694f 100644 --- a/src/openapi/models/SpeakerInfo.ts +++ b/src/openapi/models/SpeakerInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/SpeakerStyle.ts b/src/openapi/models/SpeakerStyle.ts index a0c2a3763e..55c57d1258 100644 --- a/src/openapi/models/SpeakerStyle.ts +++ b/src/openapi/models/SpeakerStyle.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/SpeakerSupportPermittedSynthesisMorphing.ts b/src/openapi/models/SpeakerSupportPermittedSynthesisMorphing.ts deleted file mode 100644 index 118ff7b686..0000000000 --- a/src/openapi/models/SpeakerSupportPermittedSynthesisMorphing.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 - * - * The version of the OpenAPI document: latest - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -/** - * An enumeration. - * @export - */ -export const SpeakerSupportPermittedSynthesisMorphing = { - All: 'ALL', - SelfOnly: 'SELF_ONLY', - Nothing: 'NOTHING' -} as const; -export type SpeakerSupportPermittedSynthesisMorphing = typeof SpeakerSupportPermittedSynthesisMorphing[keyof typeof SpeakerSupportPermittedSynthesisMorphing]; - - -export function SpeakerSupportPermittedSynthesisMorphingFromJSON(json: any): SpeakerSupportPermittedSynthesisMorphing { - return SpeakerSupportPermittedSynthesisMorphingFromJSONTyped(json, false); -} - -export function SpeakerSupportPermittedSynthesisMorphingFromJSONTyped(json: any, ignoreDiscriminator: boolean): SpeakerSupportPermittedSynthesisMorphing { - return json as SpeakerSupportPermittedSynthesisMorphing; -} - -export function SpeakerSupportPermittedSynthesisMorphingToJSON(value?: SpeakerSupportPermittedSynthesisMorphing | null): any { - return value as any; -} - diff --git a/src/openapi/models/SpeakerSupportedFeatures.ts b/src/openapi/models/SpeakerSupportedFeatures.ts index 604cd1833b..fc652faa8e 100644 --- a/src/openapi/models/SpeakerSupportedFeatures.ts +++ b/src/openapi/models/SpeakerSupportedFeatures.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -13,13 +13,6 @@ */ import { exists, mapValues } from '../runtime'; -import type { SpeakerSupportPermittedSynthesisMorphing } from './SpeakerSupportPermittedSynthesisMorphing'; -import { - SpeakerSupportPermittedSynthesisMorphingFromJSON, - SpeakerSupportPermittedSynthesisMorphingFromJSONTyped, - SpeakerSupportPermittedSynthesisMorphingToJSON, -} from './SpeakerSupportPermittedSynthesisMorphing'; - /** * 話者の対応機能の情報 * @export @@ -27,13 +20,25 @@ import { */ export interface SpeakerSupportedFeatures { /** - * - * @type {SpeakerSupportPermittedSynthesisMorphing} + * 'ALL' は「全て許可」、'SELF_ONLY' は「同じ話者内でのみ許可」、'NOTHING' は「全て禁止」 + * @type {string} * @memberof SpeakerSupportedFeatures */ - permittedSynthesisMorphing?: SpeakerSupportPermittedSynthesisMorphing; + permittedSynthesisMorphing?: SpeakerSupportedFeaturesPermittedSynthesisMorphingEnum; } + +/** + * @export + */ +export const SpeakerSupportedFeaturesPermittedSynthesisMorphingEnum = { + All: 'ALL', + SelfOnly: 'SELF_ONLY', + Nothing: 'NOTHING' +} as const; +export type SpeakerSupportedFeaturesPermittedSynthesisMorphingEnum = typeof SpeakerSupportedFeaturesPermittedSynthesisMorphingEnum[keyof typeof SpeakerSupportedFeaturesPermittedSynthesisMorphingEnum]; + + /** * Check if a given object implements the SpeakerSupportedFeatures interface. */ @@ -53,7 +58,7 @@ export function SpeakerSupportedFeaturesFromJSONTyped(json: any, ignoreDiscrimin } return { - 'permittedSynthesisMorphing': !exists(json, 'permitted_synthesis_morphing') ? undefined : SpeakerSupportPermittedSynthesisMorphingFromJSON(json['permitted_synthesis_morphing']), + 'permittedSynthesisMorphing': !exists(json, 'permitted_synthesis_morphing') ? undefined : json['permitted_synthesis_morphing'], }; } @@ -66,7 +71,7 @@ export function SpeakerSupportedFeaturesToJSON(value?: SpeakerSupportedFeatures } return { - 'permitted_synthesis_morphing': SpeakerSupportPermittedSynthesisMorphingToJSON(value.permittedSynthesisMorphing), + 'permitted_synthesis_morphing': value.permittedSynthesisMorphing, }; } diff --git a/src/openapi/models/StyleInfo.ts b/src/openapi/models/StyleInfo.ts index c5b72ac96a..660a5a065d 100644 --- a/src/openapi/models/StyleInfo.ts +++ b/src/openapi/models/StyleInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/SupportedDevicesInfo.ts b/src/openapi/models/SupportedDevicesInfo.ts index 4fef6fbb54..16eb2bc96f 100644 --- a/src/openapi/models/SupportedDevicesInfo.ts +++ b/src/openapi/models/SupportedDevicesInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/SupportedFeatures.ts b/src/openapi/models/SupportedFeatures.ts index 3376b4bc05..79216ea4dd 100644 --- a/src/openapi/models/SupportedFeatures.ts +++ b/src/openapi/models/SupportedFeatures.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -79,6 +79,12 @@ export interface SupportedFeatures { * @memberof SupportedFeatures */ manageLibrary?: boolean; + /** + * + * @type {boolean} + * @memberof SupportedFeatures + */ + returnResourceUrl?: boolean; } /** @@ -118,6 +124,7 @@ export function SupportedFeaturesFromJSONTyped(json: any, ignoreDiscriminator: b 'synthesisMorphing': json['synthesis_morphing'], 'sing': !exists(json, 'sing') ? undefined : json['sing'], 'manageLibrary': !exists(json, 'manage_library') ? undefined : json['manage_library'], + 'returnResourceUrl': !exists(json, 'return_resource_url') ? undefined : json['return_resource_url'], }; } @@ -140,6 +147,7 @@ export function SupportedFeaturesToJSON(value?: SupportedFeatures | null): any { 'synthesis_morphing': value.synthesisMorphing, 'sing': value.sing, 'manage_library': value.manageLibrary, + 'return_resource_url': value.returnResourceUrl, }; } diff --git a/src/openapi/models/UpdateInfo.ts b/src/openapi/models/UpdateInfo.ts index 6e2154765b..816189bfd5 100644 --- a/src/openapi/models/UpdateInfo.ts +++ b/src/openapi/models/UpdateInfo.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/UserDictWord.ts b/src/openapi/models/UserDictWord.ts index 4d2a9c9ace..925eb3f861 100644 --- a/src/openapi/models/UserDictWord.ts +++ b/src/openapi/models/UserDictWord.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/ValidationError.ts b/src/openapi/models/ValidationError.ts index 11f534f675..a08053b021 100644 --- a/src/openapi/models/ValidationError.ts +++ b/src/openapi/models/ValidationError.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/ValidationErrorLocInner.ts b/src/openapi/models/ValidationErrorLocInner.ts index 340b6f1683..db6095c134 100644 --- a/src/openapi/models/ValidationErrorLocInner.ts +++ b/src/openapi/models/ValidationErrorLocInner.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/VvlibManifest.ts b/src/openapi/models/VvlibManifest.ts index a32ffa3db9..a4b618c261 100644 --- a/src/openapi/models/VvlibManifest.ts +++ b/src/openapi/models/VvlibManifest.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/openapi/models/WordTypes.ts b/src/openapi/models/WordTypes.ts index 317f9ecafd..78a3d901e8 100644 --- a/src/openapi/models/WordTypes.ts +++ b/src/openapi/models/WordTypes.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * @@ -14,7 +14,7 @@ /** - * fastapiでword_type引数を検証する時に使用するクラス + * 品詞 * @export */ export const WordTypes = { diff --git a/src/openapi/models/index.ts b/src/openapi/models/index.ts index 0af578cdf8..5ed82691a4 100644 --- a/src/openapi/models/index.ts +++ b/src/openapi/models/index.ts @@ -22,7 +22,6 @@ export * from './Score'; export * from './Speaker'; export * from './SpeakerInfo'; export * from './SpeakerStyle'; -export * from './SpeakerSupportPermittedSynthesisMorphing'; export * from './SpeakerSupportedFeatures'; export * from './StyleInfo'; export * from './SupportedDevicesInfo'; diff --git a/src/openapi/runtime.ts b/src/openapi/runtime.ts index 865b082d87..f982393c8d 100644 --- a/src/openapi/runtime.ts +++ b/src/openapi/runtime.ts @@ -2,7 +2,7 @@ /* eslint-disable */ /** * VOICEVOX Engine - * VOICEVOXの音声合成エンジンです。 + * VOICEVOX の音声合成エンジンです。 * * The version of the OpenAPI document: latest * diff --git a/src/store/audio.ts b/src/store/audio.ts index b1dc0d06aa..caa664fea2 100644 --- a/src/store/audio.ts +++ b/src/store/audio.ts @@ -289,6 +289,22 @@ export const audioStore = createPartialStore({ const instance = await dispatch("INSTANTIATE_ENGINE_CONNECTOR", { engineId, }); + + // リソースをURLで取得するかどうか。falseの場合はbase64文字列。 + const useResourceUrl = + state.engineManifests[engineId].supportedFeatures.returnResourceUrl ?? + false; + const getResourceSrc = async function ( + resource: string, + type: "image" | "wav", + ) { + return useResourceUrl + ? resource + : type == "image" + ? await base64ImageToUri(resource) + : await base64ToUri(resource, "audio/wav"); + }; + const getStyles = async function ( speaker: Speaker, speakerInfo: SpeakerInfo, @@ -303,19 +319,19 @@ export const audioStore = createPartialStore({ `Not found the style id "${style.id}" of "${speaker.name}". `, ); const voiceSamples = await Promise.all( - styleInfo.voiceSamples.map((voiceSample) => { - return base64ToUri(voiceSample, "audio/wav"); - }), + styleInfo.voiceSamples.map((voiceSample) => + getResourceSrc(voiceSample, "wav"), + ), ); styles[i] = { styleName: style.name, styleId: StyleId(style.id), styleType: style.type, engineId, - iconPath: await base64ImageToUri(styleInfo.icon), + iconPath: await getResourceSrc(styleInfo.icon, "image"), portraitPath: styleInfo.portrait && - (await base64ImageToUri(styleInfo.portrait)), + (await getResourceSrc(styleInfo.portrait, "image")), voiceSamplePaths: voiceSamples, }; } @@ -332,6 +348,7 @@ export const audioStore = createPartialStore({ speakerInfoPromise = instance .invoke("speakerInfoSpeakerInfoGet")({ speakerUuid: speaker.speakerUuid, + ...(useResourceUrl && { resourceFormat: "url" }), }) .catch((error) => { window.backend.logError(error, `Failed to get speakerInfo.`); @@ -348,6 +365,7 @@ export const audioStore = createPartialStore({ singerInfoPromise = instance .invoke("singerInfoSingerInfoGet")({ speakerUuid: singer.speakerUuid, + ...(useResourceUrl && { resourceFormat: "url" }), }) .catch((error) => { window.backend.logError(error, `Failed to get singerInfo.`); @@ -374,7 +392,10 @@ export const audioStore = createPartialStore({ ]).then((styles) => styles.flat()); const characterInfo: CharacterInfo = { - portraitPath: await base64ImageToUri(baseCharacterInfo.portrait), + portraitPath: await getResourceSrc( + baseCharacterInfo.portrait, + "image", + ), metas: { speakerUuid: SpeakerId(baseSpeaker.speakerUuid), speakerName: baseSpeaker.name,