SovrGPT Docs
API

Audio (Sprache · TTS & STT)

OpenAI-kompatible Sprachsynthese (Text-to-Speech) und Transkription (Speech-to-Text), EU-souverän.

SovrGPT bietet Text-to-Speech (/v1/audio/speech) und Speech-to-Text (/v1/audio/transcriptions) im OpenAI-kompatiblen Format. Bestehende OpenAI-Audio-Clients funktionieren ohne Code-Änderung — nur baseURL umstellen.

Beide Endpunkte verlangen einen gültigen SovrGPT-API-Key mit dem passenden Funktions-Scopespeech für TTS, transcribe für STT (siehe Authentifizierung → Berechtigungen).

SovrGPT bietet drei TTS-Engines, alle EU-souverän — wählbar pro Request über das OpenAI-übliche model-Feld (supertonic-3 / cosyvoice-3 / voxtral-mini-tts) oder das explizite provider-Feld (aus der Stimme abgeleitet, wenn keins gesetzt ist):

providerStärkeStimmenEmotion / TagsCloningFormat
supertonic (Default)schnell, kein Cold-StartM1M5 / F1F5<breath>/<sigh>wav/flac/ogg
cosyvoiceDeutsch + Emotion + Cloningde-thorsten oder eigene Stimmevolle Inline-Tags + natürlichsprachige Emotion✅ Zero-Shotwav (24 kHz)
mistralSaaS-Fallbackdefault-de/default-enmp3/wav/opus/flac
  • STT läuft auf Mistral Voxtral (Paris, DSGVO).
  • Ohne provider bleibt es beim Server-Default (Supertonic) — bestehende Aufrufe ändern sich nicht.

KI-Kennzeichnung: Synthetisch erzeugte Sprache ist als KI-Inhalt zu kennzeichnen (EU-AI-Act Art. 50). Supertonic-Gewichte stehen unter OpenRAIL-M; CosyVoice trägt kein eingebautes Wasserzeichen — die Kennzeichnung erfolgt auf Anwendungsebene.


POST /v1/audio/speech — Text-to-Speech

Erzeugt gesprochene Audio-Bytes aus Text. Antwort ist der rohe Audio-Body (kein JSON-Wrapper), wie bei OpenAI.

curl https://sovrgpt.com/api/v1/audio/speech \
  -H "Authorization: Bearer $SOVR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "supertonic-3",
    "input": "Guten Tag <breath> willkommen bei SovrGPT.",
    "voice": "F3",
    "response_format": "wav"
  }' --output hallo.wav

Request-Body

FeldTypGilt fürBeschreibung
inputstringallePflicht. Der zu sprechende Text, ≤ 4 000 Zeichen. Inline-Tags je nach Provider (s. u.).
voicestringalleSupertonic: M1M5/F1F5. CosyVoice: de-thorsten. Mistral: default-de/default-en.
providerstringallesupertonic | cosyvoice | mistral. Optional — sonst aus model/voice abgeleitet, sonst Server-Default (supertonic).
response_formatstringSupertonic/Mistralwav/flac/ogg (Supertonic), zusätzlich mp3/opus/aac (Mistral). CosyVoice liefert immer wav.
languagestringSupertonic/CosyVoiceISO-639-1 (de/en/…).
emotion / instructionstringCosyVoiceNatürlichsprachige Stil-/Emotions-Anweisung, z. B. "Sprich sehr traurig und langsam."
reference_audio_b64stringCosyVoiceBase64 wav/flac (≤ 30 s) → klont diese Stimme (Zero-Shot). Überschreibt voice.
prompt_textstringCosyVoiceTranskript des Referenzclips (beste Qualität). Für eingebaute Stimmen automatisch.
speednumberCosyVoice0,5–2,0 (Default 1,0). Supertonic/Mistral: akzeptiert, aktuell ignoriert.
modelstringalleWählt die Engine (OpenAI-idiomatisch): supertonic-3, cosyvoice-3 oder voxtral-mini-tts. provider hat Vorrang, falls beides gesetzt ist.

Antwort

200 mit Audio-Bytes. Header:

Content-Type: audio/wav        (bzw. audio/flac, audio/mpeg …)
X-Voice-Provider: supertonic   (oder: cosyvoice / mistral)

Fehler: 400 (kein/zu langer input, ungültige Stimme), 401/403 (Auth/Scope), 503 (TTS-Anbieter nicht konfiguriert oder CosyVoice-Worker im Cold-Start → in ~1 Min erneut senden), 502 (Upstream-Fehler).


CosyVoice — Deutsch mit Emotion, Tags & eigener Stimme

Für expressives Deutsch, Betonung, Lachen/Atmen und Voice-Cloning den Provider cosyvoice wählen. Vollständige Fähigkeiten: Modelle → Voice.

Inline-Tags (direkt im input): [laughter], [breath], <laughter>…</laughter> (lachend gesprochen), <strong>…</strong> (Betonung).

# Deutsch mit Tags + Betonung
curl https://sovrgpt.com/api/v1/audio/speech \
  -H "Authorization: Bearer $SOVR_KEY" -H "Content-Type: application/json" \
  -d '{
    "provider": "cosyvoice",
    "voice": "de-thorsten",
    "input": "Und dann [breath] öffnete ich die Tür. [laughter] Das war <strong>unglaublich</strong>."
  }' --output tags.wav

Emotion — natürlichsprachig über emotion (bzw. instruction):

curl https://sovrgpt.com/api/v1/audio/speech \
  -H "Authorization: Bearer $SOVR_KEY" -H "Content-Type: application/json" \
  -d '{
    "provider": "cosyvoice",
    "voice": "de-thorsten",
    "input": "Diese Zeiten sind für immer vorbei.",
    "emotion": "Sprich sehr traurig, leise und langsam."
  }' --output traurig.wav

Eigene Stimme (Zero-Shot-Cloning) — einen 10–20-s-Referenzclip als Base64 mitgeben, plus dessen Transkript als prompt_text (beste Qualität):

REF=$(base64 -w0 meine_stimme.wav)
curl https://sovrgpt.com/api/v1/audio/speech \
  -H "Authorization: Bearer $SOVR_KEY" -H "Content-Type: application/json" \
  -d "{
    \"provider\": \"cosyvoice\",
    \"input\": \"Ein neuer Satz, gesprochen in meiner geklonten Stimme.\",
    \"reference_audio_b64\": \"$REF\",
    \"prompt_text\": \"<wörtliches Transkript des Referenzclips>\"
  }" --output geklont.wav

Eingebaute Stimmen: aktuell de-thorsten (Deutsch, männlich, ruhig; CC0). Eigene Stimmen jederzeit über reference_audio_b64 (Zero-Shot, kein Training). Eine persistente Stimm-Bibliothek mit Upload-UI ist in Vorbereitung.

Cold-Start: Der CosyVoice-GPU-Worker skaliert auf null. Warm liefert er in ~6 s; ein kalt angelaufener Worker kann Minuten brauchen — dann kommt 503 „warming up", einfach in ~1 Min erneut senden. Supertonic (Default) hat keinen Cold-Start.


POST /v1/audio/transcriptions — Speech-to-Text

Transkribiert eine hochgeladene Audiodatei (multipart/form-data).

curl https://sovrgpt.com/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $SOVR_KEY" \
  -F file=@aufnahme.webm \
  -F language=de \
  -F response_format=json

Form-Felder

FeldTypDefaultBeschreibung
fileDateiPflicht. Audio (webm/ogg/mp3/wav/m4a …), ≤ 25 MiB.
languagestringautoISO-639-1, z. B. de. Erhöht die Genauigkeit.
response_formatstringjsonjson ({ "text": … }), text (Klartext), verbose_json ({ text, language, duration }).
modelstringBeratend (voxtral-mini-transcribe).

Antwort

{ "text": "Hallo, dies ist ein Test." }

Fehler: 400 (kein file), 413 (> 25 MiB), 401/403 (Auth/Scope), 503 (MISTRAL_API_KEY nicht gesetzt), 502 (Upstream-Fehler).


SDK-Beispiel (OpenAI-Client)

from openai import OpenAI

client = OpenAI(base_url="https://sovrgpt.com/api/v1", api_key=SOVR_KEY)

# Text-to-Speech (Supertonic, schnell)
client.audio.speech.create(
    model="supertonic-3", voice="F3", response_format="wav",
    input="Hallo Welt <sigh> das war ein langer Tag.",
).stream_to_file("hallo.wav")

# Text-to-Speech (CosyVoice, deutsch + Emotion)
# model="cosyvoice-3" wählt die Engine; emotion (SovrGPT-Extension) via extra_body
client.audio.speech.create(
    model="cosyvoice-3", voice="de-thorsten", response_format="wav",
    input="Was für ein wunderbarer Tag!",
    extra_body={"emotion": "Sprich fröhlich und aufgeregt."},
).stream_to_file("froehlich.wav")

# Speech-to-Text
with open("aufnahme.webm", "rb") as f:
    tr = client.audio.transcriptions.create(
        model="voxtral-mini-transcribe", file=f, language="de",
    )
print(tr.text)

Im Chat

Ohne API funktioniert Sprache direkt im Chat: das Mikrofon-Symbol im Composer diktiert (STT → Text im Eingabefeld), der Lautsprecher-Button an jeder Assistenten-Antwort liest sie vor (TTS). Siehe Modelle → Voice.

Audio (Sprache · TTS & STT)