Text-to-speech in real Swiss German
Write in Standard German, hear Züritüütsch, Bärndütsch, Baaseldütsch or Lozärnerdütsch, with dialect wording, grammar and pronunciation. Stream it live for voice bots, or render it in studio quality for prepared audio.
Realtime CHF 6.85 per hour of audio, batch CHF 4.60 per hour. Billed per second.
Two models, one voice catalogue
studio Batch
The highest fidelity and the most natural delivery. The model to use for prompts, greetings, announcements and voice-over.
swift Realtime and batch
Streams audio while the text is still being written, with first audio in under a second. Made for voice bots and live conversations.
Real dialect
Standard German input is rendered into the dialect you choose. Swiss High German and other varieties keep the words exactly as written.
Swiss numbers and dates
Phone numbers grouped 3-3-2-2 and read in the dialect. Dates, times and CHF amounts in their spoken form.
Markup that really works
Pauses, emphasis, pace, pitch, spelled-out codes and language switches within one text. Unsupported markup is refused, never ignored.
Style in plain words
Describe the delivery, like "calm and patient, short pauses after each sentence". The words themselves are always read as written.
Every format you need
MP3, WAV, Opus, raw PCM16, and G.711 µ-law or A-law at 8 kHz for telephone lines.
Long texts as jobs
Submit a chapter, collect the audio when it is ready, with a signed callback if you want one.
Speak a sentence in Bernese
curl -X POST https://api.suisse-speech.ch/v1/tts \
-H "X-API-Key: $SUISSE_SPEECH_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Ihr Termin am Dienstag um zehn Uhr ist bestätigt.",
"model": "studio", "voice": "lea",
"language": "de-CH", "dialect": "bern", "format": "mp3"}' \
--output termin.mp3Stream a reply while your bot is still writing it
import WebSocket from 'ws';
const ws = new WebSocket('wss://api.suisse-speech.ch/v1/tts/stream', {
headers: { 'X-API-Key': process.env.SUISSE_SPEECH_KEY },
});
ws.on('open', async () => {
ws.send(JSON.stringify({
type: 'session.start', model: 'swift', voice: 'anna',
language: 'de-CH', dialect: 'zurich',
format: 'pcm16', sample_rate_hz: 24000, transport: 'binary',
}));
for await (const chunk of llmReply) { // text as your LLM writes it
ws.send(JSON.stringify({ type: 'text.append', text: chunk }));
}
ws.send(JSON.stringify({ type: 'session.end' }));
});
ws.on('message', (data, isBinary) => {
if (isBinary) return player.write(data); // audio, in order
const frame = JSON.parse(data.toString()); // control frames
if (frame.type === 'session.complete') ws.close();
});Twelve voices
Every voice speaks every supported language and dialect, so one persona can serve a whole conversation.
Female
annawarm and balanced, the default for customer serviceverabright and energetic, for short menus and promptsleasoft and calm, for long explanations and voicemailnoraclear articulation, made for narrow-band telephone linesmiagentle and empathetic, for healthcare and sensitive topicselinneutral and even, for long documents
Male
stefanneutral and professional, the male counterpart to annaretodeep and calm, for announcements and noticeslukasbrisk and direct, for outbound confirmationsjonasfull-bodied and steady, for corporate audioandrinwarm and patient, for advice, sales and onboardingfelixexpressive and dynamic, follows style prompts closely
Frequently asked questions
Do I have to write the text in dialect?
No. Write in Standard German. For Swiss German dialects, the API renders your text into the dialect, including its own words and grammar.
How fast is realtime synthesis?
The first audio of a reply typically arrives in about half a second, and in under a second for Swiss German dialect. The rest streams while it is being produced.
Can I use my own voice or clone a voice?
Not at the moment. The twelve catalogue voices are stable: a voice is never changed or removed without notice, so a deployed IVR keeps sounding the same.
Can I switch language within one text?
Yes, with a language element in the markup, for example to say an English product name inside a Bernese sentence.
Try it on your own audio
Get 60 free minutes of speech-to-text and text-to-speech. No credit card required.