ANLEITUNG

Eine Streaming-Text-to-Speech-API: der erste Ton ab 300 ms

Eine Text-to-Speech-API, die eine fertige Datei liefert, lässt den Hörer auf den ganzen Text warten. Bei einem Chatbot, einer Spielfigur oder einem langen Artikel ist dieses Warten der Unterschied zwischen einer App, die antwortet, und einer, die nachdenkt.

Die Sprach-API von SuperClonica kann stattdessen streamen: Senden Sie "stream": true, und das Audio kommt, während es entsteht. In unseren Messungen am laufenden Dienst kam der erste Ton ab 300 ms nach der Anfrage, und ein langer Text verzögerte ihn nicht, denn der Text wird in Stücken vertont, und das erste geht zuerst hinaus.

Wie das Streaming hier funktioniert

Der Text wird an Satzgrenzen geteilt, die Stücke werden auf mehreren Workern zugleich vertont. Das erste Stück ist klein und hat Vorrang vor allem anderen in der Warteschlange, deshalb ist es schnell fertig, egal was folgt. Der Server fügt die Stücke der Reihe nach zu einem Ogg-Stream zusammen und sendet jedes, sobald es da ist, während der Rest noch vertont wird.

  • Erster Ton: ab 300 ms in unseren Messungen, bis zu den ersten Audio-Bytes.
  • Ein Text mit 3839 Zeichen: erster Ton nach etwa einer halben Sekunde, die ganze Datei in 5,6 Sekunden.
  • Etwa 16 000 Zeichen, 15,6 Minuten Sprache: die ganze Datei in 25,6 Sekunden.
  • Die Zeiten hängen von der aktuellen Last ab; unter hoher Last warten Anfragen in einer fairen Warteschlange.

Aufruf

Erstellen Sie einen Schlüssel im API-Bereich Ihres Arbeitsbereichs und senden Sie den Text mit "stream": true. Bei curl schaltet -N die Pufferung ab, sodass Sie den Stream direkt an einen Player weitergeben können:

curl -N https://superclonica.com/api/v1/speech -H "Authorization: Bearer $SUPERCLONICA_KEY" -H "Content-Type: application/json" -d '{"text": "Hallo! Dieser Satz spielt, während der nächste entsteht.", "voice": "F1", "language": "de", "stream": true}' | ffplay -nodisp -autoexit -

In Python liefert requests mit stream=True und iter_content die Bytes, sobald sie ankommen; im Browser lassen Sie ein audio-Element auf Ihren eigenen Endpunkt zeigen, der den Stream durchreicht.

Was Sie vorher wissen sollten

Ogg Vorbis, das Standardformat, wird bei jeder Länge gestreamt; mp3 und wav werden gestreamt, sobald der Text länger als etwa eine halbe Minute Sprache ist, und kommen sonst als eine Datei. Scheitert etwas vor dem ersten Ton, ist die Antwort ein gewöhnlicher Fehler mit Statuscode; danach endet die Übertragung vorzeitig – behandeln Sie einen abgebrochenen Stream als Fehlschlag und senden Sie den Text erneut. Eine Antwort 503 bedeutet eine volle Warteschlange: Warten Sie die Sekunden aus dem Header Retry-After ab und senden Sie erneut mit demselben Idempotency-Key.

Wo andere Dienste vorn liegen

ElevenLabs und Cartesia nehmen auch den Text selbst als Stream über WebSocket an – praktisch für Sprachagenten, die sprechen, während ein Sprachmodell noch schreibt. Die API von SuperClonica nimmt den ganzen Text in einer Anfrage. Supertonic 3 spricht noch kein Chinesisch, und die großen Clouds bieten SSML und Wort-Zeitmarken. Brauchen Sie das, sind sie die bessere Wahl; brauchen Sie einen schnellen ersten Ton und viele günstige Stunden, probieren Sie unsere API im kostenlosen Tarif.