Simulation des "Fräulein vom Amt" in einer Handvermittlung mit Spracherkennung und Verbindungsaufbau
Hallo zusammen,
für meinen kleinen Asterisk-Telefonserver auf einem Raspberry Pi 3B hatte ich mir in den Kopf gesetzt eine Handvermittlung mit Spracherkennung zu simulieren. Man ruft also die Vermittlung an, sagt die gewünschte Zielnummer oder den Namen des Teilnehmers auf, mit dem man sprechen will und nach ein paar Sekunden wird man von einer freundlichen Stimme verbunden - das "Fräulein vom Amt" also mit Künstlicher Intelligenz umgesetzt. Die Künstliche Intelligenz steckt hauptsächlich in der Spracherkennung.
Bild mit der KI Banana2 von Gemini erzeugt
Es begann also mit einer simplen Idee: Eine historische Telefonvermittlung soll Anrufe per Spracherkennung weiterleiten. Klingt machbar, dachte ich. Zwei Tage später weiß ich, dass der Teufel im Detail steckt. Für das Coding und für die Installationsanleitungen der Spracherkennungsoftware kamen die kostenlosen Versionen von Claude Sonnet 4.6 und Gemini zum Einsatz, wobei ich hauptsächlich mit Claude arbeitete.
Der erste Kandidat war Vosk, eine lokale Open-Source-Spracherkennung. Die Idee war elegant: Audio direkt aus Asterisk per EAGI-Schnittstelle streamen, kein Zwischenspeichern, keine Verzögerung. Die Realität war ernüchternd. Vosk verweigerte konsequent die Arbeit mit der kryptischen Meldung "Failed to process waveform". Stundenlange Fehlersuche, Hex-Dumps des Audiostreams, verschiedene Konvertierungsversuche – nichts half. EAGI und Vosk wollten einfach nicht miteinander.
Also Plan B: WAV-Datei aufnehmen, sox zur Aufbereitung, dann Vosk. Das funktionierte – fast. Das kleine deutsche Modell kannte das Wort "fünf" schlicht nicht, zumindest nicht mit aktivierter Grammar. Ohne Grammar wurde es erkannt, mit Grammar nicht. Ein Bug, eine Eigenart, wer weiß. Dazu kam dass Vosk bei jedem Anruf das Modell neu laden musste – mehrere Sekunden Wartezeit, für eine Vermittlung inakzeptabel. Vosk flog raus.
Whisper von OpenAI war die Rettung. Ebenfalls lokal, ebenfalls kostenlos, aber deutlich intelligenter. Allerdings auch hier kein einfacher Weg. Das tiny-Modell halluzinierte fröhlich "1, 2, 3, 4" wenn man eine vierstellige Nummer sprach. Das base-Modell war besser, aber der entscheidende Durchbruch kam erst mit dem initial_prompt – einer Liste aller bekannten Nummern und Namen die Whisper als Kontext bekommt. Ohne diesen Prompt rät Whisper wild drauflos.
Dann das Feintuning mit verschiedenen Telefonen. Jedes Gerät klingt anders, jedes hat andere Codec-Einstellungen, manche sind leiser, manche haben mehr Rauschen. AGC einschalten, Lautstärke verstärken, sox-Filter anpassen. Parameter wie beam_size, best_of und no_speech_threshold wurden iterativ optimiert bis die Erkennungsrate über 95% lag.
Damit es sich auch wie eine echte Vermittlung anfühlt, mussten noch deutsche Sprachprompts her. Asterisk bringt von Haus aus englische Ansagen mit, die deutschen Pendants mussten erst beschafft werden. Zusätzlich wurden drei eigene Ansagen benötigt – eine Begrüßung, eine Wartemeldung und eine Verbindungsansage. Die wurden per Text-to-Speech online generiert, im richtigen Format für Asterisk aufbereitet und eingebunden. Wenn schon, dann richtig.
Ursprünglich sollte das alles auf einem Raspberry Pi laufen. Der Pi ist bereits als IAX2-Gateway im Einsatz, wäre also naheliegend gewesen. Aber Whisper base auf einem Pi ist schlicht zu langsam – die Wartezeit wäre für Museumsbesucher unzumutbar. Also wurde die Spracherkennung auf einen Fujitsu Esprimo Q520 ausgelagert, einen kleinen aber feinen Mini-PC mit 8 GB RAM. Auch der geht während der Erkennung kurz in die Knie – alle vier CPU-Kerne springen auf 60 bis 90 Prozent. Eine Nvidia-Grafikkarte würde die Verarbeitungszeit von fünf Sekunden auf unter eine Sekunde drücken.
Beim Auswerten der Aufzeichnung durch die Spracherkennung ist mein kleiner Rechner fast am Anschlag beschäftigt. Der Raspberry Pi wäre zu schwach dafür.
Den praktischen Nutzen im Alltag darf man dabei nicht vergessen: Wer kennt schon alle Durchwahlen auswendig? Namen sprechen und verbunden werden ist deutlich komfortabler als im Telefonbuch blättern. Für den produktiven Einsatz braucht man allerdings schnellere Hardware – die fünf Sekunden Wartezeit erinnern im Moment eher an die Geduld die man früher bei einer echten Handvermittlung aufbringen musste. Was für das Museumsprojekt durchaus seinen Charme hat, im Büroalltag aber schnell zur Geduldsprobe wird.
Das gesamte Projekt – Code, Konfiguration, Dokumentation und alle Fallstricke – wird natürlich veröffentlicht. Zum Nachmachen, zum Weiterentwickeln, und damit andere nicht dieselben Umwege gehen müssen. Vielleicht findet sich ja jemand der das Ganze auf schnellerer Hardware zum Laufen bringt und die Wartezeit auf ein modernes Niveau drückt. Die Grundlage ist gelegt.
!!!
Fotos, Grafiken nur über die
Upload-Option des Forums, KEINE FREMD-LINKS auf externe Fotos.
!!! Keine
Komplett-Schaltbilder, keine Fotos, keine Grafiken, auf denen
Urheberrechte Anderer (auch WEB-Seiten oder Foren) liegen! Solche Uploads werden wegen der Rechtslage kommentarlos gelöscht!
Keine Fotos, auf denen Personen erkennbar sind, ohne deren schriftliche Zustimmung.
Den Beitrag-Betreff bei Antworten auf Threads nicht verändern!
Re: Simulation des "Fräulein vom Amt" in einer Handvermittlung mit Spracherkennung und Verbindungsaufbau
Volker:Hallo zusammen,
für meinen kleinen Asterisk-Telefonserver auf einem Raspberry Pi 3B hatte ich mir in den Kopf gesetzt eine Handvermittlung mit Spracherkennung zu simulieren. Man ruft also die Vermittlung an, sagt die gewünschte Zielnummer oder den Namen des Teilnehmers auf, mit dem man sprechen will und nach ein paar Sekunden wird man von einer freundlichen Stimme verbunden - das "Fräulein vom Amt" also mit Künstlicher Intelligenz umgesetzt. Die Künstliche Intelligenz steckt hauptsächlich in der Spracherkennung.
...
Den praktischen Nutzen im Alltag darf man dabei nicht vergessen: Wer kennt schon alle Durchwahlen auswendig? Namen sprechen und verbunden werden ist deutlich komfortabler als im Telefonbuch blättern. Für den produktiven Einsatz braucht man allerdings schnellere Hardware – die fünf Sekunden Wartezeit erinnern im Moment eher an die Geduld die man früher bei einer echten Handvermittlung aufbringen musste. Was für das Museumsprojekt durchaus seinen Charme hat, im Büroalltag aber schnell zur Geduldsprobe wird.
Das gesamte Projekt – Code, Konfiguration, Dokumentation und alle Fallstricke – wird natürlich veröffentlicht. Zum Nachmachen, zum Weit
Hi Volker,
diese "künstliche Intelligenz" und den praktischen Nutzen bietet heute jedes SmartPhone und das in Bruchteilen einer Sekunde. Aber schön zu hören, dass man es auch historisch korrekt mit etwas Wartezeit für seine eigenen Telefonspielereien realisieren kann.