Konnektoren
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.
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.
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.