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"
}'