Konnektoren
base_url auf https://api.uttera.ai/v1, der Rest Ihres Codes bleibt gleich.Uttera lebt nicht allein: Es lebt in dem, was Sie bereits haben. Dieser Abschnitt sammelt die Wege, es anzubinden — die, die bereits funktionieren, die, die wir fertig mitbringen, und die, die wir uns ansehen — plus die Open Source, auf der es aufgebaut ist.
| Ordner | Was darin ist |
|---|---|
| openai-sdk | Uttera über das offizielle OpenAI-SDK, in Python, Node und curl |
| asterisk/recordings | Die Anrufe transkribieren, die Ihr Telefonsystem bereits aufzeichnet, ohne den Dialplan anzufassen |
| asterisk/agi | Innerhalb des Anrufs sprechen und den Anrufer hören |
| n8n | Verifizierter Community-Node (transkribieren, zusammenfassen, übersetzen, sprechen, Effekte, Musik). Importfertige Workflows unter “n8n und Automatisierung” |
| openclaw | Eine Skill für Agenten: transkribieren, zusammenfassen, übersetzen und sprechen |
Wir sprechen den Dialekt von OpenAI
Die beiden Hauptdienste folgen genau derselben Form wie die OpenAI-API: dieselben Routen, dieselben Parameternamen, dieselben Stimmennamen und dieselben Antworten.
| Endpunkt | Kompatibel |
|---|---|
POST /v1/audio/transcriptions | Ja. file, model=whisper-1, language, prompt, response_format, temperature |
POST /v1/audio/speech | Ja. model=tts-1 / tts-1-hd, input, voice, response_format, speed |
GET /v1/models | Ja. Gibt tts-1, tts-1-hd und whisper-1 zurück. Es ist das, was das SDK aufruft, sobald der Client konstruiert ist |
Stimmen alloy · echo · fable · nova · onyx · shimmer | Ja, unter genau diesen Namen |
/v1/translate · /v1/summarize · ?extras= · /v1/usage/last | Unsere. Sie existieren bei OpenAI nicht und stehen niemandem im Weg, der sie nicht nutzt |
In der Praxis bedeutet das, dass alles, was für die OpenAI-API geschrieben wurde, mit dem Ändern von zwei Zeilen funktioniert: der Basisadresse und dem Schlüssel. Einschließlich ihres offiziellen SDK:
from openai import OpenAI
c = OpenAI(api_key="sk-echo-...", # your Uttera key
base_url="https://api.uttera.ai/v1") # and our address
audio = c.audio.speech.create(model="tts-1", voice="nova",
input="Your order ships tomorrow.")
open("voice.mp3", "wb").write(audio.content)
with open("recording.mp3", "rb") as f:
print(c.audio.transcriptions.create(model="whisper-1", file=f,
response_format="text"))
openai-Paket, ohne irgendetwas zu patchen: Es erzeugt das Audio,
transkribiert es zurück und gibt den ursprünglichen Text zurück.Daher kommt der interessante Teil: Alles, was bereits mit OpenAI zu sprechen weiß, weiß mit uns zu sprechen — lokale Agenten, selbst gehostete Chat-Oberflächen, Plugins, Skripte, die jemand vor einem Jahr geschrieben hat — mit dem Unterschied, dass das Audio die Europäische Union nie verlässt. Für viele Unternehmen ist das der einzige Grund, warum das Projekt von der Demo in die Produktion geht.
Asterisk und Telefonsysteme
Es ist die am häufigsten gewünschte Integration, weil dort die Stimme tatsächlich ist. Wir bringen zwei einsatzfertige AGI-Skripte mit: eines sagt einen Text innerhalb des Anrufs, und das andere hört dem Anrufer zu und legt das Gesagte in eine Dialplan-Variable.
exten => 101,1,Answer()
same => n,AGI(uttera-decir.agi,"How can I help you?")
same => n,AGI(uttera-oir.agi,8,en)
same => n,NoOp(The caller said: ${UTTERA_TEXTO})
Von da an liegt es bei Ihnen: ein Menü, eine Datenbankabfrage, ein Sprachmodell. Und für den
häufigsten Fall — das Transkribieren von Anrufen, die bereits aufgezeichnet sind — bringt
das Beispiel das Gerüst mit MixMonitor und einem Hangup-Hook.
Was das Beispiel löst und was einen Tag kostet, selbst herauszufinden:
| Falle | Was passiert, wenn Sie es nicht wissen |
|---|---|
| Uttera erzeugt mit 24 kHz, der Telefonkanal läuft mit 8 kHz | Asterisk spielt die Datei mit seiner eigenen Rate ab: Die Stimme kommt schnell und hoch heraus |
| Fehlende Stille am Ende der Datei | Asterisk schneidet die letzte Silbe ab |
| Whisper bleibt bei Stille nicht still | Es gibt einen erfundenen Satz zurück — “Thanks for watching” — weil das in seinen Trainingsdaten reichlich vorkommt. Sie zahlen dafür, und schlimmer, Sie handeln danach |
Das Quoting in SET VARIABLE | Text mit Leerzeichen kommt zerteilt an, und die Variable behält nur das erste Wort |
| API-Timeouts während eines Anrufs | Zwei Stunden Warten mit einer Person am Telefon. In der Telefonie schneiden Sie bei 30 s ab und sagen etwas |
Der vollständige Code und Dialplan sind im Beispiel-Repository, mit einer Erklärung zu jedem.
Die Anrufe, die Sie bereits aufzeichnen
Bevor Sie erwägen, innerhalb des Anrufs zu sprechen, schauen Sie sich das an: Ihr Telefonsystem schreibt bereits Audiodateien in irgendeinen Ordner. Es gibt zwei Skripte, die sie lesen und das Transkript und die Analyse daneben ablegen, und Sie müssen den Dialplan nicht anfassen. Eine cron-Zeile, und Sie haben die Anrufe der letzten Woche transkribiert.
Es ist der Code, den wir selbst in Produktion betreiben, mit den für unsere Installation spezifischen Teilen entfernt. Er trägt drei Dinge in sich, die uns teuer zu stehen kamen: eine laufende Aufnahme von einer alten zu unterscheiden, Transkription und Analyse in einem einzigen Upload statt in vier anzufordern, und einen Datumsfilter standardmäßig — ein Batch-Prozess ohne Fenster durchläuft bei jedem Durchgang die gesamte Historie, und an dem Tag, an dem er auf ein echtes Archiv trifft, stellt er Jahre von Anrufen auf einmal in die Warteschlange.
n8n und Automatisierung
Wenn Sie n8n verwenden, gibt es zwei Wege, und der zweite braucht nichts installiert.
Importfertige Workflows. Sie laden sie herunter, importieren sie, und sie funktionieren mit dem Standard-HTTP-Node — auch auf n8n cloud. Der nützlichste ist der, der alle fünfzehn Minuten einen Ordner mit Aufnahmen überwacht und jede zum Zusammenfassen sendet: Es ist genau der Fall von jemandem, der bereits ein aufzeichnendes Telefonsystem hat und nur jemanden braucht, der diese Aufnahmen liest. Kein Dialplan anzufassen.
Unser eigener Node. n8n-nodes-uttera ist ein von n8n verifizierter
Community-Node: Installieren Sie ihn aus den Einstellungen von n8n (Community Nodes) oder mit
npm i n8n-nodes-uttera. Er fügt Transkribieren, Zusammenfassen, Übersetzen,
Text-zu-Sprache, Klangeffekte und Musik als Operationen eines einzigen Nodes hinzu, mit den
Zugangsdaten in n8n gespeichert statt lose in jeder Anfrage. Quellcode unter
github.com/uttera/n8n-nodes-uttera.
Telegram
Uttera hat einen Telegram-Bot, @Uttera_bot, um Sprachnachrichten zu transkribieren und zusammenzufassen, ohne den Chat zu verlassen. Was er tut, wird Ihrem Konto berechnet, mit denselben Credits wie die API.
Konto verknüpfen (einmalig). Gehen Sie zu Ihrem Konto →
Anwendungen verbinden → Telegram: Der Bot öffnet sich bereits mit Ihrem Konto
verknüpft (intern ist es ein /start mit einem Einmal-Link; Sie fügen keinen
Schlüssel ein). Ab dann weiß der Bot, wer Sie sind und wem er es berechnet.
Verwendung. Senden Sie ihm eine Sprachnachricht (oder ein Audio) und er gibt Ihnen die Transkription zurück. Darunter erscheinen Schaltflächen, um mit derselben Aufnahme mehr zu tun:
- 📝 Zusammenfassen — eine kurze Zusammenfassung des Audios.
- 📄 PDF-Bericht — die Zusammenfassung als PDF-Dokument, das der Bot Ihnen als Datei sendet.
- 🔗 PDF mit Graph — das PDF mit dem Beweisgraphen (überprüfbarer Bericht; erfordert den Tarif Professional oder höher).
- 🌍 Übersetzen — übersetzt das Audio in eine andere Sprache: Sie wählen zuerst die Ausgabe — Text, Stimme (Sprachausgabe) oder geklonte Stimme (klingt mit der Stimme des ursprünglichen Sprechers; erfordert einen kostenpflichtigen Tarif) — und dann die Sprache. Jede Ausgabe bietet nur die Sprachen, die sie unterstützt (Text deutlich mehr als Stimme).
Befehle. /account öffnet Ihr Konto (Credits, Ablauf, Abrechnung);
/lang en|es|fr|de ändert die Sprache der Antworten des Bots; /start
verknüpft das Konto erneut; /help ruft all dies in Erinnerung.
Slack
Uttera hat eine Slack-App, um Sprachnachrichten direkt in Slack zu transkribieren, zusammenzufassen und zu übersetzen. Was sie tut, wird Ihrem Konto berechnet, mit denselben Credits wie die API.
Die App in Ihrem Slack installieren (einmal pro Workspace). Ein Workspace-Administrator öffnet app.uttera.ai/slack/install und klickt auf Allow: Das fügt die Uttera-App zu diesem Slack hinzu. Danach verknüpft jeder Nutzer sein eigenes Konto wie unten beschrieben.
Konto verknüpfen (einmalig). Unter Ihrem Konto →
Anwendungen verbinden → Slack erhalten Sie einen Einmal-Code. Geben Sie
in Slack /uttera connect <Code> ein, und Ihr Benutzer wird mit Ihrem
Uttera-Konto verknüpft (Sie fügen keinen Schlüssel ein).
Verwendung. Teilen Sie eine Sprachnachricht (oder ein Audio) mit dem Bot, und er gibt Ihnen die Transkription zurück, mit denselben Schaltflächen wie in Telegram:
- 📝 Zusammenfassen — eine kurze Zusammenfassung.
- 📄 PDF-Bericht — die Zusammenfassung als PDF, das der Bot in den Kanal hochlädt.
- 🔗 PDF mit Graph — das PDF mit dem Beweisgraphen (erfordert den Tarif Professional oder höher).
- 🌍 Übersetzen — in eine andere Sprache: Sie wählen zuerst die Ausgabe (Text, Stimme oder geklonte Stimme; die geklonte Stimme erfordert einen kostenpflichtigen Tarif) und dann eine für diese Ausgabe verfügbare Sprache.
Befehle. /uttera account öffnet Ihr Konto;
/uttera lang en|es|fr|de ändert die Antwortsprache;
/uttera connect <Code> verknüpft; /uttera help ruft alles in
Erinnerung.
/invite @Uttera). Wie alles bei Uttera speichern wir Ihre Audios nicht, und das
von uns erzeugte Audio trägt das unhörbare Wasserzeichen, das die KI-Verordnung der EU
vorschreibt.Skill: lokale Audiodatei in Claude, ChatGPT, Gemini und OpenClaw
Eine Skill ist ein Ordner mit Anweisungen und einem kleinen Skript, das Ihr Assistent
bei Bedarf lädt. Mit der Uttera-Skill können Sie eine Audiodatei von Ihrem Datenträger
anhängen — direkt im Chat — und sie bitten, diese zu transkribieren,
zusammenzufassen, einen signierten PDF-Bericht mit einem Beweisgraphen zu
erstellen, sie zu übersetzen (in Text oder in Sprache), zu sagen, wer spricht,
eine Aussprache zu bewerten, eine Stimme zu klonen oder einen Text
vorzulesen. Das Skript läuft in der Code-Sandbox des Assistenten: Es liest die
angehängte Datei und lädt sie zu api.uttera.ai hoch, sodass das Audio nie durch
das Modell läuft (es kann Audio nicht dekodieren). Es wird Ihrem Konto berechnet, mit
denselben Credits wie die API.
Herunterladen. Unter Ihrem Konto → Anwendungen
verbinden klicken Sie auf die Schaltfläche Ihres Assistenten (Claude, ChatGPT,
Gemini oder OpenClaw). Sie erhalten eine .zip mit der bereits
personalisierten Skill: Sie trägt einen neuen Schlüssel aus Ihrem Konto, benannt nach dem
Assistenten (z. B. „Claude skill“), jederzeit weiter unten unter API-Tokens
widerrufbar.
Installieren.
- Claude (Desktop oder Web, Tarife mit Skills): Einstellungen → Fähigkeiten →
Skills und laden Sie die
.ziphoch. - ChatGPT (Business-/Enterprise-Tarife mit Skills): fügen Sie sie als Skill in den Einstellungen Ihres Workspace hinzu.
- Gemini: fügen Sie sie als Skill in den Einstellungen hinzu.
- OpenClaw: entpacken Sie die
.zipin Ihren Skills-Ordner.
Hängen Sie dann im Chat ein Audio an und bitten Sie um alles Mögliche: „Transkribiere das“, „Erstelle mir einen PDF-Bericht“, „Übersetze es mit meiner Stimme ins Englische“… Der Assistent führt das Skript aus und gibt Ihnen den Text zurück oder das erzeugte PDF/Audio.
api.uttera.ai freigeben: Organisationseinstellungen → Fähigkeiten,
Allow network egress aktivieren und api.uttera.ai zur Domain allowlist
hinzufügen. Bei Einzelkonten (Free/Pro) ist das nicht nötig — die Skill erreicht
api.uttera.ai ohne jede Änderung. Ein Netzwerkfehler bei einem Team-/Unternehmenskonto
bedeutet fast immer, dass die Domain noch nicht freigegeben wurde. Das von uns erzeugte Audio
trägt das unhörbare Wasserzeichen, das die KI-Verordnung der EU vorschreibt.MCP: für Claude und Agenten mit Werkzeugen
Das Model Context Protocol (MCP) ist der Standardweg, einem Assistenten Werkzeuge zu geben. Statt jeden Endpunkt von Hand zu beschreiben, geben Sie ihm eine Adresse, und er entdeckt selbst, was Uttera kann und wie man es aufruft.
Unser Server liegt unter https://mcp.uttera.ai/mcp. Sie melden sich mit Ihrem
Uttera-Konto an und fügen keinen Schlüssel ein: Der Assistent schickt Sie zur Anmeldung, und
von da an tragen die Aufrufe Ihre Autorisierung und werden von Ihrem Guthaben abgebucht, mit
denselben Credits wie die API.
Er stellt dieselben Fähigkeiten wie die API bereit, bereits als Werkzeuge verpackt: sprechen, transkribieren, übersetzen, zusammenfassen, sagen, wer spricht, eine Aussprache bewerten, Klangeffekte und Musik, die Stimmen auflisten, einen signierten Bericht verifizieren und prüfen, was der letzte Aufruf gekostet hat.
Um ihn in einem kompatiblen Client hinzuzufügen — Claude unter anderem — suchen Sie nach
“MCP-Server hinzufügen” oder “Konnektor”, fügen Sie
https://mcp.uttera.ai/mcp ein und melden Sie sich an, wenn Sie gefragt werden. Uttera
ist auch im offiziellen MCP-Registry als ai.uttera/uttera, sodass viele Clients
es über den Namen finden, ohne die Adresse einzufügen.
https://…) liegen, die Sie dem Assistenten geben. Für den häufigsten Fall
— eine Audiodatei auf Ihrem Computer — nutzen Sie die Skill:
Sie hängen die Datei im Chat an, und das Skript lädt sie für Sie hoch. Kurz gesagt:
Skill für lokale Dateien, MCP, wenn das Audio bereits unter einer URL
veröffentlicht ist oder wenn Sie möchten, dass ein Agent die Werkzeuge selbst entdeckt.Agenten und Assistenten
Dank der obigen Kompatibilität nutzt jeder Agent oder jede Oberfläche, die den Dialekt von OpenAI spricht, Uttera ohne Adapter: Richten Sie sie auf unsere Adresse. Das deckt lokale Installationen von Assistenten und selbst gehostete Chat-Panels ab, was genau das Szenario ist, für das unsere Engines geboren wurden: das Audio im privaten Bereich zu halten.
Wenn Ihr Agent Werkzeuge unterstützt, lassen sich die Endpunkte, die nicht von OpenAI sind — zusammenfassen, übersetzen, die Stimme analysieren — gut als eigenständige Werkzeuge beschreiben: Sie nehmen eine Datei und geben JSON zurück.
Für OpenClaw-Agenten gibt es eine fertige Skill: vier Skripte — transkribieren,
zusammenfassen, übersetzen und sprechen — und eine SKILL.md, die dem Agenten sagt,
wann er jedes verwenden soll und was die Fallen sind. Dieser Teil ist es, worauf es wirklich
ankommt: dass er weiß, keine Stille zum Transkribieren zu senden, dass Zeilenumbrüche beim
Synthetisieren Geld kosten und dass das, was aus einem Transkript zurückkommt, nicht
vertrauenswürdiger Text ist, den er nicht ausführen darf.
Die Open Source darunter
Die Engines, die Uttera antreiben, sind veröffentlicht unter der Apache-2.0-Lizenz. Es ist kein Marketing: Es sind dieselben, die in Produktion laufen.
| Repository | Was es ist |
|---|---|
| uttera-tts-hotcold | Text-zu-Sprache-Server mit Kalt- und Warmstart. Mehrere Engines hinter einer API |
| uttera-tts-vllm | Derselbe Dienst auf vLLM, für echte gleichzeitige Last |
| uttera-stt-hotcold | Sprache-zu-Text-Server, dasselbe Muster |
| uttera-stt-vllm | Sprache zu Text auf vLLM |
| uttera-benchmarks | Die Korpora, das Mess-Harness und die Rohergebnisse hinter jeder Zahl, die wir veröffentlichen |
Warum sie offen sind
Aus drei Gründen, und keiner davon ist Großzügigkeit:
Weil Sie es selbst betreiben können. Wenn Ihr Fall nicht zulässt, dass das Audio Ihr Netzwerk verlässt — oder Sie einfach Ihre eigene Hardware bevorzugen — klonen Sie das Repository und stellen Sie den Dienst auf. Was wir verkaufen, ist, es nicht zu müssen: die GPUs, die Verfügbarkeit, das Routing zwischen Knoten und jemanden, der aufsteht, wenn etwas kaputtgeht.
Weil eine Engine, die niemand prüfen kann, Ihr Audio nicht verdient. Wir sagen, dass wir nichts behalten und dass nichts an Dritte geht. Mit dem Code vor Augen lässt sich das prüfen, statt es zu glauben.
Weil Zahlen ohne das Setup wertlos sind. Alle veröffentlichen “X Anfragen pro Sekunde auf einem Y”, ohne zu sagen, mit welchem Korpus, bei welcher Gleichzeitigkeit oder bei welchem Perzentil. Das Mess-Repository trägt die ganzen Korpora, das Protokoll und die Rohergebnisse, gerade damit Sie den Test wiederholen und uns widersprechen können.
Konnektoren in Arbeit
Was als Nächstes kommt, in der Reihenfolge, in der die Leute danach fragen:
| Konnektor | Wofür |
|---|---|
| CRM | Damit Transkript und Zusammenfassung eines Anrufs von selbst im Datensatz des Kunden landen |
| Aufzeichnungen von anderen Telefonsystemen (FreePBX, 3CX, Issabel) | Dasselbe, was der Asterisk-Konnektor bereits tut, angepasst an den Ort, an dem jedes seine Dateien ablegt |
| Sprachnachricht zu Text im Messaging | Der am schnellsten wachsende Anwendungsfall: Niemand will eine vierminütige Sprachnachricht anhören |
Wenn der, den Sie brauchen, nicht dabei ist, sagen Sie es uns: Die Reihenfolge entscheidet, wer fragt.