{ "openapi": "3.1.0", "info": { "title": "VOICEVOX ENGINE OSS", "description": "VOICEVOX OSS text-to-speech synthesis engine.", "version": "latest" }, "paths": { "/audio_query": { "post": { "tags": [ "Query Creation" ], "summary": "Create query for speech synthesis", "description": "Get initial values for speech synthesis query. The query obtained here can be used directly for speech synthesis. Refer to `Schemas` for the meaning of each value.\n\n**Laravel Implementation Status**: ⚠️ Laravel does not support enable_katakana_english (fallback implemented)", "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": [ "Query Creation" ], "summary": "Create query for speech synthesis using preset", "description": "Get initial values for speech synthesis query. The query obtained here can be used directly for speech synthesis. Refer to `Schemas` for the meaning of each value.\n\n**Laravel Implementation Status**: ⚠️ Supported via NativePresetStore and Core's createAudioQuery. Laravel does not support enable_katakana_english. (no fallback needed)", "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": [ "Query Editing" ], "summary": "Get accent phrases from text", "description": "Get accent phrases from text.\n\nWhen is_kana is `true`, text is interpreted as AquesTalk-style notation. Default is `false`.\n* All kana must be written in Katakana\n* Accent phrases are separated by `/` or `,`. When separated by `,`, a silence interval is inserted.\n* Prepending `_` before a kana makes that kana voiceless.\n* Accent position is specified with `'`. If all accent positions are omitted, the engine automatically assigns accents.\n* Accent positions within the same accent phrase must be consistent.", "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": "Failed to parse pronunciation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParseKanaBadRequest" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/mora_data": { "post": { "tags": [ "Query Editing" ], "summary": "Get phoneme lengths and pitch from accent phrases", "description": "\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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" } } } } } } }, "/mora_length": { "post": { "tags": [ "Query Editing" ], "summary": "Get phoneme lengths from accent phrases", "description": "\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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" } } } } } } }, "/mora_pitch": { "post": { "tags": [ "Query Editing" ], "summary": "Get pitch from accent phrases", "description": "\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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" } } } } } } }, "/synthesis": { "post": { "tags": [ "Speech Synthesis" ], "summary": "Perform speech synthesis", "description": "\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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": "Automatically adjust sentence-final intonation when the text is interrogative", "default": true, "title": "Enable Interrogative Upspeak" }, "description": "Automatically adjust sentence-final intonation when the text is interrogative" }, { "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" } } } } } } }, "/v1/audio/speech": { "post": { "tags": [ "OpenAI Compatible" ], "summary": "Create speech with an OpenAI-compatible API", "description": "Create speech from an OpenAI Audio Speech API-compatible request and return WAV audio. `voice` accepts a VOICEVOX style ID, an AI SDK voice alias, or an OpenAI voice name. `speed` is applied to VOICEVOX `speedScale`. `model`, `instructions`, `response_format`, and `stream_format` are accepted for compatibility, but the Laravel implementation currently always returns WAV audio.\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "operationId": "openai_audio_speech", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "input", "voice" ], "properties": { "model": { "type": "string", "title": "Model", "description": "OpenAI-compatible model name. Accepted for compatibility in the Laravel implementation." }, "input": { "type": "string", "maxLength": 4096, "title": "Input", "description": "Text to synthesize" }, "voice": { "anyOf": [ { "type": "string" }, { "type": "integer" }, { "type": "object", "properties": { "id": { "type": "string", "title": "Voice Id" } } } ], "title": "Voice", "description": "VOICEVOX style ID, AI SDK voice alias, or OpenAI voice name" }, "instructions": { "type": "string", "maxLength": 4096, "title": "Instructions", "description": "OpenAI-compatible parameter. Currently unused by the Laravel implementation." }, "response_format": { "type": "string", "title": "Response Format", "description": "OpenAI-compatible parameter. The Laravel implementation currently always returns WAV audio." }, "speed": { "type": "number", "maximum": 4, "minimum": 0.25, "default": 1, "title": "Speed", "description": "Speech speed applied to VOICEVOX speedScale" }, "stream_format": { "type": "string", "title": "Stream Format", "description": "OpenAI-compatible parameter. Currently unused by the Laravel implementation." } }, "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": [ "Speech Synthesis" ], "summary": "Perform speech synthesis (cancellable)", "description": "\n\n**Laravel Implementation Status**: ❌ No equivalent feature in Core (fallback only, disabled by default in official engine)", "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" } } } } } } }, "/multi_synthesis": { "post": { "tags": [ "Speech Synthesis" ], "summary": "Synthesize multiple speeches at once", "description": "\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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": "Automatically adjust sentence-final intonation when the text is interrogative", "default": true, "title": "Enable Interrogative Upspeak" }, "description": "Automatically adjust sentence-final intonation when the text is interrogative" }, { "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": [ "Query Creation" ], "summary": "Create query for singing voice synthesis", "description": "Get initial values for singing voice synthesis query. The query obtained here can be used directly for Singing Voice Synthesis. Refer to `Schemas` for the meaning of each value.\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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": [ "Query Editing" ], "summary": "Get frame-by-frame fundamental frequency from a score / singing voice synthesis query", "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 Implementation Status**: ✅ Directly supported by Core's createSingFrameF0 (fallback implemented)" } }, "/sing_frame_volume": { "post": { "tags": [ "Query Editing" ], "summary": "Get frame-by-frame volume from a score / singing voice synthesis query", "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 Implementation Status**: ✅ Directly supported by Core's createSingFrameVolume (fallback implemented)" } }, "/frame_synthesis": { "post": { "tags": [ "Speech Synthesis" ], "summary": "Frame Synthesis", "description": "Perform singing voice synthesis.\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (fallback implemented)", "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": [ "Other" ], "summary": "Combine multiple base64-encoded wav data into one", "description": "Combine multiple base64-encoded wav data into one and return as wav file.\n\n**Laravel Implementation Status**: ❌ No equivalent feature in Core (fallback only)", "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": [ "Other" ], "summary": "Validate AquesTalk-style notation", "description": "Validate whether text follows AquesTalk-style notation.\n\nReturns error if not compliant.\n\n**Laravel Implementation Status**: ✅ Fully supported by Laravel (no fallback needed)", "operationId": "validate_kana", "parameters": [ { "name": "text", "in": "query", "required": true, "schema": { "type": "string", "description": "Text string to validate", "title": "Text" }, "description": "Text string to validate" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "boolean", "title": "Response Validate Kana Validate Kana Post" } } } }, "400": { "description": "Invalid text", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParseKanaBadRequest" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/initialize_speaker": { "post": { "tags": [ "Other" ], "summary": "Initialize Speaker", "description": "Initialize specified style.\n\nOther APIs can be used without execution, but first execution may take time.\n\n**Laravel Implementation Status**: ❌ Core is pre-initialized via vvm loading (no fallback)", "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": "Whether to skip reinitialization of a style that has already been initialized", "default": false, "title": "Skip Reinit" }, "description": "Whether to skip reinitialization of a style that has already been initialized" }, { "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": [ "Other" ], "summary": "Is Initialized Speaker", "description": "Check if specified style is initialized.\n\n**Laravel Implementation Status**: ❌ Core is pre-initialized via vvm loading (no fallback)", "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": [ "Other" ], "summary": "Supported Devices", "description": "Get list of supported devices.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (fallback only)", "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": [ "Speech Synthesis" ], "summary": "Check if morphing is possible for specified style", "description": "Check if each character in the engine can use morphing feature for specified base style.\n\nMorphing permission is listed in `speaker.supported_features.synthesis_morphing` of `/speakers`.\nIf property does not exist, morphing is assumed to be allowed.\nNote that returned style IDs are string type.\n\n**Laravel Implementation Status**: ❌ No equivalent feature in Core (fallback only)", "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": [ "Speech Synthesis" ], "summary": "Synthesize speech morphed with two styles", "description": "Synthesize audio using the two specified styles and obtain audio morphed at the specified ratio.\n\nThe morphing ratio can be specified with `morph_rate`; 0.0 approaches the base style and 1.0 approaches the target style.\n\n**Laravel Implementation Status**: ❌ No equivalent feature in core (fallback only)", "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": "Automatically adjust sentence-final intonation when the text is interrogative", "default": true, "title": "Enable Interrogative Upspeak" }, "description": "Automatically adjust sentence-final intonation when the text is interrogative" }, { "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": [ "Other" ], "summary": "Get Presets", "description": "Return the preset settings held by the engine.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativePresetStore (no fallback required)", "operationId": "get_presets", "responses": { "200": { "description": "List of presets", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Preset" }, "type": "array", "title": "Response Get Presets Presets Get" } } } } } } }, "/add_preset": { "post": { "tags": [ "Other" ], "summary": "Add Preset", "description": "Add preset.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file via NativePresetStore (no fallback needed)", "operationId": "add_preset", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Preset", "description": "New preset. If preset ID conflicts with existing one, new preset ID will be assigned." } } }, "required": true }, "responses": { "200": { "description": "Preset ID of the added preset", "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": [ "Other" ], "summary": "Update Preset", "description": "Update preset.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file via NativePresetStore (no fallback needed)", "operationId": "update_preset", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Preset", "description": "Preset to update. Preset ID must match the target to update." } } }, "required": true }, "responses": { "200": { "description": "Preset ID of the updated preset", "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": [ "Other" ], "summary": "Delete Preset", "description": "Delete preset.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file via NativePresetStore (no fallback needed)", "operationId": "delete_preset", "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "integer", "description": "Preset ID to delete", "title": "Id" }, "description": "Preset ID to delete" } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/speakers": { "get": { "tags": [ "Other" ], "summary": "Speakers", "description": "Return list of speaking character information.\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (matches official JSON, fallback implemented)", "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": [ "Other" ], "summary": "Speaker Info", "description": "Return information of speaking character specified by UUID.\n\nImages and audio are returned in format specified by resource_format.\n\n**Laravel Implementation Status**: ✅ Fully supported by Laravel (matches official JSON, fallback implemented)", "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": [ "Other" ], "summary": "Singers", "description": "Return list of singing character information.\n\n**Laravel Implementation Status**: ✅ Fully supported by Core (matches official JSON, fallback implemented)", "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": [ "Other" ], "summary": "Singer Info", "description": "Return information of singing character specified by UUID.\n\nImages and audio are returned in format specified by resource_format.\n\n**Laravel Implementation Status**: ✅ Fully supported by Laravel (matches official JSON, fallback implemented)", "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": [ "Voice Library Management" ], "summary": "Downloadable Libraries", "description": "Return downloadable voice library information.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (no fallback)", "operationId": "downloadable_libraries", "responses": { "200": { "description": "List of downloadable voice library information", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DownloadableLibraryInfo" }, "type": "array", "title": "Response Downloadable Libraries Downloadable Libraries Get" } } } } } } }, "/installed_libraries": { "get": { "tags": [ "Voice Library Management" ], "summary": "Installed Libraries", "description": "Return installed voice library information.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (no fallback)", "operationId": "installed_libraries", "responses": { "200": { "description": "Installed voice library information", "content": { "application/json": { "schema": { "additionalProperties": { "$ref": "#/components/schemas/InstalledLibraryInfo" }, "type": "object", "title": "Response Installed Libraries Installed Libraries Get" } } } } } } }, "/install_library/{library_uuid}": { "post": { "tags": [ "Voice Library Management" ], "summary": "Install Library", "description": "Install voice library.\n\nSend voice library ZIP file as request body.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (no fallback)", "operationId": "install_library", "parameters": [ { "name": "library_uuid", "in": "path", "required": true, "schema": { "type": "string", "description": "Voice library ID", "title": "Library Uuid" }, "description": "Voice library ID" } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/uninstall_library/{library_uuid}": { "post": { "tags": [ "Voice Library Management" ], "summary": "Uninstall Library", "description": "Uninstall voice library.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (no fallback)", "operationId": "uninstall_library", "parameters": [ { "name": "library_uuid", "in": "path", "required": true, "schema": { "type": "string", "description": "Voice library ID", "title": "Library Uuid" }, "description": "Voice library ID" } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/user_dict": { "get": { "tags": [ "User Dictionary" ], "summary": "Get User Dict Words", "description": "Return the list of words registered in the user dictionary.\n\nThe surface form of each word is returned in normalized form.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativeUserDict (no fallback required)", "operationId": "get_user_dict_words", "responses": { "200": { "description": "Word UUIDs and their details", "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": [ "User Dictionary" ], "summary": "Add User Dict Word", "description": "Add word to user dictionary.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativeUserDict (no fallback required)", "operationId": "add_user_dict_word", "parameters": [ { "name": "surface", "in": "query", "required": true, "schema": { "type": "string", "description": "Surface form of the word", "title": "Surface" }, "description": "Surface form of the word" }, { "name": "pronunciation", "in": "query", "required": true, "schema": { "type": "string", "description": "Pronunciation of the word (Katakana)", "title": "Pronunciation" }, "description": "Pronunciation of the word (Katakana)" }, { "name": "accent_type", "in": "query", "required": true, "schema": { "type": "integer", "description": "Accent type (indicates where the pitch drops)", "title": "Accent Type" }, "description": "Accent type (indicates where the pitch drops)" }, { "name": "word_type", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/WordTypes", "description": "One of PROPER_NOUN (proper noun), COMMON_NOUN (common noun), VERB, ADJECTIVE, or SUFFIX" }, "description": "One of PROPER_NOUN (proper noun), COMMON_NOUN (common noun), VERB, ADJECTIVE, or SUFFIX" }, { "name": "priority", "in": "query", "required": false, "schema": { "type": "integer", "description": "Word priority (integer from 0 to 10). Larger numbers indicate higher priority. Values from 1 to 9 are recommended.", "maximum": 10, "minimum": 0, "title": "Priority" }, "description": "Word priority (integer from 0 to 10). Larger numbers indicate higher priority. Values from 1 to 9 are recommended." } ], "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": [ "User Dictionary" ], "summary": "Rewrite User Dict Word", "description": "Update a word registered in the user dictionary.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativeUserDict (no fallback required)", "operationId": "rewrite_user_dict_word", "parameters": [ { "name": "word_uuid", "in": "path", "required": true, "schema": { "type": "string", "description": "UUID of the word to update", "title": "Word Uuid" }, "description": "UUID of the word to update" }, { "name": "surface", "in": "query", "required": true, "schema": { "type": "string", "description": "Surface form of the word", "title": "Surface" }, "description": "Surface form of the word" }, { "name": "pronunciation", "in": "query", "required": true, "schema": { "type": "string", "description": "Pronunciation of the word (Katakana)", "title": "Pronunciation" }, "description": "Pronunciation of the word (Katakana)" }, { "name": "accent_type", "in": "query", "required": true, "schema": { "type": "integer", "description": "Accent type (indicates where the pitch drops)", "title": "Accent Type" }, "description": "Accent type (indicates where the pitch drops)" }, { "name": "word_type", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/WordTypes", "description": "One of PROPER_NOUN (proper noun), COMMON_NOUN (common noun), VERB, ADJECTIVE, or SUFFIX" }, "description": "One of PROPER_NOUN (proper noun), COMMON_NOUN (common noun), VERB, ADJECTIVE, or SUFFIX" }, { "name": "priority", "in": "query", "required": false, "schema": { "type": "integer", "description": "Word priority (integer from 0 to 10). Larger numbers indicate higher priority. Values from 1 to 9 are recommended.", "maximum": 10, "minimum": 0, "title": "Priority" }, "description": "Word priority (integer from 0 to 10). Larger numbers indicate higher priority. Values from 1 to 9 are recommended." } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "User Dictionary" ], "summary": "Delete User Dict Word", "description": "Delete a word registered in the user dictionary.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativeUserDict (no fallback required)", "operationId": "delete_user_dict_word", "parameters": [ { "name": "word_uuid", "in": "path", "required": true, "schema": { "type": "string", "description": "UUID of the word to delete", "title": "Word Uuid" }, "description": "UUID of the word to delete" } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/import_user_dict": { "post": { "tags": [ "User Dictionary" ], "summary": "Import User Dict Words", "description": "Import another user dictionary.\n\n**Laravel Implementation Status**: ✅ Persisted to JSON file with NativeUserDict (no fallback required)", "operationId": "import_user_dict_words", "parameters": [ { "name": "override", "in": "query", "required": true, "schema": { "type": "boolean", "description": "Whether to overwrite duplicate entries if any exist", "title": "Override" }, "description": "Whether to overwrite duplicate entries if any exist" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/UserDictWord" }, "description": "User dictionary data to import", "title": "Import Dict Data" } } } }, "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/version": { "get": { "tags": [ "Other" ], "summary": "Version", "description": "Get engine version.\n\n**Laravel Implementation Status**: ✅ Fully supported by Laravel (no fallback needed)", "operationId": "version", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "string", "title": "Response Version Version Get" } } } } } } }, "/core_versions": { "get": { "tags": [ "Other" ], "summary": "Core Versions", "description": "Get list of available core versions.\n\n**Laravel Implementation Status**: ✅ Supported via Core's VoicevoxCore::getVersion() (no fallback needed)", "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": [ "Other" ], "summary": "Engine Manifest", "description": "Get engine manifest.\n\n**Laravel Implementation Status**: ✅ Returns static manifest for Laravel package (no fallback needed)", "operationId": "engine_manifest", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EngineManifest" } } } } } } }, "/setting": { "get": { "tags": [ "Settings" ], "summary": "Setting Get", "description": "Return the settings page.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (fallback only)", "operationId": "setting_get", "responses": { "200": { "description": "Successful Response" } } }, "post": { "tags": [ "Settings" ], "summary": "Setting Post", "description": "Update settings.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (fallback only)", "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": [ "Other" ], "summary": "Get Portal Page", "description": "Return portal page.\n\n**Laravel Implementation Status**: ❌ Engine-specific feature (fallback only)", "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": "List of moras" }, "accent": { "type": "integer", "title": "Accent", "description": "Accent position" }, "pause_mora": { "$ref": "#/components/schemas/Mora", "title": "Pause Mora", "description": "Silent mora appended to the end of the accent phrase. If null, no silent mora is appended." }, "is_interrogative": { "type": "boolean", "title": "Is Interrogative", "description": "Whether the phrase is interrogative", "default": false } }, "type": "object", "required": [ "moras", "accent" ], "title": "AccentPhrase", "description": "Information for each accent phrase." }, "AudioQuery": { "properties": { "accent_phrases": { "items": { "$ref": "#/components/schemas/AccentPhrase" }, "type": "array", "title": "Accent Phrases", "description": "List of accent phrases" }, "speedScale": { "type": "number", "title": "Speedscale", "description": "Overall speech speed" }, "pitchScale": { "type": "number", "title": "Pitchscale", "description": "Overall pitch" }, "intonationScale": { "type": "number", "title": "Intonationscale", "description": "Overall intonation" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "Overall volume" }, "prePhonemeLength": { "type": "number", "title": "Prephonemelength", "description": "Silence duration before the audio" }, "postPhonemeLength": { "type": "number", "title": "Postphonemelength", "description": "Silence duration after the audio" }, "pauseLength": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Pauselength", "description": "Silence duration for punctuation etc. Ignored when null. Default value is null." }, "pauseLengthScale": { "type": "number", "title": "Pauselengthscale", "description": "Silence duration for punctuation etc. (multiplier). Default value is 1.", "default": 1 }, "outputSamplingRate": { "type": "integer", "title": "Outputsamplingrate", "description": "Output sampling rate of the audio data" }, "outputStereo": { "type": "boolean", "title": "Outputstereo", "description": "Whether to output audio data in stereo" }, "kana": { "type": "string", "title": "Kana", "description": "[Read-only] Text in AquesTalk-style notation. Ignored as a query for speech synthesis." } }, "type": "object", "required": [ "accent_phrases", "speedScale", "pitchScale", "intonationScale", "volumeScale", "prePhonemeLength", "postPhonemeLength", "outputSamplingRate", "outputStereo" ], "title": "AudioQuery", "description": "Query for speech synthesis." }, "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 permission mode." }, "DownloadableLibraryInfo": { "properties": { "name": { "type": "string", "title": "Name", "description": "Name of the voice library" }, "uuid": { "type": "string", "title": "Uuid", "description": "UUID of the voice library" }, "version": { "type": "string", "title": "Version", "description": "Version of the voice library" }, "download_url": { "type": "string", "title": "Download Url", "description": "Download URL of the voice library" }, "bytes": { "type": "integer", "title": "Bytes", "description": "Size of the voice library in bytes" }, "speakers": { "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "type": "array", "title": "Speakers", "description": "List of characters included in the voice library" } }, "type": "object", "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers" ], "title": "DownloadableLibraryInfo", "description": "Information about a downloadable voice library." }, "EngineManifest": { "properties": { "manifest_version": { "type": "string", "title": "Manifest Version", "description": "Manifest version" }, "name": { "type": "string", "title": "Name", "description": "Engine name" }, "brand_name": { "type": "string", "title": "Brand Name", "description": "Brand name" }, "uuid": { "type": "string", "title": "Uuid", "description": "Engine UUID" }, "url": { "type": "string", "title": "Url", "description": "Engine URL" }, "icon": { "type": "string", "title": "Icon", "description": "Base64-encoded engine icon" }, "default_sampling_rate": { "type": "integer", "title": "Default Sampling Rate", "description": "Default sampling rate" }, "frame_rate": { "type": "number", "title": "Frame Rate", "description": "Engine frame rate" }, "terms_of_service": { "type": "string", "title": "Terms Of Service", "description": "Engine terms of service" }, "update_infos": { "items": { "$ref": "#/components/schemas/UpdateInfo" }, "type": "array", "title": "Update Infos", "description": "Engine update information" }, "dependency_licenses": { "items": { "$ref": "#/components/schemas/LicenseInfo" }, "type": "array", "title": "Dependency Licenses", "description": "Dependency license information" }, "supported_vvlib_manifest_version": { "type": "string", "title": "Supported Vvlib Manifest Version", "description": "vvlib version supported by this engine" }, "supported_features": { "$ref": "#/components/schemas/SupportedFeatures", "description": "Features supported by this engine" } }, "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": "Information about the engine itself." }, "FrameAudioQuery": { "properties": { "f0": { "items": { "type": "number" }, "type": "array", "title": "F0", "description": "Frame-by-frame fundamental frequency" }, "volume": { "items": { "type": "number" }, "type": "array", "title": "Volume", "description": "Frame-by-frame volume" }, "phonemes": { "items": { "$ref": "#/components/schemas/FramePhoneme" }, "type": "array", "title": "Phonemes", "description": "List of phonemes" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "Overall volume" }, "outputSamplingRate": { "type": "integer", "title": "Outputsamplingrate", "description": "Output sampling rate of the audio data" }, "outputStereo": { "type": "boolean", "title": "Outputstereo", "description": "Whether to output audio data in stereo" } }, "type": "object", "required": [ "f0", "volume", "phonemes", "volumeScale", "outputSamplingRate", "outputStereo" ], "title": "FrameAudioQuery", "description": "Frame-by-frame query for speech synthesis." }, "FramePhoneme": { "properties": { "phoneme": { "type": "string", "title": "Phoneme", "description": "Phoneme" }, "frame_length": { "type": "integer", "title": "Frame Length", "description": "Frame length of the phoneme" }, "note_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note Id", "description": "Note ID" } }, "type": "object", "required": [ "phoneme", "frame_length" ], "title": "FramePhoneme", "description": "Phoneme information." }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "InstalledLibraryInfo": { "properties": { "name": { "type": "string", "title": "Name", "description": "Name of the voice library" }, "uuid": { "type": "string", "title": "Uuid", "description": "UUID of the voice library" }, "version": { "type": "string", "title": "Version", "description": "Version of the voice library" }, "download_url": { "type": "string", "title": "Download Url", "description": "Download URL of the voice library" }, "bytes": { "type": "integer", "title": "Bytes", "description": "Size of the voice library in bytes" }, "speakers": { "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "type": "array", "title": "Speakers", "description": "List of characters included in the voice library" }, "uninstallable": { "type": "boolean", "title": "Uninstallable", "description": "Whether the library can be uninstalled" } }, "type": "object", "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers", "uninstallable" ], "title": "InstalledLibraryInfo", "description": "Information about an installed voice library." }, "LibrarySpeaker": { "properties": { "speaker": { "$ref": "#/components/schemas/Speaker" }, "speaker_info": { "$ref": "#/components/schemas/SpeakerInfo" } }, "type": "object", "required": [ "speaker", "speaker_info" ], "title": "LibrarySpeaker", "description": "Information about a character included in a voice library." }, "LicenseInfo": { "properties": { "name": { "type": "string", "title": "Name", "description": "Dependency library name" }, "version": { "type": "string", "title": "Version", "description": "Dependency library version" }, "license": { "type": "string", "title": "License", "description": "Dependency library license name" }, "text": { "type": "string", "title": "Text", "description": "Dependency library license text" } }, "type": "object", "required": [ "name", "text" ], "title": "LicenseInfo", "description": "License information for a dependency library." }, "Mora": { "properties": { "text": { "type": "string", "title": "Text", "description": "Character" }, "consonant": { "type": "string", "title": "Consonant", "description": "Consonant phoneme" }, "consonant_length": { "type": "number", "title": "Consonant Length", "description": "Consonant length" }, "vowel": { "type": "string", "title": "Vowel", "description": "Vowel phoneme" }, "vowel_length": { "type": "number", "title": "Vowel Length", "description": "Vowel length" }, "pitch": { "type": "number", "title": "Pitch", "description": "Pitch" } }, "type": "object", "required": [ "text", "vowel", "vowel_length", "pitch" ], "title": "Mora", "description": "Information for each mora (consonant + vowel)." }, "MorphableTargetInfo": { "properties": { "is_morphable": { "type": "boolean", "title": "Is Morphable", "description": "Whether morphing is possible for the specified character" } }, "type": "object", "required": [ "is_morphable" ], "title": "MorphableTargetInfo", "description": "Information as a morphing target." }, "Note": { "properties": { "id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Id", "description": "ID" }, "key": { "type": "integer", "title": "Key", "description": "Musical key" }, "frame_length": { "type": "integer", "title": "Frame Length", "description": "Frame length of the note" }, "lyric": { "type": "string", "title": "Lyric", "description": "Lyric of the note" } }, "type": "object", "required": [ "frame_length", "lyric" ], "title": "Note", "description": "Information for each note." }, "ParseKanaBadRequest": { "properties": { "text": { "type": "string", "title": "Text", "description": "Error message" }, "error_name": { "type": "string", "title": "Error Name", "description": "Error name\n\n|name|description|\n|---|---|\n| UNKNOWN_TEXT | Unrecognizable pronunciation found: {text} |\n| ACCENT_TOP | Accent mark at the beginning of a phrase: {text} |\n| ACCENT_TWICE | Multiple accent marks in one phrase: {text} |\n| ACCENT_NOTFOUND | No accent mark found: {text} |\n| DEFAULT_MORA | Cannot convert the following text to mora: {text} |\n| UNKNOWN_ACCENT | Unknown accent type: {text} |" }, "error_args": { "additionalProperties": { "type": "string" }, "type": "object", "title": "Error Args", "description": "Location that caused the error" } }, "type": "object", "required": [ "text", "error_name", "error_args" ], "title": "ParseKanaBadRequest", "description": "Failed to parse pronunciation." }, "Preset": { "properties": { "id": { "type": "integer", "title": "Id", "description": "PresetsID" }, "name": { "type": "string", "title": "Name", "description": "Preset name" }, "speaker_uuid": { "type": "string", "title": "Speaker Uuid", "description": "Character UUID" }, "style_id": { "type": "integer", "title": "Style Id", "description": "Style ID" }, "speedScale": { "type": "number", "title": "Speedscale", "description": "Overall speech speed" }, "pitchScale": { "type": "number", "title": "Pitchscale", "description": "Overall pitch" }, "intonationScale": { "type": "number", "title": "Intonationscale", "description": "Overall intonation" }, "volumeScale": { "type": "number", "title": "Volumescale", "description": "Overall volume" }, "prePhonemeLength": { "type": "number", "title": "Prephonemelength", "description": "Silence duration before the audio" }, "postPhonemeLength": { "type": "number", "title": "Postphonemelength", "description": "Silence duration after the audio" }, "pauseLength": { "type": "number", "title": "Pauselength", "description": "Silence duration for punctuation etc." }, "pauseLengthScale": { "type": "number", "title": "Pauselengthscale", "description": "Silence duration for punctuation etc. (multiplier)", "default": 1 } }, "type": "object", "required": [ "id", "name", "speaker_uuid", "style_id", "speedScale", "pitchScale", "intonationScale", "volumeScale", "prePhonemeLength", "postPhonemeLength" ], "title": "Preset", "description": "Preset information." }, "Score": { "properties": { "notes": { "items": { "$ref": "#/components/schemas/Note" }, "type": "array", "title": "Notes", "description": "List of notes" } }, "type": "object", "required": [ "notes" ], "title": "Score", "description": "Score information." }, "Speaker": { "properties": { "name": { "type": "string", "title": "Name", "description": "Name" }, "speaker_uuid": { "type": "string", "title": "Speaker Uuid", "description": "Character UUID" }, "styles": { "items": { "$ref": "#/components/schemas/SpeakerStyle" }, "type": "array", "title": "Styles", "description": "List of styles" }, "version": { "type": "string", "title": "Version", "description": "Character version" }, "supported_features": { "$ref": "#/components/schemas/SpeakerSupportedFeatures", "description": "Supported features of the character" } }, "type": "object", "required": [ "name", "speaker_uuid", "styles", "version" ], "title": "Speaker", "description": "Character information" }, "SpeakerInfo": { "properties": { "policy": { "type": "string", "title": "Policy", "description": "policy.md" }, "portrait": { "type": "string", "title": "Portrait", "description": "Base64-encoded full-body portrait image, or URL" }, "style_infos": { "items": { "$ref": "#/components/schemas/StyleInfo" }, "type": "array", "title": "Style Infos", "description": "Additional style information" } }, "type": "object", "required": [ "policy", "portrait", "style_infos" ], "title": "SpeakerInfo", "description": "Additional information about a character" }, "SpeakerStyle": { "properties": { "name": { "type": "string", "title": "Name", "description": "Style name" }, "id": { "type": "integer", "title": "Id", "description": "Style ID" }, "type": { "type": "string", "enum": [ "talk", "singing_teacher", "frame_decode", "sing" ], "title": "Type", "description": "Style type. talk: Supports creation of speech synthesis queries and speech synthesis. singing_teacher: Supports creation of singing voice synthesis queries.", "default": "talk" } }, "type": "object", "required": [ "name", "id" ], "title": "SpeakerStyle", "description": "Style information of a character" }, "SpeakerSupportedFeatures": { "properties": { "permitted_synthesis_morphing": { "type": "string", "enum": [ "ALL", "SELF_ONLY", "NOTHING" ], "title": "Permitted Synthesis Morphing", "description": "Morphing feature support. 'ALL' means all morphing is allowed, 'SELF_ONLY' means only morphing within the same character is allowed, 'NOTHING' means all morphing is prohibited.", "default": "ALL" } }, "type": "object", "title": "SpeakerSupportedFeatures", "description": "Information about supported features of a character" }, "StyleInfo": { "properties": { "id": { "type": "integer", "title": "Id", "description": "Style ID" }, "icon": { "type": "string", "title": "Icon", "description": "Base64-encoded icon for this style, or URL" }, "portrait": { "type": "string", "title": "Portrait", "description": "Base64-encoded full-body portrait image for this style, or URL" }, "voice_samples": { "items": { "type": "string" }, "type": "array", "title": "Voice Samples", "description": "Base64-encoded voice samples, or URLs" } }, "type": "object", "required": [ "id", "icon", "voice_samples" ], "title": "StyleInfo", "description": "Additional style information" }, "SupportedDevicesInfo": { "properties": { "cpu": { "type": "boolean", "title": "Cpu", "description": "Whether CPU is supported" }, "cuda": { "type": "boolean", "title": "Cuda", "description": "Whether CUDA (Nvidia GPU) is supported" }, "dml": { "type": "boolean", "title": "Dml", "description": "Whether DirectML (Nvidia GPU / Radeon GPU etc.) is supported" } }, "type": "object", "required": [ "cpu", "cuda", "dml" ], "title": "SupportedDevicesInfo", "description": "Information about supported devices." }, "SupportedFeatures": { "properties": { "adjust_mora_pitch": { "type": "boolean", "title": "Adjust Mora Pitch", "description": "Adjustment of pitch per mora" }, "adjust_phoneme_length": { "type": "boolean", "title": "Adjust Phoneme Length", "description": "Adjustment of length per phoneme" }, "adjust_speed_scale": { "type": "boolean", "title": "Adjust Speed Scale", "description": "Adjustment of overall speech speed" }, "adjust_pitch_scale": { "type": "boolean", "title": "Adjust Pitch Scale", "description": "Adjustment of overall pitch" }, "adjust_intonation_scale": { "type": "boolean", "title": "Adjust Intonation Scale", "description": "Adjustment of overall intonation" }, "adjust_volume_scale": { "type": "boolean", "title": "Adjust Volume Scale", "description": "Adjustment of overall volume" }, "adjust_pause_length": { "type": "boolean", "title": "Adjust Pause Length", "description": "Adjustment of silence duration for punctuation etc." }, "interrogative_upspeak": { "type": "boolean", "title": "Interrogative Upspeak", "description": "Automatic adjustment for interrogative sentences" }, "synthesis_morphing": { "type": "boolean", "title": "Synthesis Morphing", "description": "Synthesis of audio morphed from two styles" }, "sing": { "type": "boolean", "title": "Sing", "description": "Singing Voice Synthesis" }, "manage_library": { "type": "boolean", "title": "Manage Library", "description": "Installation and uninstallation of voice libraries" }, "return_resource_url": { "type": "boolean", "title": "Return Resource Url", "description": "Return character resource information as URL" }, "apply_katakana_english": { "type": "boolean", "title": "Apply Katakana English", "description": "Convert unknown English words to Katakana reading" } }, "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": "List of features supported by the engine." }, "UpdateInfo": { "properties": { "version": { "type": "string", "title": "Version", "description": "Engine version name" }, "descriptions": { "items": { "type": "string" }, "type": "array", "title": "Descriptions", "description": "Description of the update details" }, "contributors": { "items": { "type": "string" }, "type": "array", "title": "Contributors", "description": "Contributor names" } }, "type": "object", "required": [ "version", "descriptions" ], "title": "UpdateInfo", "description": "Engine update information." }, "UserDictWord": { "properties": { "surface": { "type": "string", "title": "Surface", "description": "Surface form" }, "priority": { "type": "integer", "maximum": 10, "minimum": 0, "title": "Priority", "description": "Priority" }, "context_id": { "type": "integer", "title": "Context Id", "description": "Context ID", "default": 1348 }, "part_of_speech": { "type": "string", "title": "Part Of Speech", "description": "Part of speech" }, "part_of_speech_detail_1": { "type": "string", "title": "Part Of Speech Detail 1", "description": "Part of speech detail 1" }, "part_of_speech_detail_2": { "type": "string", "title": "Part Of Speech Detail 2", "description": "Part of speech detail 2" }, "part_of_speech_detail_3": { "type": "string", "title": "Part Of Speech Detail 3", "description": "Part of speech detail 3" }, "inflectional_type": { "type": "string", "title": "Inflectional Type", "description": "Inflectional type" }, "inflectional_form": { "type": "string", "title": "Inflectional Form", "description": "Inflectional form" }, "stem": { "type": "string", "title": "Stem", "description": "Stem form" }, "yomi": { "type": "string", "title": "Yomi", "description": "Reading (yomi)" }, "pronunciation": { "type": "string", "title": "Pronunciation", "description": "Pronunciation" }, "accent_type": { "type": "integer", "title": "Accent Type", "description": "Accent type" }, "mora_count": { "type": "integer", "title": "Mora Count", "description": "Mora count" }, "accent_associative_rule": { "type": "string", "title": "Accent Associative Rule", "description": "Accent associative rule" } }, "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": "Information used for dictionary compilation." }, "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": "Part of speech" }, "BaseLibraryInfo": { "description": "Voice library information.", "properties": { "name": { "description": "Name of the voice library", "title": "Name", "type": "string" }, "uuid": { "description": "UUID of the voice library", "title": "Uuid", "type": "string" }, "version": { "description": "Version of the voice library", "title": "Version", "type": "string" }, "download_url": { "description": "Download URL of the voice library", "title": "Download Url", "type": "string" }, "bytes": { "description": "Size of the voice library in bytes", "title": "Bytes", "type": "integer" }, "speakers": { "description": "List of characters included in the voice library", "items": { "$ref": "#/components/schemas/LibrarySpeaker" }, "title": "Speakers", "type": "array" } }, "required": [ "name", "uuid", "version", "download_url", "bytes", "speakers" ], "title": "BaseLibraryInfo", "type": "object" }, "VvlibManifest": { "description": "Information about vvlib (VOICEVOX Library).", "properties": { "manifest_version": { "description": "Manifest version", "title": "Manifest Version", "type": "string" }, "name": { "description": "Voice library name", "title": "Name", "type": "string" }, "version": { "description": "Voice library version", "title": "Version", "type": "string" }, "uuid": { "description": "UUID of the voice library", "title": "Uuid", "type": "string" }, "brand_name": { "description": "Engine brand name", "title": "Brand Name", "type": "string" }, "engine_name": { "description": "Engine name", "title": "Engine Name", "type": "string" }, "engine_uuid": { "description": "Engine UUID", "title": "Engine Uuid", "type": "string" } }, "required": [ "manifest_version", "name", "version", "uuid", "brand_name", "engine_name", "engine_uuid" ], "title": "VvlibManifest", "type": "object" } } } }