Zum Inhalt

IVR, Voice Bot & Dolmetscher

Uebersicht

Das IVR-System (Interactive Voice Response) bildet die erste Anlaufstelle für eingehende Anrufe. Es kombiniert klassische DTMF-Navigation mit KI-gestützter Spracherkennung und bietet Zugang zum Voice Bot sowie zum Echtzeit-Dolmetscher.


IVR-System

Anruf-Flow

Eingehender Anruf
DID-Lookup (Platform API)
IVR-Menue zugeordnet?
    ├── Ja → Personalisierte Begruessung (TTS)
    │         │
    │         ▼
    │     Warte auf Eingabe (DTMF + Sprache parallel)
    │         │
    │         ▼
    │     Aktion ausfuehren
    └── Nein → Fallback (Extension / Ring Group)

DTMF-Menue

Taste Aktion
0 Zentrale (Ring Group)
1 Voice Bot (LiveKit Agent)
2 Weiterleitung an Mitarbeiter
3 Nachricht aufnehmen
4 Dolmetscher starten
9 Menü wiederholen

Sprach-Navigation

Parallel zu DTMF wird die Spracheingabe des Anrufers analysiert:

Anrufer spricht
audio_fork → WebSocket /ivr
STT (Spracherkennung)
Intent-Erkennung → Aktion

Die Spracherkennung läuft über audio_fork, das den Audiostream in Echtzeit an einen WebSocket-Endpoint weiterleitet. Die Intent-Erkennung mappt gesprochene Schlüsselwörter auf DTMF-Aktionen.

IVR-Menue Verwaltung

# IVR-Menues verwalten
GET /api/v1/sip/ivr-menus
POST /api/v1/sip/ivr-menus
{
    "name": "Hauptmenue",
    "greeting_tts": "Willkommen bei xynap. Druecken Sie 1 fuer...",
    "timeout": 10,
    "max_retries": 3,
    "actions": [
        {"digit": "0", "type": "ring_group", "target_id": 1},
        {"digit": "1", "type": "livekit_agent", "target_id": null},
        {"digit": "2", "type": "extension", "target_id": 1000},
        {"digit": "4", "type": "interpreter", "target_id": null}
    ]
}

TTS (Text-to-Speech)

ElevenLabs — IVR-Ansagen

Für IVR-Begrüßungen und Menüansagen wird ElevenLabs verwendet (hochwertige, natürlich klingende Stimmen).

  • Einsatz: Personalisierte Begrüßungen, Menüansagen
  • Cache: /var/lib/xynap/voicebot/tts-audio/ivr_greetings/
  • Format: WAV, 8kHz/16bit (SIP-kompatibel)

TTS-Caching

Generierte Audiodateien werden gecacht, damit identische Ansagen nicht erneut generiert werden müssen. Bei Änderung des Begrüßungstexts wird der Cache automatisch invalidiert.

Piper — Interpreter-TTS

Für den Dolmetscher-Service wird Piper (lokales TTS) verwendet:

  • Einsatz: Echtzeit-Übersetzungsausgabe
  • Vorteil: Keine API-Latenz, läuft lokal
  • Modelle: Deutsche und englische Stimmen vorinstalliert

LiveKit Voice Bot

Architektur

FreeSwitch
    │ SIP INVITE an *99 oder IVR-Taste 1
sofia/external-ipv4/test@127.0.0.1:5070
LiveKit SIP Bridge (livekit-sip)
    │ Erstellt LiveKit Room
LiveKit Server (livekit)
    │ Dispatcht Agent
LiveKit Agent Worker (livekit-agent)
    │ Python, livekit-agents 1.4
KI-Interaktion (STT → LLM → TTS)

Konfiguration

Komponente Config-Datei Container
LiveKit Server /etc/xynap/livekit/livekit.yaml livekit
SIP Bridge /etc/xynap/livekit-sip/sip.yaml livekit-sip
Agent Quellcode in Container livekit-agent

SIP Trunk & Dispatch

Parameter Wert
SIP Trunk ID ST_kwNbrEg4YHSv
Dispatch Rule ID SDR_k4XfgYznebZA
SIP-Ziel 127.0.0.1:5070
Test-Extension *99

Agent Worker

Der Agent Worker ist ein Python-Prozess, der auf Basis von livekit-agents 1.4 arbeitet:

  1. STT (Speech-to-Text) — Transkription der Anrufer-Sprache
  2. LLM — Verarbeitung und Antwort-Generierung
  3. TTS — Sprachausgabe der Antwort

Der Agent wird automatisch gestartet, wenn ein neuer Teilnehmer den LiveKit-Room betritt (Dispatch Rule).


Dolmetscher (Echtzeit-Uebersetzung)

Uebersicht

Der Dolmetscher ermöglicht bidirektionale Echtzeit-Übersetzung während eines Telefonats. Er wird über IVR-Taste 4 aktiviert.

Pipeline

Anrufer spricht (Deutsch)
Whisper STT (Transkription)
    │ Text (DE)
LibreTranslate (Uebersetzung DE → EN)
    │ Text (EN)
Ollama (optionale Nachbearbeitung/Kontextverstaendnis)
    │ Text (EN, optimiert)
Piper TTS (Sprachausgabe)
    │ Audio (EN)
Ausgabe an Gegenpartei

Die gleiche Pipeline läuft in umgekehrter Richtung für die Gegenpartei.

Technische Details

Komponente Beschreibung
Container interpreter-bridge (host network)
Quellcode /usr/local/xynap/interpreter/
WebSocket ws://127.0.0.1:9001/interpret
STT Whisper (OpenAI)
Übersetzung LibreTranslate (lokal)
LLM Ollama (lokal, optionale Nachbearbeitung)
TTS Piper (lokal)

Audio-Flow

Teilnehmer A                    Teilnehmer B
     │                               │
     │  Audio (DE)                    │
     ├──────► audio_fork ────────────►│
     │        │                       │
     │        ▼                       │
     │   Whisper STT                  │
     │        │                       │
     │        ▼                       │
     │   LibreTranslate              │
     │        │                       │
     │        ▼                       │
     │   Piper TTS (EN)              │
     │        │                       │
     │        └──────────► Audio (EN) │
     │                               │
     │  Audio (EN)                    │
     │◄──── gleiche Pipeline ────────┤
     │       (umgekehrt)             │

Latenz

Die End-to-End-Latenz der Übersetzungspipeline liegt typischerweise bei 2–4 Sekunden, abhängig von der Satzlänge und GPU-Auslastung. Whisper und Piper laufen auf der lokalen RTX 4000 Ada (20 GB VRAM).

GPU-Ressourcen

Whisper, Ollama und Piper teilen sich die GPU. Bei gleichzeitiger Nutzung aller Dienste kann es zu Engpässen kommen. Der Dolmetscher hat aktuell Priorität auf die GPU-Ressourcen.


Zusammenspiel der Komponenten

                    ┌─────────────────┐
                    │  Platform API   │
                    │  (SIP-Modul)    │
                    └────────┬────────┘
                             │ xml-curl
┌─────────┐     ┌────────────────────────┐     ┌─────────────┐
│  SIP    │────►│     FreeSwitch          │────►│  LiveKit    │
│Provider │     │                        │     │  SIP Bridge │
└─────────┘     │  IVR ──► DTMF/Sprache │     └──────┬──────┘
                │         │              │            │
                │    ┌────┴────┐         │     ┌──────┴──────┐
                │    │ Taste 1 │─────────┼────►│ Voice Bot   │
                │    │ Taste 4 │─────┐   │     │ (Agent)     │
                │    └─────────┘     │   │     └─────────────┘
                └────────────────────┼───┘
                              ┌──────┴──────┐
                              │ Interpreter │
                              │   Bridge    │
                              └──────┬──────┘
                     ┌───────┬───────┼───────┐
                     ▼       ▼       ▼       ▼
                  Whisper  Libre   Ollama  Piper
                   STT    Translate  LLM    TTS