Text-to-Speech

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

POST /v1/tts
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.mp3

Stream a reply while your bot is still writing it

wss://api.suisse-speech.ch/v1/tts/stream
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

  • anna warm and balanced, the default for customer service
  • vera bright and energetic, for short menus and prompts
  • lea soft and calm, for long explanations and voicemail
  • nora clear articulation, made for narrow-band telephone lines
  • mia gentle and empathetic, for healthcare and sensitive topics
  • elin neutral and even, for long documents

Male

  • stefan neutral and professional, the male counterpart to anna
  • reto deep and calm, for announcements and notices
  • lukas brisk and direct, for outbound confirmations
  • jonas full-bodied and steady, for corporate audio
  • andrin warm and patient, for advice, sales and onboarding
  • felix expressive 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.