Sicherheit
Transkripte, Übersetzungen und Zusammenfassungen werden aus Audio erzeugt, das wir nicht kontrollieren: Ihr Kunde erzeugt es oder es kommt von ihm. Jeder kann versuchen, befehlsförmige Sätze in eine Aufnahme einzuschmuggeln, damit sie in Ihrem System ausgeführt werden.
Wir härten die Zusammenfassung gegen diese Art von Manipulation, aber keine Verteidigung ist vollständig. Wenn Sie unsere Ausgabe an einen Agenten, ein CRM oder irgendeine Automatisierung mit Berechtigungen weitergeben, behandeln Sie sie als nicht vertrauenswürdigen Text: führen Sie sie nicht aus, lesen Sie sie nicht als Befehle und validieren Sie sie, bevor Sie darauf reagieren.
Und was ein Sprecher in einer Aufnahme behauptet, ist keine bewiesene Tatsache, auch wenn es in der Zusammenfassung landet.
Transkribieren
POST /v1/audio/transcriptions
Verwandelt eine Aufnahme in Text. Erkennt die Sprache von selbst.
Sie können diesen Dienst direkt nutzen, ohne Code zu schreiben, auf der Seite Studio: die Karte Audio transkribieren.
| Parameter | Typ | Beschreibung |
|---|---|---|
file | file | Erforderlich. Das Audio. |
model | text | whisper-1 |
language | text | ISO-Code. Wenn weggelassen, wird sie erkannt. |
prompt | text | Kontext zur Hilfe bei Eigennamen oder Fachjargon. |
response_format | text | json · text · verbose_json · srt · vtt |
extras | text (query) | sentiment · profile · diarize, kommagetrennt |
temperature | number | 0 bis 1. Standardwert 0. |
extras | query | ?extras=sentiment fügt in derselben Anfrage eine Tonanalyse hinzu. |
Die Antwort trägt den Header X-Audio-Duration mit den genauen Sekunden, die
berechnet wurden.
Text zu Sprache
POST /v1/audio/speech
Sie können diesen Dienst direkt nutzen, ohne Code zu schreiben, auf der
Seite Studio: die Karten Text zu digitaler Stimme
(tts-1) und Text zu geklonter Stimme (tts-1-hd).
| Parameter | Typ | Beschreibung |
|---|---|---|
input | text | Erforderlich. Was gesagt werden soll. |
model | text | tts-1 Standardstimme · tts-1-hd hochwertige Stimme. Siehe die drei Stimmen. |
voice | text | Name aus dem Katalog. Siehe Stimmen. |
response_format | text | mp3 · wav · opus · flac · pcm |
speed | number | Geschwindigkeit. 1.0 ist normal. |
language | text | Lesesprache. Wenn weggelassen, legt die Stimme sie fest. Siehe wie sie gewählt wird. |
cache | boolean | false hält diese Anfrage aus dem Cache heraus: nichts wird gelesen und nichts geschrieben. Siehe unten. |
curl -X POST https://api.uttera.ai/v1/audio/speech \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tts-1","input":"Your order ships tomorrow.","voice":"nova","response_format":"mp3"}' \
--output voice.mp3
gustaria wird betont
gus-ta-ria; gustaría wird betont gus-ta-rí-a.
Wir fügen sie bewusst nicht für Sie hinzu: esta und está, papa und papá, termino und terminó sind verschiedene Wörter. Ein automatischer Korrektor läge bei vielen richtig und würde, wenn er bei einem falsch läge, ändern, was Sie uns zu sagen gebeten haben. Wir lesen Ihren Text lieber so, wie er geschrieben ist.
Welche Sprache gelesen wird, und wer entscheidet
Die Sprache legt nicht die Klangfarbe fest: sie wählt die Regeln, nach denen Text zu Klang wird. Sie falsch zu setzen klingt nicht “akzentuiert”, es klingt kaputt. Ein spanischer Text, mit englischen Regeln gelesen, kommt buchstäblich so heraus:
Mi Gasteria reservar una mesa para dues personas
Deshalb wird sie in drei Schritten aufgelöst, und Sie müssen selten darüber nachdenken:
| Reihenfolge | Woher sie kommt |
|---|---|
| 1 | Die language, die Sie senden. Gewinnt immer. |
| 2 | Die Sprache der Stimme. Jede Katalogstimme spricht ihre eigene,
und /v1/voices veröffentlicht sie. Fordern Sie
alloy an und sie liest Englisch; fordern Sie dora an und sie liest Spanisch. |
| 3 | Der Server-Standard, Englisch. Er erreicht nur Stimmen ohne eigene Sprache: geklonte und mehrsprachige, die sprechen, worum sie gebeten werden. |
/v1/audio/speech hat kein Feld language — das ist unsere Erweiterung — also
sendet Ihr Code es nicht, und Schritt 2 tut das Richtige: die Stimme, die Sie wählen, entscheidet die
Sprache.Wann es sich lohnt zu senden: bei einer geklonten oder mehrsprachigen Stimme (sie haben keine eigene Sprache), oder wenn Sie bewusst möchten, dass eine Stimme eine andere Sprache als ihre eigene liest.
Das Stimmmuster: was hochladen
Eine Stimme zu klonen braucht ein Referenzmuster. Was am besten funktioniert:
| Empfohlen | Warum |
|---|---|
| 6 bis 12 Sekunden | Unter 6 verlieren Sie tonale Tiefe. Über 12 wird es nicht proportional besser und fügt nur Latenz hinzu. |
| Ein vollständiger Satz, mit natürlicher Intonation | Das Modell erfasst, wie diese Stimme steigt und fällt, und es muss sehen, wie das geschieht. |
| Kein Hintergrundgeräusch | Das machen die meisten falsch. Musik, Raum- hall oder Klimaanlage kontaminieren die Ausgabestimme und tauchen in allem auf, was Sie danach erzeugen. |
Zu der Frage, wessen Stimme Sie klonen dürfen — die für den meisten Ärger sorgt — siehe den Rechtsrahmen: eine Stimme ist geschützt, und öffentliches Material ist keine Erlaubnis.
Drei Stimmen, nicht zwei
Dieselbe Route liefert drei verschiedene Dinge, und was entscheidet, welches, ist was Sie senden:
| Was Sie senden | Was Sie bekommen | Tarif |
|---|---|---|
tts-1, oder nichts | Standardstimme. Unser eigener Katalog, schnell und günstig. | Alle |
tts-1-hd | Hochwertige Stimme. Derselbe Katalog, Premium-Engine. | Kostenpflichtig |
tts-1-hd + ein Stimmmuster | Klonen. Ihre Stimme, auf der Premium-Engine. | Kostenpflichtig |
Das Muster wird als custom_voice_file in einem Multipart-Formular gesendet; ohne
es geht die Anfrage als JSON. Das ist der ganze Unterschied zwischen dem Anfordern einer Katalogstimme
in hoher Qualität und dem Klonen einer solchen.
tts-1 die
vernünftige Wahl.Sie sprechen nicht dieselben Sprachen
Es ist der Unterschied, der die Leute am meisten überrascht, und er liegt nicht in der Klangfarbe:
| Sprachen | Katalogstimmen | |
|---|---|---|
tts-1 · Standard | 9: Spanisch, Englisch (und britisch), Französisch, Italienisch, Portugiesisch, Hindi, Japanisch und Chinesisch | Viele, und jede an ihre Sprache gebunden |
tts-1-hd · hohe Qualität | Rund 30: neben den obigen Deutsch, Russisch, Polnisch, Niederländisch, die nordischen Sprachen, Griechisch, Türkisch, Arabisch, Koreanisch und mehrere südostasiatische, unter anderem | Wenige, aber jede spricht alle 30 |
Der Grund ist, dass es Engines unterschiedlicher Natur sind. Die Standard-Engine hat einen festen Stimmenkatalog, jede für ihre Sprache trainiert. Die hochwertige geht von einem Muster aus — deshalb kann sie klonen — und dieselbe Stimme liest jede der Sprachen, die sie kennt.
Mit tts-1-hd muss die Sprache nicht angegeben werden: sie wird
aus dem Text erschlossen. Mit tts-1 spielt sie eine Rolle, weil die gewählte Stimme sie
festlegt.
Zeilenumbrüche kosten Geld
Sprache wird pro erzeugter Sekunde abgerechnet, nicht pro Zeichen. Und ein Zeilenumbruch lässt die Engine eine Pause einfügen. Also kostet derselbe Text je nach Formatierung unterschiedlich, und es lohnt sich, das zu wissen, bevor die Rechnung Sie überrascht.
Gemessen mit demselben Satz achtmal wiederholt, wobei nur das dazwischen geändert wurde:
| Zwischen Sätzen | Dauer | Gegenüber einem Leerzeichen |
|---|---|---|
| Leerzeichen · 2 Leerzeichen · 4 Leerzeichen | 12,2 s | — |
| Komma · Semikolon · Doppelpunkt · Auslassungspunkte · Gedankenstrich | 12,1–12,3 s | — |
| Zeilenumbruch | 21,4 s | +75 % |
| 2 Umbrüche · 3 Umbrüche | 21,4 s | +75 % |
Leerzeichen bewirken nichts. Weder zwei noch vier. Auch Satzzeichen nicht: ein Komma, ein Punkt oder ein Gedankenstrich klingen, was die Uhr betrifft, wie ein Leerzeichen.
Nur der Zeilenumbruch erzeugt eine Pause, und jeder kostet 1,31 s (0,028 Credits).
Mehr Umbrüche verlängern die Pause nicht. Einer, zwei oder drei sind genau gleich. Sie taugen nicht dazu, eine längere Wartezeit zu erbitten.
In einem echten Text ist der Unterschied nicht klein. La canción del pirata gibt mit seinen ~96 Zeilen allein 126 Sekunden für Pausen aus: etwas mehr als die Hälfte dessen, was das Synthetisieren des Ganzen kostet.
Wenn Sie die Pausen nicht möchten, entfernen Sie die Zeilenumbrüche, bevor Sie den Text senden: dieselben Wörter als ein durchlaufender Absatz kosten fast die Hälfte. Und wenn Sie sie doch möchten, wissen Sie jetzt, was sie wert sind.
Warum die Kette eine andere Zahl ergibt
Wenn Sie eine Audiodatei transkribieren und dann übersetzen, werden Sie sehen, dass die Sprache für die Übersetzung erheblich weniger kostet als die ursprüngliche Synthese desselben Textes. Es ist kein Abrechnungsfehler: die Erkennung gibt einen durchlaufenden Absatz zurück, ohne die Zeilenumbrüche des Originals. Dieser flache Text wird ohne Pausen synthetisiert und dauert deshalb — und kostet — weniger.
Anders gesagt: Zeilenumbrüche überstehen die Reise durchs Audio nicht. Wenn es Ihnen wichtig ist, sie zu behalten, bewahren Sie den Ausgangstext auf; aus dem Transkript lassen sie sich nicht wiederherstellen.
X-Cache: HIT.
Der Cache ist pro Knoten. Da Anfragen über mehrere verteilt werden, treffen die ersten Wiederholungen eines Textes vielleicht nicht: jeder Knoten füllt ihn beim ersten Mal, wenn er an der Reihe ist. Danach trifft es.
Den Cache abschalten, Anfrage für Anfrage
Manche Arbeit darf das Audio nicht einmal für eine Stunde auf fremder Platte liegen haben: medizinisches Diktat, juristische Notizen, eine persönliche Nachricht. Sie können den Cache selbst abschalten, bei jeder Anfrage, ohne uns um etwas zu bitten und ohne Ihr Konto zu ändern. Das Audio wird trotzdem erzeugt und Ihnen ausgeliefert; was nicht geschieht, ist, dass irgendetwas auf die Platte geschrieben oder von ihr gelesen wird.
Drei gleichwertige Wege, je nachdem, welcher Ihnen am besten passt:
# 1) Im JSON-Body
-d '{"model":"tts-1","input":"Private notes","voice":"nova","cache":false}'
# 2) Als Formularfeld (akzeptiert 0 / false / no / off)
-F input="Private notes" -F voice=nova -F cache=false
# 3) Mit dem guten alten HTTP-Header, ohne den Body anzufassen
-H "Cache-Control: no-cache"
Die Antwort sagt Ihnen stets, was getan wurde, damit Sie uns nicht beim Wort nehmen müssen:
X-Cache | Was geschah |
|---|---|
HIT | Aus dem Cache bedient. Kostet 10 %. |
MISS | Erzeugt und für die nächste Stunde gespeichert. |
BYPASS | Sie haben ohne Cache angefordert: erzeugt und nichts gespeichert. |
ADHOC | Stimme spontan geklont. Nie gecacht, ob Sie es verlangen oder nicht. |
DISABLED | Der Cache ist auf dem Server abgeschaltet. |
Streaming: es hören, während es erzeugt wird
POST /v1/audio/speech/stream
Der normale Sprach-Endpunkt gibt Ihnen die Datei, wenn sie fertig ist. Dieser reicht sie Ihnen schon während der Erzeugung weiter, in Stücken, sodass der erste Ton fast sofort herauskommt, statt auf das letzte Wort zu warten.
Wenn Sie ein Telefonsystem bauen, einen Assistenten, der antwortet, oder irgendetwas, bei dem am anderen Ende eine Person wartet, ist das der Unterschied zwischen einem Gespräch und einer Warteschlange.
/v1/audio/speech | /v1/audio/speech/stream | |
|---|---|---|
| Gibt zurück | Die vollständige Datei | audio/wav in Stücken (Transfer-Encoding: chunked) |
| Formate | mp3 · wav · opus · flac · pcm | nur wav |
| Cache | Ja, eine Stunde zu 10 % | Nein: Es gibt keine Datei zum Speichern |
| Geklonte Stimme | Ja | Ja |
| Preis | Derselbe: pro Sekunde erzeugtem Audio | |
curl -N -X POST https://api.uttera.ai/v1/audio/speech/stream \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tts-1","input":"Your order ships tomorrow.","voice":"nova","language":"en"}' \
--output - | aplay
Das -N von curl ist wichtig: Ohne es puffert curl die Antwort, und Sie
verlieren genau das, wofür Sie gekommen sind.
Übersetzen
The 50 languages you can write in: these are what translation accepts as INPUT.
sqAlbanianarArabicazAzerbaijanieuBasquebnBengalibgBulgariancaCatalanzh-HansChinese (Simplified)zh-HantChinese (Traditional)csCzechdaDanishnlDutchenEnglisheoEsperantoetEstonianfiFinnishfrFrenchglGaliciandeGermanelGreekheHebrewhiHindihuHungarianidIndonesiangaIrishitItalianjaJapanesekoKoreankyKyrgyzlvLatvianltLithuanianmsMalaynbNorwegian BokmålfaPersianplPolishptPortuguesept-BRPortuguese (Brazil)roRomanianruRussianskSlovakslSlovenianesSpanishswSwahilisvSwedishtlTagalogthThaitrTurkishukUkrainianurUrduviVietnamese
And the 9 that can come back SPOKEN: for the rest, translation comes back as text. If you ask for audio in one without a voice, the request is rejected with 422 before spending anything.
zhChineseenEnglishen-gbEnglish (British)frFrenchhiHindiitItalianjaJapaneseptPortugueseesSpanish
POST /v1/translate
Die vollständige Kette: Sie transkribiert das Audio, übersetzt den Text und synthetisiert ihn in der Zielsprache. Sie akzeptiert Audio- oder Texteingabe, aber nicht Text zu Text: Wenn Text hineingeht, muss die Ausgabe Audio enthalten.
Sie können diesen Dienst direkt, ohne Code zu schreiben, auf der Studio-Seite nutzen: die Karte Eine Aufnahme übersetzen.
| Parameter | Typ | Beschreibung |
|---|---|---|
file | Datei | Das Ausgangsaudio. |
target | query | Erforderlich. Zielsprache. |
source | query | Ausgangssprache. Standardmäßig erkannt. |
response | query | both Text und Audio · text nur Text · audio nur Audio |
voice | query | Ausgabestimme, aus dem Standardkatalog. Wird ignoriert, wenn Sie preserve_voice anfordern. |
preserve_voice | query | 1, um zu transponieren: Die Übersetzung wird in der Stimme des ursprünglichen Sprechers gesprochen, aus derselben Aufnahme geklont. Erfordert Audioeingabe und einen kostenpflichtigen Tarif. |
speed | query | Lesegeschwindigkeit des zurückgegebenen Audios. 1,0 ist normal; 0,25 bis 4,0. Da Sprache pro erzeugter Sekunde abgerechnet wird, ändert das auch den Preis. |
format | query | Format des zurückgegebenen Audios: mp3 (Standard) · wav · opus · flac · pcm. Es wird mit der Standardstimme synthetisiert, daher kommt pcm mit 24.000 Hz heraus. |
curl -X POST "https://api.uttera.ai/v1/translate?target=en&response=both" \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-F file=@recording.mp3
Sie gibt source_text zurück, den übersetzten text und
audio in base64 mit seinem audio_format. Außerdem
source_language: Wenn Sie source nicht angegeben haben, trägt dieses
Feld die von uns erkannte Sprache, nicht das Wort auto. Es lohnt sich, es zu
lesen.
source an.
Das ist stets zuverlässiger, als es der Erkennung zu überlassen.422 abgelehnt, bevor etwas ausgegeben wird, und gibt die gültige Liste zurück.
Verwenden Sie response=text für die übrigen.
Es ist eine Einschränkung der Engine, die diese Kette verwendet, nicht des Produkts: Die hochwertige Stimme spricht rund 30 Sprachen. Wenn Sie Audio in einer der anderen brauchen, sagen Sie es uns.
Die Stimme transponieren
Mit preserve_voice=1 wird die Übersetzung nicht in einer unserer Katalogstimmen
gelesen: Sie wird in der eigenen Stimme des Sprechers gelesen. Dieselbe Aufnahme erledigt
beide Aufgaben, Transkription und Klonen, sodass es nichts weiter hochzuladen gibt.
curl -X POST "https://api.uttera.ai/v1/translate?target=en&response=both&preserve_voice=1" \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-F file=@recording.mp3
Die Antwort trägt preserved_voice: true und voice: "original".
Prüfen Sie es: So wissen Sie, ohne das Audio anzuhören, welches der beiden Produkte Ihnen
geliefert wurde — denn sie kosten nicht dasselbe.
Im Inneren besteht der vollständige Ablauf aus drei Stufen bei einer einzigen Ihrer Anfragen:
| Stufe | Was passiert | Abgerechnet |
|---|---|---|
| 1. Transkribieren | Ihre Aufnahme durchläuft die Spracherkennung. | Pro Sekunde Eingangsaudio. |
| 2. Übersetzen | Der Text wird in die Zielsprache übersetzt. | Im Kettenzuschlag enthalten. |
| 3. Sprechen | Der übersetzte Text wird unter Klonen der Stimme derselben Aufnahme synthetisiert. | Pro Sekunde erzeugtem Audio, zum Tarif der geklonten Stimme. |
/v1/audio/speech. Die Seite Studio
zeigt Ihnen die geschätzten Kosten, bevor Sie es ausführen, mit bereits angehaktem Kästchen.preserve_voice mit 422 abgelehnt: Es
gibt keine Stimme zum Transponieren. Und wenn Ihr Tarif kein Klonen umfasst, mit 403
und dem Namen des Parameters, den Sie weglassen müssen.
Die geklonte Stimme wird nicht gespeichert. Sie wird für diese eine Anfrage im Speicher abgeleitet und verschwindet mit ihr, genau wie beim Adhoc-Klonen.
Die Stimme analysieren
Drei Endpunkte über dasselbe Audio, jeder mit seinem eigenen Preis.
Sie können diese Analysen direkt, ohne Code zu schreiben, auf der Studio-Seite nutzen: Es sind Kästchen auf der Karte Audio transkribieren, angehakt über demselben Audio.
| Endpunkt | Was er tut |
|---|---|
POST /v1/audio/sentiment | Emotionaler Ton der Aufnahme. |
POST /v1/audio/profile | Sprecherprofil: geschätzte Altersspanne und Geschlecht. |
POST /v1/audio/diarize | Wer wann spricht, mit Zeitstempeln pro Sprecher. |
curl -X POST https://api.uttera.ai/v1/audio/diarize \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-F file=@recording.mp3
Eine Aufnahme zusammenfassen
POST /v1/summarize Professional und höher
Sie transkribiert, analysiert den Ton, erstellt ein Sprecherprofil, trennt die Sprecher und erzeugt aus alldem eine strukturierte Zusammenfassung. Die vier zugrunde liegenden Dienste laufen parallel, sodass die Wartezeit die des langsamsten ist, nicht die Summe.
Sie können diesen Dienst direkt, ohne Code zu schreiben, auf der Studio-Seite nutzen: Es ist ein weiteres Kästchen auf der Karte Audio transkribieren.
| Parameter | Typ | Beschreibung |
|---|---|---|
file | Datei | Erforderlich. Die Aufnahme. |
exclude | query | Deaktiviert Anreicherungen: ?exclude=emotion,profile,diarize |
language | query | Sprache der Zusammenfassung. Standardmäßig Spanisch. |
Sie gibt summary, transcript, enrichment und einen
usage-Block mit den nach Stufen aufgeschlüsselten Credits zurück.
warnings-Array heraus,
und diese Stufe wird nicht berechnet.Tokens bei Ihrem LLM sparen
Das ist die Nutzung der Zusammenfassung, die die wenigsten sehen und die am meisten Geld spart. Wenn Sie möchten, dass ein Sprachmodell eines anderen Anbieters — Claude, GPT, Gemini, welches auch immer — mit dem arbeitet, was in einem Anruf gesagt wurde, ist der teure Weg, ihm das ganze Transkript zu senden. Der günstige ist, ihm die Zusammenfassung zu senden.
Gemessen an einer echten 70-minütigen Aufnahme abwechslungsreicher Prosa, gezählt mit
dem o200k_base-Tokenizer:
| Was Sie dem LLM senden | Wörter | Tokens |
|---|---|---|
| Vollständiges Transkript | 10.429 | 15.410 |
| Strukturierte Zusammenfassung | 294 – 422 | 484 – 673 |
Es ist als Spanne angegeben, weil die Zusammenfassung nicht deterministisch ist: Dieselbe Aufnahme, zweimal ausgeführt, ergab 484 und 673 Tokens. Zwischen 20- und 30-mal weniger Eingabe-Tokens, und die Ersparnis wächst mit der Dauer: Das Transkript wächst geradlinig mit den Minuten der Aufnahme, die Zusammenfassung nicht — sie bleibt bei ein paar hundert Tokens. Bei einer kurzen Aufnahme macht es keinen Unterschied; bei einem Archiv von Anrufen ist es der Unterschied zwischen einer LLM-Rechnung, die Sie zahlen können, und einer, die Sie nicht zahlen können.
Die Antwort liefert summary und transcript im selben Aufruf,
sodass Sie nicht im Voraus wählen oder doppelt zahlen müssen: Sie entscheiden in Ihrem Code,
welches der beiden zum LLM hochgeht.
Es gibt ein vollständiges, ausführbares Beispiel — hier zusammenfassen, nur die Zusammenfassung an das LLM senden und die eingesparten Tokens zählen — in uttera-examples/llm-tokens.