{"input_schema":{"type":"object","properties":{"text":{"type":"string","description":"What to say.","examples":["Hello, and welcome back to the show."],"maxLength":100000},"reference_id":{"type":"string","description":"The id of a public library voice, or of a voice this account saved with voice-create."},"reference_audio_base64":{"type":"string","description":"Audio carrying a voice to clone inline. Supply it together with reference_text; the reference is used only for this request.","contentEncoding":"base64"},"reference_text":{"type":"string","description":"The exact words spoken in reference_audio_base64. Required whenever inline reference audio is supplied."},"format":{"type":"string","description":"Audio container to return.","enum":["wav","pcm","mp3","opus"],"default":"mp3"},"mp3_bitrate":{"type":"integer","description":"Bitrate when returning MP3.","enum":["64","128","192"],"default":128},"chunk_length":{"type":"integer","description":"How much text to synthesise at a time.","default":300,"minimum":100,"maximum":300},"latency":{"type":"string","description":"Trade responsiveness against quality.","enum":["low","balanced","normal"],"default":"normal"},"normalize":{"type":"boolean","description":"Expand numbers, dates, and abbreviations before speaking them.","default":true},"timestamps":{"type":"boolean","description":"Also return when each span of text is spoken, as absolute start and end times in seconds.","default":false},"stream":{"type":"boolean","description":"Respond with server-sent events: a `fish_audio.audio_chunk` event per audio chunk as it is synthesised, then `run.completed` with the complete audio and its timestamps.","default":false}},"required":["text"],"additionalProperties":true,"examples":[{"text":"Hello, and welcome back to the show.","format":"mp3","mp3_bitrate":128,"latency":"normal"}]},"output_schema":{"type":"object","description":"The audio, returned inline with its media type and size in bytes; with `timestamps` or `stream`, also the spoken spans with their start and end times. Billing counts the bytes of text submitted.","additionalProperties":true},"addons_schema":{"type":"object","additionalProperties":false},"capability_id":"fish-audio.tts","session_compatible":true,"pricing_available":true,"id":"fish_audio/s2.1-pro","object":"endpoint","provider":"fish_audio","endpoint":"s2.1-pro","model_category":"audio","name":"Fish Audio S2.1 Pro","summary":"Turn text into spoken audio, in a saved or cloned voice.","description":"Converts text into speech using either a saved voice referenced by id or a voice cloned on the fly from reference audio and its transcript. This is the current recommended model, at the same price per byte as the other paid tiers. Output encoding is selectable across compressed and uncompressed containers with bitrate control. A latency mode trades time-to-first-audio against quality, and a chunk length governs how the text is segmented for synthesis, which keeps prosody consistent across long passages. Text normalisation expands numbers, dates, and abbreviations into the way they are spoken.","unit":"byte","price_per_unit":"0.00003","list_price_per_unit":"0.000015","reports_cost":false,"input_fields":[{"name":"text","type":"string","required":true,"description":"What to say.","example":"Hello, and welcome back to the show.","max":100000},{"name":"reference_id","type":"string","required":false,"description":"The id of a public library voice, or of a voice this account saved with voice-create."},{"name":"reference_audio_base64","type":"base64","required":false,"description":"Audio carrying a voice to clone inline. Supply it together with reference_text; the reference is used only for this request."},{"name":"reference_text","type":"string","required":false,"description":"The exact words spoken in reference_audio_base64. Required whenever inline reference audio is supplied."},{"name":"format","type":"string","required":false,"description":"Audio container to return.","default":"mp3","enum_values":["wav","pcm","mp3","opus"]},{"name":"mp3_bitrate","type":"integer","required":false,"description":"Bitrate when returning MP3.","default":128,"enum_values":["64","128","192"]},{"name":"chunk_length","type":"integer","required":false,"description":"How much text to synthesise at a time.","default":300,"min":100,"max":300},{"name":"latency","type":"string","required":false,"description":"Trade responsiveness against quality.","default":"normal","enum_values":["low","balanced","normal"]},{"name":"normalize","type":"boolean","required":false,"description":"Expand numbers, dates, and abbreviations before speaking them.","default":true},{"name":"timestamps","type":"boolean","required":false,"description":"Also return when each span of text is spoken, as absolute start and end times in seconds.","default":false},{"name":"stream","type":"boolean","required":false,"description":"Respond with server-sent events: a `fish_audio.audio_chunk` event per audio chunk as it is synthesised, then `run.completed` with the complete audio and its timestamps.","default":false}],"example_request":{"provider":"fish_audio","endpoint":"s2.1-pro","input":{"text":"Hello, and welcome back to the show.","format":"mp3","mp3_bitrate":128,"latency":"normal"}},"output":"The audio, returned inline with its media type and size in bytes; with `timestamps` or `stream`, also the spoken spans with their start and end times. Billing counts the bytes of text submitted.","limits":{"request_bytes":15000000,"timeout_ms":300000,"input_characters":{"field":"text","max":100000},"audio_bytes":10000000}}