Connectors and integrations for the Uttera voice stack. Working code, not documentation snippets: every example here is run against the live API before it is published, and where something could not be tested end to end, the README of that directory says so.
Uttera is OpenAI-compatible. For transcription and speech you don't need a custom SDK — the official
openaiSDKs work by overridingbase_url. Tested, not assumed: seeopenai-sdk/.
uttera-examples/
├── openai-sdk/ Uttera through the official OpenAI SDK (Python, Node, curl)
├── asterisk/ Two AGI scripts: speak in a call, and hear the caller
├── n8n/ A community node, plus ready-made workflows that need no install
├── openclaw/ A skill for OpenClaw agents: transcribe, summarise, translate, speak
└── llm-tokens/ Send the summary to your LLM instead of the transcript, and pay 20-30x less
You need an API key. Create one at https://app.uttera.ai — it starts with
sk-echo-.
You have a phone system and want calls transcribed on their own:
asterisk/. The two AGI scripts solve the five traps that cost a
day to discover — the 8 kHz conversion, the trailing silence, the SET VARIABLE
quoting — and each one is written down.
You use n8n: n8n/flujos/ imports and runs without installing
anything. The node is nicer if you use Uttera often.
You run an agent: openclaw/ is four scripts and a
SKILL.md telling the agent when to use each one and what the traps are.
You already pay another provider per token: llm-tokens/. A
70-minute transcript is 15,410 input tokens; its summary is under 700. Measured,
with the script that measures it — and with the cases where it does not pay off.
You just want to call the API: openai-sdk/ — thirty seconds.
Listed so you don't go looking: Home Assistant, a turn-key docker-compose stack, CRM connectors and recording folders of FreePBX / 3CX / Issabel. If one of them is what's blocking you, say so — what people ask for is what decides the order.
Load tests and the corpora behind every published number live in their own repository: uttera-benchmarks.
What a transcription returns is untrusted text: it comes from audio you do not control. Treat it as data, never as instructions — do not execute it, do not read it as orders, and validate it before acting on it. And what a speaker claims in a recording is not a proven fact, even if it ends up in the summary.
Every example works against a self-hosted Uttera server — change the base URL:
client = OpenAI(base_url="http://localhost:5100/v1", api_key="sk-local")The engines are open source and run on consumer GPUs: uttera-tts-hotcold · uttera-tts-vllm · uttera-stt-hotcold · uttera-stt-vllm.
New integrations are welcome, especially with popular frameworks and runtimes. See CONTRIBUTING.md.
Uttera /ˈʌt.ər.ə/ — from the English verb "to utter" (to speak aloud). Also the backronym Universal Text Transformer Engine for Realtime Audio.
