{ "openapi": "3.1.0", "info": { "title": "VOICEVOX ENGINE OSS", "description": "VOICEVOX OSS の音声合成エンジンです。", "version": "latest" }, "paths": { "/audio_query": { "post": { "tags": [ "クエリ作成" ], "summary": "音声合成用のクエリを作成する", "description": "音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま音声合成に利用できます。各値の意味は`Schemas`を参照してください。\n\n**Laravel実装状況**: ⚠️ Laravelではenable_katakana_english非対応(フォールバック実装済み)", "operationId": "audio_query", "parameters": [ { "name": "text", "in": "query", "required": true, "schema": { "type": "string", "title": "Text" } }, { "name": "speaker", "in": "query", "required": true, "schema": { "type": "integer", "title": "Speaker" } }, { "name": "enable_katakana_english", "in": "query", "required": false, "schema": { "type": "boolean", "default": true, "title": "Enable Katakana English" } }, { "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`を参照してください。\n\n**Laravel実装状況**: ⚠️ NativePresetStoreとコアのcreateAudioQueryで対応。enable_katakana_english非対応(プリセットデータを共有してないのでフォールバックなし)", "operationId": "audio_query_from_preset", "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": "enable_katakana_english", "in": "query", "required": false, "schema": { "type": "boolean", "default": true, "title": "Enable Katakana English" } }, { "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": "テキストからアクセント句を得ます。\n\nis_kanaが`true`のとき、テキストは次のAquesTalk 風記法で解釈されます。デフォルトは`false`です。\n* 全てのカナはカタカナで記述される\n* アクセント句は`/`または`、`で区切る。`、`で区切った場合に限り無音区間が挿入される。\n* カナの手前に`_`を入れるとそのカナは無声化される\n* アクセント位置を`'`で指定する。全てのアクセント句にはアクセント位置を1つ指定する必要がある。\n* アクセント句末に`?`(全角)を入れることにより疑問文の発音ができる。\nenable_katakana_englishが`true`のとき、テキスト中の読みが不明な英単語をカタカナ読みにします。デフォルトは`true`です。\nis_kanaが`true`のとき、enable_katakana_englishの値は無視されます。\n\n**Laravel実装状況**: ⚠️ is_kanaのtrue/false両対応、enable_katakana_english非対応(フォールバック実装済み)", "operationId": "accent_phrases", "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": "enable_katakana_english", "in": "query", "required": false, "schema": { "type": "boolean", "default": true, "title": "Enable Katakana English" } }, { "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", "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)" } }, "/mora_length": { "post": { "tags": [ "クエリ編集" ], "summary": "アクセント句から音素の長さを得る", "operationId": "mora_length", "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)" } }, "/mora_pitch": { "post": { "tags": [ "クエリ編集" ], "summary": "アクセント句から音高を得る", "operationId": "mora_pitch", "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)" } }, "/synthesis": { "post": { "tags": [ "音声合成" ], "summary": "音声合成する", "operationId": "synthesis", "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)" } }, "/v1/audio/speech": { "post": { "tags": [ "OpenAI互換" ], "summary": "OpenAI互換の音声合成を行う", "description": "OpenAI Audio Speech API互換のリクエストで音声合成を行い、WAV音声を返します。`voice`にはVOICEVOXのスタイルID、AI SDKの音声エイリアス、OpenAIのボイス名を指定できます。`speed`はVOICEVOXの`speedScale`に適用されます。`model`、`instructions`、`response_format`、`stream_format`は互換性のため受け付けますが、Laravel版では現在WAV出力固定です。\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)", "operationId": "openai_audio_speech", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "input", "voice" ], "properties": { "model": { "type": "string", "title": "Model", "description": "OpenAI互換のモデル名。Laravel版では互換性のため受け付けます。" }, "input": { "type": "string", "maxLength": 4096, "title": "Input", "description": "音声合成するテキスト" }, "voice": { "anyOf": [ { "type": "string" }, { "type": "integer" }, { "type": "object", "properties": { "id": { "type": "string", "title": "Voice Id" } } } ], "title": "Voice", "description": "VOICEVOXのスタイルID、AI SDKの音声エイリアス、またはOpenAIのボイス名" }, "instructions": { "type": "string", "maxLength": 4096, "title": "Instructions", "description": "OpenAI互換パラメータ。Laravel版では現在使用しません。" }, "response_format": { "type": "string", "title": "Response Format", "description": "OpenAI互換パラメータ。Laravel版では現在WAV出力固定です。" }, "speed": { "type": "number", "maximum": 4, "minimum": 0.25, "default": 1, "title": "Speed", "description": "VOICEVOXのspeedScaleに適用する読み上げ速度" }, "stream_format": { "type": "string", "title": "Stream Format", "description": "OpenAI互換パラメータ。Laravel版では現在使用しません。" } }, "title": "OpenAiSpeechRequest" } } } }, "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", "parameters": [ { "name": "speaker", "in": "query", "required": true, "schema": { "type": "integer", "title": "Speaker" } }, { "name": "enable_interrogative_upspeak", "in": "query", "required": false, "schema": { "type": "boolean", "default": true, "title": "Enable Interrogative Upspeak" } }, { "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" } } } } }, "description": "\n\n**Laravel実装状況**: ❌ コアに相当機能なし(フォールバックのみ、公式でもデフォルト無効)" } }, "/multi_synthesis": { "post": { "tags": [ "音声合成" ], "summary": "複数まとめて音声合成する", "operationId": "multi_synthesis", "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": { "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアで対応(フォールバックあり)" } }, "/sing_frame_audio_query": { "post": { "tags": [ "クエリ作成" ], "summary": "歌唱音声合成用のクエリを作成する", "description": "歌唱音声合成用のクエリの初期値を得ます。ここで得られたクエリはそのまま歌唱音声合成に利用できます。各値の意味は`Schemas`を参照してください。\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)", "operationId": "sing_frame_audio_query", "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_f0": { "post": { "tags": [ "クエリ編集" ], "summary": "楽譜・歌唱音声合成用のクエリからフレームごとの基本周波数を得る", "operationId": "sing_frame_f0", "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_f0_sing_frame_f0_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "number" }, "title": "Response Sing Frame F0 Sing Frame F0 Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアのcreateSingFrameF0で直接対応(フォールバック実装済み)" } }, "/sing_frame_volume": { "post": { "tags": [ "クエリ編集" ], "summary": "楽譜・歌唱音声合成用のクエリからフレームごとの音量を得る", "operationId": "sing_frame_volume", "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" } } } } }, "description": "\n\n**Laravel実装状況**: ✅ コアのcreateSingFrameVolumeで直接対応(フォールバック実装済み)" } }, "/frame_synthesis": { "post": { "tags": [ "音声合成" ], "summary": "Frame Synthesis", "description": "歌唱音声合成を行います。\n\n**Laravel実装状況**: ✅ コアで完全対応(フォールバック実装済み)", "operationId": "frame_synthesis", "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ファイルで返します。\n\n**Laravel実装状況**: ❌ コアに相当機能なし(フォールバックのみ)", "operationId": "connect_waves", "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\n従っていない場合はエラーが返ります。\n\n**Laravel実装状況**: ✅ Laravelのみで対応(フォールバック不要)", "operationId": "validate_kana", "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\n実行しなくても他のAPIは使用できますが、初回実行時に時間がかかることがあります。\n\n**Laravel実装状況**: ❌ コアはvvmロードで初期化済み(フォールバックもなし)", "operationId": "initialize_speaker", "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": "指定されたスタイルが初期化されているかどうかを返します。\n\n**Laravel実装状況**: ❌ コアはvvmロードで初期化済み(フォールバックもなし)", "operationId": "is_initialized_speaker", "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" } } } } } } }, "/supported_devices": { "get": { "tags": [ "その他" ], "summary": "Supported Devices", "description": "対応デバイスの一覧を取得します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックのみ)", "operationId": "supported_devices", "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" } } } } } } }, "/morphable_targets": { "post": { "tags": [ "音声合成" ], "summary": "指定したスタイルに対してエンジン内のキャラクターがモーフィングが可能か判定する", "description": "指定されたベーススタイルに対してエンジン内の各キャラクターがモーフィング機能を利用可能か返します。\n\nモーフィングの許可/禁止は`/speakers`の`speaker.supported_features.synthesis_morphing`に記載されています。\nプロパティが存在しない場合は、モーフィングが許可されているとみなします。\n返り値のスタイルIDはstring型なので注意。\n\n**Laravel実装状況**: ❌ コアに相当機能なし(フォールバックのみ)", "operationId": "morphable_targets", "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\nモーフィングの割合は`morph_rate`で指定でき、0.0でベースのスタイル、1.0でターゲットのスタイルに近づきます。\n\n**Laravel実装状況**: ❌ コアに相当機能なし(フォールバックのみ)", "operationId": "_synthesis_morphing", "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, "minimum": 0, "title": "Morph Rate" } }, { "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" } } } } } } }, "/presets": { "get": { "tags": [ "その他" ], "summary": "Get Presets", "description": "エンジンが保持しているプリセットの設定を返します。\n\n**Laravel実装状況**: ✅ NativePresetStoreでJSONファイルに永続化(フォールバック不要)", "operationId": "get_presets", "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": "新しいプリセットを追加します。\n\n**Laravel実装状況**: ✅ NativePresetStoreでJSONファイルに永続化(フォールバック不要)", "operationId": "add_preset", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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": "既存のプリセットを更新します。\n\n**Laravel実装状況**: ✅ NativePresetStoreでJSONファイルに永続化(フォールバック不要)", "operationId": "update_preset", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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": "既存のプリセットを削除します。\n\n**Laravel実装状況**: ✅ NativePresetStoreでJSONファイルに永続化(フォールバック不要)", "operationId": "delete_preset", "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": "喋れるキャラクターの情報の一覧を返します。\n\n**Laravel実装状況**: ✅ コアで完全対応(公式JSONと完全一致、フォールバック実装済み)", "operationId": "speakers", "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": "UUID で指定された喋れるキャラクターの情報を返します。\n\n画像や音声はresource_formatで指定した形式で返されます。\n\n**Laravel実装状況**: ✅ Laravelで完全対応(公式JSONと完全一致、フォールバック実装済み)", "operationId": "speaker_info", "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": "歌えるキャラクターの情報の一覧を返します。\n\n**Laravel実装状況**: ✅ コアで完全対応(公式JSONと完全一致、フォールバック実装済み)", "operationId": "singers", "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": "UUID で指定された歌えるキャラクターの情報を返します。\n\n画像や音声はresource_formatで指定した形式で返されます。\n\n**Laravel実装状況**: ✅ Laravelで完全対応(公式JSONと完全一致、フォールバック実装済み)", "operationId": "singer_info", "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": "ダウンロード可能な音声ライブラリの情報を返します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックもなし)", "operationId": "downloadable_libraries", "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": "インストールした音声ライブラリの情報を返します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックもなし)", "operationId": "installed_libraries", "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\n音声ライブラリのZIPファイルをリクエストボディとして送信してください。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックもなし)", "operationId": "install_library", "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": "音声ライブラリをアンインストールします。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックもなし)", "operationId": "uninstall_library", "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\n単語の表層形(surface)は正規化済みの物を返します。\n\n**Laravel実装状況**: ✅ NativeUserDictでJSONファイルに永続化(フォールバック不要)", "operationId": "get_user_dict_words", "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": "ユーザー辞書に言葉を追加します。\n\n**Laravel実装状況**: ✅ NativeUserDictでJSONファイルに永続化(フォールバック不要)", "operationId": "add_user_dict_word", "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": { "$ref": "#/components/schemas/WordTypes", "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか" }, "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": "ユーザー辞書に登録されている言葉を更新します。\n\n**Laravel実装状況**: ✅ NativeUserDictでJSONファイルに永続化(フォールバック不要)", "operationId": "rewrite_user_dict_word", "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": { "$ref": "#/components/schemas/WordTypes", "description": "PROPER_NOUN(固有名詞)、COMMON_NOUN(普通名詞)、VERB(動詞)、ADJECTIVE(形容詞)、SUFFIX(語尾)のいずれか" }, "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": "ユーザー辞書に登録されている言葉を削除します。\n\n**Laravel実装状況**: ✅ NativeUserDictでJSONファイルに永続化(フォールバック不要)", "operationId": "delete_user_dict_word", "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": "他のユーザー辞書をインポートします。\n\n**Laravel実装状況**: ✅ NativeUserDictでJSONファイルに永続化(フォールバック不要)", "operationId": "import_user_dict_words", "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": "エンジンのバージョンを取得します。\n\n**Laravel実装状況**: ✅ Laravelのみで対応(フォールバック不要)", "operationId": "version", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "string", "title": "Response Version Version Get" } } } } } } }, "/core_versions": { "get": { "tags": [ "その他" ], "summary": "Core Versions", "description": "利用可能なコアのバージョン一覧を取得します。\n\n**Laravel実装状況**: ✅ コアのVoicevoxCore::getVersion()で対応(フォールバック不要)", "operationId": "core_versions", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "type": "string" }, "type": "array", "title": "Response Core Versions Core Versions Get" } } } } } } }, "/engine_manifest": { "get": { "tags": [ "その他" ], "summary": "Engine Manifest", "description": "エンジンマニフェストを取得します。\n\n**Laravel実装状況**: ✅ Laravelパッケージ用のマニフェストを静的に返す(フォールバック不要)", "operationId": "engine_manifest", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EngineManifest" } } } } } } }, "/setting": { "get": { "tags": [ "設定" ], "summary": "Setting Get", "description": "設定ページを返します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックのみ)", "operationId": "setting_get", "responses": { "200": { "description": "Successful Response" } } }, "post": { "tags": [ "設定" ], "summary": "Setting Post", "description": "設定を更新します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックのみ)", "operationId": "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": "ポータルページを返します。\n\n**Laravel実装状況**: ❌ エンジン固有の機能(フォールバックのみ)", "operationId": "get_portal_page", "responses": { "200": { "description": "Successful Response", "content": { "text/html": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "AccentPhrase": { "properties": { "moras": { "items": { "$ref": "#/components/schemas/Mora" }, "type": "array", "title": "Moras", "description": "モーラのリスト" }, "accent": { "type": "integer", "title": "Accent", "description": "アクセント箇所" }, "pause_mora": { "$ref": "#/components/schemas/Mora", "title": "Pause Mora", "description": "アクセント句の末尾につく無音モーラ。null の場合は無音モーラを付けない。" }, "is_interrogative": { "type": "boolean", "title": "Is Interrogative", "description": "疑問系かどうか", "default": false } }, "type": "object", "required": [ "moras", "accent" ], "title": "AccentPhrase", "description": "アクセント句ごとの情報。" }, "AudioQuery": { "properties": { "accent_phrases": { "items": { "$ref": "#/components/schemas/AccentPhrase" }, "type": "array", "title": "Accent Phrases", "description": "アクセント句のリスト" }, "speedScale": { "type": "number", "title": "Speedscale", "description": "全体の話速" }, "pitchScale": { "type": "number", "title": "Pitchscale", "description": "全体の音高" }, "intonationScale": { "type": "number", "title": "Intonationscale", "description": "全体の抑揚" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "全体の音量" }, "prePhonemeLength": { "type": "number", "title": "Prephonemelength", "description": "音声の前の無音時間" }, "postPhonemeLength": { "type": "number", "title": "Postphonemelength", "description": "音声の後の無音時間" }, "pauseLength": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Pauselength", "description": "句読点などの無音時間。nullのときは無視される。デフォルト値はnull" }, "pauseLengthScale": { "type": "number", "title": "Pauselengthscale", "description": "句読点などの無音時間(倍率)。デフォルト値は1", "default": 1 }, "outputSamplingRate": { "type": "integer", "title": "Outputsamplingrate", "description": "音声データの出力サンプリングレート" }, "outputStereo": { "type": "boolean", "title": "Outputstereo", "description": "音声データをステレオ出力するか否か" }, "kana": { "type": "string", "title": "Kana", "description": "[読み取り専用]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_f0_sing_frame_f0_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_f0_sing_frame_f0_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": "Name", "description": "音声ライブラリの名前" }, "uuid": { "type": "string", "title": "Uuid", "description": "音声ライブラリのUUID" }, "version": { "type": "string", "title": "Version", "description": "音声ライブラリのバージョン" }, "download_url": { "type": "string", "title": "Download Url", "description": "音声ライブラリのダウンロードURL" }, "bytes": { "type": "integer", "title": "Bytes", "description": "音声ライブラリのバイト数" }, "speakers": { "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "type": "array", "title": "Speakers", "description": "音声ライブラリに含まれるキャラクターのリスト" } }, "type": "object", "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers" ], "title": "DownloadableLibraryInfo", "description": "ダウンロード可能な音声ライブラリの情報。" }, "EngineManifest": { "properties": { "manifest_version": { "type": "string", "title": "Manifest Version", "description": "マニフェストのバージョン" }, "name": { "type": "string", "title": "Name", "description": "エンジン名" }, "brand_name": { "type": "string", "title": "Brand Name", "description": "ブランド名" }, "uuid": { "type": "string", "title": "Uuid", "description": "エンジンのUUID" }, "url": { "type": "string", "title": "Url", "description": "エンジンのURL" }, "icon": { "type": "string", "title": "Icon", "description": "エンジンのアイコンをBASE64エンコードしたもの" }, "default_sampling_rate": { "type": "integer", "title": "Default Sampling Rate", "description": "デフォルトのサンプリング周波数" }, "frame_rate": { "type": "number", "title": "Frame Rate", "description": "エンジンのフレームレート" }, "terms_of_service": { "type": "string", "title": "Terms Of Service", "description": "エンジンの利用規約" }, "update_infos": { "items": { "$ref": "#/components/schemas/UpdateInfo" }, "type": "array", "title": "Update Infos", "description": "エンジンのアップデート情報" }, "dependency_licenses": { "items": { "$ref": "#/components/schemas/LicenseInfo" }, "type": "array", "title": "Dependency Licenses", "description": "依存関係のライセンス情報" }, "supported_vvlib_manifest_version": { "type": "string", "title": "Supported Vvlib Manifest Version", "description": "エンジンが対応するvvlibのバージョン" }, "supported_features": { "$ref": "#/components/schemas/SupportedFeatures", "description": "エンジンが持つ機能" } }, "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": "F0", "description": "フレームごとの基本周波数" }, "volume": { "items": { "type": "number" }, "type": "array", "title": "Volume", "description": "フレームごとの音量" }, "phonemes": { "items": { "$ref": "#/components/schemas/FramePhoneme" }, "type": "array", "title": "Phonemes", "description": "音素のリスト" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "全体の音量" }, "outputSamplingRate": { "type": "integer", "title": "Outputsamplingrate", "description": "音声データの出力サンプリングレート" }, "outputStereo": { "type": "boolean", "title": "Outputstereo", "description": "音声データをステレオ出力するか否か" } }, "type": "object", "required": [ "f0", "volume", "phonemes", "volumeScale", "outputSamplingRate", "outputStereo" ], "title": "FrameAudioQuery", "description": "フレームごとの音声合成用のクエリ。" }, "FramePhoneme": { "properties": { "phoneme": { "type": "string", "title": "Phoneme", "description": "音素" }, "frame_length": { "type": "integer", "title": "Frame Length", "description": "音素のフレーム長" }, "note_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note Id", "description": "音符のID" } }, "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": "Name", "description": "音声ライブラリの名前" }, "uuid": { "type": "string", "title": "Uuid", "description": "音声ライブラリのUUID" }, "version": { "type": "string", "title": "Version", "description": "音声ライブラリのバージョン" }, "download_url": { "type": "string", "title": "Download Url", "description": "音声ライブラリのダウンロードURL" }, "bytes": { "type": "integer", "title": "Bytes", "description": "音声ライブラリのバイト数" }, "speakers": { "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "type": "array", "title": "Speakers", "description": "音声ライブラリに含まれるキャラクターのリスト" }, "uninstallable": { "type": "boolean", "title": "Uninstallable", "description": "アンインストール可能かどうか" } }, "type": "object", "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers", "uninstallable" ], "title": "InstalledLibraryInfo", "description": "インストール済み音声ライブラリの情報。" }, "LibrarySpeaker": { "properties": { "speaker": { "$ref": "#/components/schemas/Speaker" }, "speaker_info": { "$ref": "#/components/schemas/SpeakerInfo" } }, "type": "object", "required": [ "speaker", "speaker_info" ], "title": "LibrarySpeaker", "description": "音声ライブラリに含まれるキャラクターの情報。" }, "LicenseInfo": { "properties": { "name": { "type": "string", "title": "Name", "description": "依存ライブラリ名" }, "version": { "type": "string", "title": "Version", "description": "依存ライブラリのバージョン" }, "license": { "type": "string", "title": "License", "description": "依存ライブラリのライセンス名" }, "text": { "type": "string", "title": "Text", "description": "依存ライブラリのライセンス本文" } }, "type": "object", "required": [ "name", "text" ], "title": "LicenseInfo", "description": "依存ライブラリのライセンス情報。" }, "Mora": { "properties": { "text": { "type": "string", "title": "Text", "description": "文字" }, "consonant": { "type": "string", "title": "Consonant", "description": "子音の音素" }, "consonant_length": { "type": "number", "title": "Consonant Length", "description": "子音の長さ" }, "vowel": { "type": "string", "title": "Vowel", "description": "母音の音素" }, "vowel_length": { "type": "number", "title": "Vowel Length", "description": "母音の長さ" }, "pitch": { "type": "number", "title": "Pitch", "description": "音高" } }, "type": "object", "required": [ "text", "vowel", "vowel_length", "pitch" ], "title": "Mora", "description": "モーラ(子音+母音)ごとの情報。" }, "MorphableTargetInfo": { "properties": { "is_morphable": { "type": "boolean", "title": "Is Morphable", "description": "指定したキャラクターに対してモーフィングの可否" } }, "type": "object", "required": [ "is_morphable" ], "title": "MorphableTargetInfo", "description": "モーフィング相手としての情報。" }, "Note": { "properties": { "id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Id", "description": "ID" }, "key": { "type": "integer", "title": "Key", "description": "音階" }, "frame_length": { "type": "integer", "title": "Frame Length", "description": "音符のフレーム長" }, "lyric": { "type": "string", "title": "Lyric", "description": "音符の歌詞" } }, "type": "object", "required": [ "frame_length", "lyric" ], "title": "Note", "description": "音符ごとの情報。" }, "ParseKanaBadRequest": { "properties": { "text": { "type": "string", "title": "Text", "description": "エラーメッセージ" }, "error_name": { "type": "string", "title": "Error Name", "description": "エラー名\n\n|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": "Error Args", "description": "エラーを起こした箇所" } }, "type": "object", "required": [ "text", "error_name", "error_args" ], "title": "ParseKanaBadRequest", "description": "読み仮名のパースに失敗した。" }, "Preset": { "properties": { "id": { "type": "integer", "title": "Id", "description": "プリセットID" }, "name": { "type": "string", "title": "Name", "description": "プリセット名" }, "speaker_uuid": { "type": "string", "title": "Speaker Uuid", "description": "キャラクターのUUID" }, "style_id": { "type": "integer", "title": "Style Id", "description": "スタイルID" }, "speedScale": { "type": "number", "title": "Speedscale", "description": "全体の話速" }, "pitchScale": { "type": "number", "title": "Pitchscale", "description": "全体の音高" }, "intonationScale": { "type": "number", "title": "Intonationscale", "description": "全体の抑揚" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "全体の音量" }, "prePhonemeLength": { "type": "number", "title": "Prephonemelength", "description": "音声の前の無音時間" }, "postPhonemeLength": { "type": "number", "title": "Postphonemelength", "description": "音声の後の無音時間" }, "pauseLength": { "type": "number", "title": "Pauselength", "description": "句読点などの無音時間" }, "pauseLengthScale": { "type": "number", "title": "Pauselengthscale", "description": "句読点などの無音時間(倍率)", "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": "Notes", "description": "音符のリスト" } }, "type": "object", "required": [ "notes" ], "title": "Score", "description": "楽譜情報。" }, "Speaker": { "properties": { "name": { "type": "string", "title": "Name", "description": "名前" }, "speaker_uuid": { "type": "string", "title": "Speaker Uuid", "description": "キャラクターのUUID" }, "styles": { "items": { "$ref": "#/components/schemas/SpeakerStyle" }, "type": "array", "title": "Styles", "description": "スタイルの一覧" }, "version": { "type": "string", "title": "Version", "description": "キャラクターのバージョン" }, "supported_features": { "$ref": "#/components/schemas/SpeakerSupportedFeatures", "description": "キャラクターの対応機能" } }, "type": "object", "required": [ "name", "speaker_uuid", "styles", "version" ], "title": "Speaker", "description": "キャラクター情報" }, "SpeakerInfo": { "properties": { "policy": { "type": "string", "title": "Policy", "description": "policy.md" }, "portrait": { "type": "string", "title": "Portrait", "description": "立ち絵画像をbase64エンコードしたもの、あるいはURL" }, "style_infos": { "items": { "$ref": "#/components/schemas/StyleInfo" }, "type": "array", "title": "Style Infos", "description": "スタイルの追加情報" } }, "type": "object", "required": [ "policy", "portrait", "style_infos" ], "title": "SpeakerInfo", "description": "キャラクターの追加情報" }, "SpeakerStyle": { "properties": { "name": { "type": "string", "title": "Name", "description": "スタイル名" }, "id": { "type": "integer", "title": "Id", "description": "スタイルID" }, "type": { "type": "string", "enum": [ "talk", "singing_teacher", "frame_decode", "sing" ], "title": "Type", "description": "スタイルの種類。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": "Permitted Synthesis Morphing", "description": "モーフィング機能への対応。'ALL' は「全て許可」、'SELF_ONLY' は「同じキャラクター内でのみ許可」、'NOTHING' は「全て禁止」", "default": "ALL" } }, "type": "object", "title": "SpeakerSupportedFeatures", "description": "キャラクターの対応機能の情報" }, "StyleInfo": { "properties": { "id": { "type": "integer", "title": "Id", "description": "スタイルID" }, "icon": { "type": "string", "title": "Icon", "description": "このスタイルのアイコンをbase64エンコードしたもの、あるいはURL" }, "portrait": { "type": "string", "title": "Portrait", "description": "このスタイルの立ち絵画像をbase64エンコードしたもの、あるいはURL" }, "voice_samples": { "items": { "type": "string" }, "type": "array", "title": "Voice Samples", "description": "サンプル音声をbase64エンコードしたもの、あるいはURL" } }, "type": "object", "required": [ "id", "icon", "voice_samples" ], "title": "StyleInfo", "description": "スタイルの追加情報" }, "SupportedDevicesInfo": { "properties": { "cpu": { "type": "boolean", "title": "Cpu", "description": "CPUに対応しているか" }, "cuda": { "type": "boolean", "title": "Cuda", "description": "CUDA(Nvidia GPU)に対応しているか" }, "dml": { "type": "boolean", "title": "Dml", "description": "DirectML(Nvidia GPU/Radeon GPU等)に対応しているか" } }, "type": "object", "required": [ "cpu", "cuda", "dml" ], "title": "SupportedDevicesInfo", "description": "対応しているデバイスの情報。" }, "SupportedFeatures": { "properties": { "adjust_mora_pitch": { "type": "boolean", "title": "Adjust Mora Pitch", "description": "モーラごとの音高の調整" }, "adjust_phoneme_length": { "type": "boolean", "title": "Adjust Phoneme Length", "description": "音素ごとの長さの調整" }, "adjust_speed_scale": { "type": "boolean", "title": "Adjust Speed Scale", "description": "全体の話速の調整" }, "adjust_pitch_scale": { "type": "boolean", "title": "Adjust Pitch Scale", "description": "全体の音高の調整" }, "adjust_intonation_scale": { "type": "boolean", "title": "Adjust Intonation Scale", "description": "全体の抑揚の調整" }, "adjust_volume_scale": { "type": "boolean", "title": "Adjust Volume Scale", "description": "全体の音量の調整" }, "adjust_pause_length": { "type": "boolean", "title": "Adjust Pause Length", "description": "句読点などの無音時間の調整" }, "interrogative_upspeak": { "type": "boolean", "title": "Interrogative Upspeak", "description": "疑問文の自動調整" }, "synthesis_morphing": { "type": "boolean", "title": "Synthesis Morphing", "description": "2種類のスタイルでモーフィングした音声を合成" }, "sing": { "type": "boolean", "title": "Sing", "description": "歌唱音声合成" }, "manage_library": { "type": "boolean", "title": "Manage Library", "description": "音声ライブラリのインストール・アンインストール" }, "return_resource_url": { "type": "boolean", "title": "Return Resource Url", "description": "キャラクター情報のリソースをURLで返送" }, "apply_katakana_english": { "type": "boolean", "title": "Apply Katakana English", "description": "未知の英単語をカタカナ読みに変換" } }, "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": "Version", "description": "エンジンのバージョン名" }, "descriptions": { "items": { "type": "string" }, "type": "array", "title": "Descriptions", "description": "アップデートの詳細についての説明" }, "contributors": { "items": { "type": "string" }, "type": "array", "title": "Contributors", "description": "貢献者名" } }, "type": "object", "required": [ "version", "descriptions" ], "title": "UpdateInfo", "description": "エンジンのアップデート情報。" }, "UserDictWord": { "properties": { "surface": { "type": "string", "title": "Surface", "description": "表層形" }, "priority": { "type": "integer", "maximum": 10, "minimum": 0, "title": "Priority", "description": "優先度" }, "context_id": { "type": "integer", "title": "Context Id", "description": "文脈ID", "default": 1348 }, "part_of_speech": { "type": "string", "title": "Part Of Speech", "description": "品詞" }, "part_of_speech_detail_1": { "type": "string", "title": "Part Of Speech Detail 1", "description": "品詞細分類1" }, "part_of_speech_detail_2": { "type": "string", "title": "Part Of Speech Detail 2", "description": "品詞細分類2" }, "part_of_speech_detail_3": { "type": "string", "title": "Part Of Speech Detail 3", "description": "品詞細分類3" }, "inflectional_type": { "type": "string", "title": "Inflectional Type", "description": "活用型" }, "inflectional_form": { "type": "string", "title": "Inflectional Form", "description": "活用形" }, "stem": { "type": "string", "title": "Stem", "description": "原形" }, "yomi": { "type": "string", "title": "Yomi", "description": "読み" }, "pronunciation": { "type": "string", "title": "Pronunciation", "description": "発音" }, "accent_type": { "type": "integer", "title": "Accent Type", "description": "アクセント型" }, "mora_count": { "type": "integer", "title": "Mora Count", "description": "モーラ数" }, "accent_associative_rule": { "type": "string", "title": "Accent Associative Rule", "description": "アクセント結合規則" } }, "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" }, "input": { "title": "Input" }, "ctx": { "type": "object", "title": "Context" } }, "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": { "description": "音声ライブラリの名前", "title": "Name", "type": "string" }, "uuid": { "description": "音声ライブラリのUUID", "title": "Uuid", "type": "string" }, "version": { "description": "音声ライブラリのバージョン", "title": "Version", "type": "string" }, "download_url": { "description": "音声ライブラリのダウンロードURL", "title": "Download Url", "type": "string" }, "bytes": { "description": "音声ライブラリのバイト数", "title": "Bytes", "type": "integer" }, "speakers": { "description": "音声ライブラリに含まれるキャラクターのリスト", "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "title": "Speakers", "type": "array" } }, "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers" ], "title": "BaseLibraryInfo", "type": "object" }, "VvlibManifest": { "description": "vvlib(VOICEVOX Library)に関する情報。", "properties": { "manifest_version": { "description": "マニフェストバージョン", "title": "Manifest Version", "type": "string" }, "name": { "description": "音声ライブラリ名", "title": "Name", "type": "string" }, "version": { "description": "音声ライブラリバージョン", "title": "Version", "type": "string" }, "uuid": { "description": "音声ライブラリのUUID", "title": "Uuid", "type": "string" }, "brand_name": { "description": "エンジンのブランド名", "title": "Brand Name", "type": "string" }, "engine_name": { "description": "エンジン名", "title": "Engine Name", "type": "string" }, "engine_uuid": { "description": "エンジンのUUID", "title": "Engine Uuid", "type": "string" } }, "required": [ "manifest_version", "name", "version", "uuid", "brand_name", "engine_name", "engine_uuid" ], "title": "VvlibManifest", "type": "object" } } } }