Self-hosted voice-AI telephony appliance: AI phone agents on Asterisk + Deepgram — answer, converse, transfer, record, transcribe & summarize calls. DSGVO-friendly, single Docker container, admin UI + JSON API.
FAQ (answers come from our records)
How do I install it?
We did not find an install command for this repository (our install coverage is only about 4%). Check its README or releases page.
Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository JUNGHERZ/Voice-Office-Hub;first catalogued 2026-10-10;last seen 2026-10-10。There is no official certification or quality rating here — we record sources and dates only.
Voice-Office-Hub
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**🇬🇧 English** · 🇩🇪 Deutsch
> **VOH-Appliance** — Voice-Office-Hub. Part of the **"*-Office-Hub"** product family
> (sister project: Message-Office-Hub for chat/email/WhatsApp/SMS).
**AI phone agents as a self-hostable appliance.** A call from landline/mobile is answered by an AI agent, handled naturally, and handed off to a human when needed — **GDPR-compliant in your own data center**, in a **single** Docker container.
✨ Features
- 📞 **Telephony AI agent** — answers calls over SIP and holds a natural voice conversation
- 🔌 **Provider-neutral engine** — voice platforms dock behind one interface: Deepgram Voice Agent or the **built-in native pipeline** per agent; ElevenLabs S2S, OpenAI Realtime and xAI Grok are prepared seams
- ⚡ **Native cascade (own orchestration)** — Flux STT → streaming LLM → streaming TTS with sentence overlap and two-layer barge-in cancellation; noticeably snappier turns and roughly a third of the bundled agent's media cost
- 🧪 **Duplex turn-taking — experimental** — an opt-in third path (voiceProvider: duplex) that lets a conversation controller hold back a reported end-of-turn when the sentence still sounds unfinished, instead of answering a fragment. The rule was derived from a measured call, not guessed: Flux ends most turns on its silence timeout, so terminal punctuation — not the end-of-turn confidence — is what separates "finished" from "paused". Off unless an agent selects it; everything else keeps the proven behaviour
- 🇩🇪 **Multilingual** — German-language conversation out of the box (nova-3/Flux + Aura-2, STT model selectable per agent)
- 🗣️ **TTS voices** — Deepgram Aura-2, **Mistral Voxtral** (EU processing, ~7× cheaper than ElevenLabs, voice cloning from ~3 s of reference audio) or **ElevenLabs** per agent — picked from a server-side catalogue that also carries the GDPR classification. API keys stay in the server env, never in the database
- 🎧 **Background ambience** — optional per-agent room tone under and between agent speech (bundled license-free presets: office/room/rain)
- 🌐 **Embeddable web widget** — visitors call the agent right in the browser (one script tag; WebRTC via Asterisk, level-driven speaking animation, optional live transcript)
- 🔀 **Transfer & hang-up** — warm transfer to humans, autonomous call ending
- ⏳ **No dead air** — a short filler phrase while a slow tool is working; follow-up prompts when the caller goes quiet (escalating, optionally ending in an automatic hang-up — abandoned calls end instead of running up the line)
- 🌍 **Announcements translated automatically** — you maintain each announcement **once** in your own language; if the caller switches languages, the engine translates them at runtime — keeping the level of formality used in the conversation
- 👋 **Greeting in the caller's language** — the agent remembers which language a number spoke and greets it that way next time, before a single word is said; phone numbers are stored pseudonymised and expire on their own (opt-in per agent)
- 🧩 **Tools / function calling** — per-agent HTTP endpoints for your business logic **plus MCP servers** as tool sources, both managed in the admin UI (${ENV:} secrets stay server-side)
- 📡 **Live view & metrics** — running calls with live transcript; per-call time-to-first-answer, barge-ins, and tool stats
- 🗂️ **Transcript & recording** — full text + audio (MongoDB/GridFS) + post-call summary
- ☎️ **Passthrough mode** — pure forwarding + recording + batch transcription
- 🎯 **Multi-agent / DDI routing** — a dedicated agent per phone number
- 🕘 **Greeting from a prompt** — for openings that are not constant (time of day, changing details): the agent generates its first sentence per call, in the caller's language, while the phone is still ringing — with the stored greeting as the safety net