View raw JSON
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"text"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"text": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Text to speak, up to 10000 characters. Supports pause markers <#x#> (x seconds, 0.01-99.99) between spoken segments, inline pronunciation in half-width parentheses (pinyin with a tone number, IPA, or Jyutping), and — on the speech-2.8 models — interjection tags such as (laughs), (sighs), (coughs), (gasps)."
},
"model": {
"enum": [
"speech-2.8-hd",
"speech-2.6-hd",
"speech-02-hd",
"speech-2.8-turbo",
"speech-2.6-turbo",
"speech-02-turbo"
],
"type": "string",
"default": "speech-2.8-turbo",
"description": "Speech model. hd models cost $100 per million characters, turbo models $60. Interjection tags such as (laughs) or (sighs) work only on the speech-2.8 models. The USD amounts in this input description are upstream supplier values; Toolmu charges the current catalog credits."
},
"stream": {
"type": "boolean",
"const": false,
"default": false,
"description": "Streaming is not supported; always false. Fixed."
},
"voice_modify": {
"type": "object",
"properties": {
"pitch": {
"type": "integer",
"maximum": 100,
"minimum": -100,
"description": "Deepen (-100) to brighten (100)."
},
"timbre": {
"type": "integer",
"maximum": 100,
"minimum": -100,
"description": "Fuller (-100) to crisper (100)."
},
"intensity": {
"type": "integer",
"maximum": 100,
"minimum": -100,
"description": "Stronger (-100) to softer (100)."
},
"sound_effects": {
"enum": [
"spacious_echo",
"auditorium_echo",
"lofi_telephone",
"robotic"
],
"type": "string",
"description": "One effect at a time."
}
},
"description": "Voice effects. Requires an mp3, wav, or flac output format.",
"additionalProperties": false
},
"audio_setting": {
"type": "object",
"properties": {
"format": {
"enum": [
"mp3",
"pcm",
"flac",
"wav",
"pcmu_raw",
"pcmu_wav",
"opus"
],
"type": "string",
"description": "Audio container/codec. Default mp3. pcmu_raw and pcmu_wav are G.711 mu-law at 8kHz; opus is Ogg/Opus."
},
"bitrate": {
"anyOf": [
{
"type": "number",
"const": 32000
},
{
"type": "number",
"const": 64000
},
{
"type": "number",
"const": 128000
},
{
"type": "number",
"const": 256000
}
],
"description": "Bitrate. mp3 only. Default 128000."
},
"channel": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
}
],
"description": "1 = mono, 2 = stereo. Default 1."
},
"sample_rate": {
"anyOf": [
{
"type": "number",
"const": 8000
},
{
"type": "number",
"const": 16000
},
{
"type": "number",
"const": 22050
},
{
"type": "number",
"const": 24000
},
{
"type": "number",
"const": 32000
},
{
"type": "number",
"const": 44100
}
],
"description": "Sampling rate. Default 32000."
}
},
"description": "Audio output configuration.",
"additionalProperties": false
},
"output_format": {
"type": "string",
"const": "url",
"default": "url",
"description": "Audio is always returned as a CDN URL (the link EXPIRES after 24h). Fixed — no other value is accepted."
},
"subtitle_type": {
"enum": [
"sentence",
"word"
],
"type": "string",
"description": "Subtitle timestamp granularity. Default sentence."
},
"voice_setting": {
"type": "object",
"properties": {
"vol": {
"type": "number",
"default": 1,
"maximum": 10,
"description": "Volume, greater than 0 and at most 10. Default 1.",
"exclusiveMinimum": 0
},
"pitch": {
"type": "integer",
"default": 0,
"maximum": 12,
"minimum": -12,
"description": "Pitch shift, -12 to 12. Default 0 (original)."
},
"speed": {
"type": "number",
"default": 1,
"maximum": 2,
"minimum": 0.5,
"description": "Speech rate, 0.5-2. Default 1."
},
"emotion": {
"enum": [
"happy",
"sad",
"angry",
"fearful",
"disgusted",
"surprised",
"calm",
"fluent",
"whisper"
],
"type": "string",
"description": "Emotion. Omit to let the model pick from the text. fluent and whisper are only available on the speech-2.6 models."
},
"voice_id": {
"type": "string",
"minLength": 1,
"description": "Target voice id. Omit ONLY when mixing voices via timbre_weights. System, cloned, and AI-designed voices are all accepted — see https://platform.minimax.io/docs/faq/system-voice-id (e.g. English_Graceful_Lady, Japanese_Whisper_Belle)."
},
"latex_read": {
"type": "boolean",
"default": false,
"description": "Read LaTeX formulas wrapped in $$. Chinese only; forces language_boost to Chinese. Default false."
},
"text_normalization": {
"type": "boolean",
"default": false,
"description": "Normalize numbers and symbols before reading (better digit handling, slightly higher latency). Default false."
}
},
"description": "Voice selection and delivery controls.",
"additionalProperties": false
},
"language_boost": {
"enum": [
"Chinese",
"Chinese,Yue",
"English",
"Arabic",
"Russian",
"Spanish",
"French",
"Portuguese",
"German",
"Turkish",
"Dutch",
"Ukrainian",
"Vietnamese",
"Indonesian",
"Japanese",
"Italian",
"Korean",
"Thai",
"Polish",
"Romanian",
"Greek",
"Czech",
"Finnish",
"Hindi",
"Bulgarian",
"Danish",
"Hebrew",
"Malay",
"Persian",
"Slovak",
"Swedish",
"Croatian",
"Filipino",
"Hungarian",
"Norwegian",
"Slovenian",
"Catalan",
"Nynorsk",
"Tamil",
"Afrikaans",
"auto"
],
"type": "string",
"description": "Boost recognition of a specific language or dialect. Use auto to detect. The speech-02 series does not support Persian, Filipino, or Tamil."
},
"timbre_weights": {
"type": "array",
"items": {
"type": "object",
"required": [
"voice_id",
"weight"
],
"properties": {
"weight": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Relative weight, 1-100. Higher is more similar."
},
"voice_id": {
"type": "string",
"minLength": 1,
"description": "A voice to blend."
}
},
"additionalProperties": false
},
"maxItems": 4,
"minItems": 1,
"description": "Blend up to 4 voices. Mutually exclusive with voice_setting.voice_id."
},
"subtitle_enable": {
"type": "boolean",
"default": false,
"description": "Also return a subtitle file link alongside the audio. Default false."
},
"pronunciation_dict": {
"type": "object",
"properties": {
"tone": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Pronunciation overrides as \"original/replacement\", e.g. [\"omg/oh my god\", \"resume/(rIˈzjuːm)\"]. Chinese tones are numbered 1-5 in parentheses."
}
},
"description": "Custom pronunciation rules.",
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}