Connecting… API Docs
Generate Speech
Convert text to audio using any voice.
0.25 4.00
Voice Cloning
Upload a custom voice style or blend two existing voices.
Voice styles are embedding vectors (style_ttl + style_dp) exported from Supertone Voice Builder. Upload your JSON file below, or mix any two voices to create a new one.
Upload Voice Style JSON
πŸ“‚
Click or drag a voice style JSON here
{"style_ttl": {"dims":[…], "data":[…]}, "style_dp": {…}}

Mix Two Voices
A B 0.50

Custom & Mixed Voices
No custom voices yet.
Voices
All available voices β€” click to use in Generate.
OpenAI-Compatible Presets
alloy
ash
ballad
cedar
coral
echo
fable
marin
nova
onyx
sage
shimmer
verse
Native Styles
F1
F2
F3
F4
F5
M1
M2
M3
M4
M5

Descriptions
alloy F1 β€” calm, clear female voice
ash F4 β€” energetic, versatile female voice
ballad F4 β€” melodic, smooth female voice (shares style with ash)
cedar M4 β€” measured, resonant male voice
coral F5 β€” airy, warm female voice
echo M1 β€” lively, upbeat male voice
fable M2 β€” warm, narrative male voice
marin F5 β€” gentle, natural female voice (shares style with coral)
nova F2 β€” bright, professional female voice
onyx M3 β€” deep, authoritative male voice
sage M4 β€” calm, steady male voice (shares style with cedar)
shimmer F3 β€” soft, expressive female voice
verse M5 β€” dynamic, dramatic male voice
Native Styles
F1 female voice (same as alloy)
F2 female voice (same as nova)
F3 female voice (same as shimmer)
F4 female voice (same as ash / ballad)
F5 female voice (same as coral / marin)
M1 male voice (same as echo)
M2 male voice (same as fable)
M3 male voice (same as onyx)
M4 male voice (same as cedar / sage)
M5 male voice (same as verse)
Native Style Names
Loading…
API Examples
OpenAI-compatible endpoints.
cURL
curl -X POST "http://localhost:8800/v1/audio/speech" \ -H "Content-Type: application/json" \ -d '{ "model": "tts-1", "input": "Hello, world!", "voice": "alloy", "response_format": "mp3", "speed": 1.0, "lang": "en" }' \ --output speech.mp3
Python Β· OpenAI SDK
from openai import OpenAI client = OpenAI( base_url="http://localhost:8800/v1", api_key="any" ) response = client.audio.speech.create( model="tts-1", voice="alloy", input="Hello, world!", response_format="mp3" ) response.stream_to_file("speech.mp3")
JavaScript
const res = await fetch('/v1/audio/speech', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'tts-1', input: 'Hello, world!', voice: 'alloy', response_format: 'mp3', lang: 'en' }) }); const blob = await res.blob(); new Audio(URL.createObjectURL(blob)).play();
Upload Custom Voice
curl -X POST "http://localhost:8800/v1/voices/upload" \ -F "name=my-voice" \ -F "file=@my_voice_style.json"
Mix Voices
curl -X POST "http://localhost:8800/v1/voices/mix" \ -H "Content-Type: application/json" \ -d '{ "voice_a": "alloy", "voice_b": "echo", "weight": 0.4, "name": "soft-echo" }'