Asterisk - Blindentelefon

Ziel dieses Projektes war, eine Möglichkeit für seheingeschränkte oder blinde Menschen zu schaffen, eine beliebige Telefonnumer nur durch Ansage der Ziffern anrufen zu können. Wichtig war mir dabei die interne Sprachverarbeitung, was durch den Vosk Server auch umsetzbar war (bis auf den Initialbefehl "Alexa, schalte Telefon ein"). Um das Projekt zu realisieren, wurden die vorhandenen Möglichkeiten betrachtet und miteinander verknüpft. Benötigt werden:

  • 1 Amazon Echo Gerät
  • 1 FHEM Server mit alexa-fhem Anbindung
  • 1 Vosk-Server zur Spracherkennung (im Docker Container)
  • 1 Asterisk Server zur Verwaltung der Telefonie
  • 1 Telefon, welches an Asterisk angebunden ist (bei mir ein analoges Telefon mit Fritzbox 7170)

blindentelefon-ablauf

Nachfolgend einige Aspekte, die zu berücksichtigen sind. Eine komplette Lösung möchte ich hier nicht vorstellen, da diese individuell sehr unterschiedlich aussehen kann.

  • Der "Umweg" über Alexa (bzw. dem Amazon Echo Gerät) und FHEM wurde nur gewählt, um eine automatische Wahl initiieren zu können: Anhand des Befehls "Alexa, schalte Telefon ein" wird in FHEM ein Gerätedummy auf "ein" gestellt. Dieser Vorgang triggert ein notify, welches dann das AMI-Script aufruft, damit das Telefon klingelt und nach Abnahme des Höreres eine Verbindung zu der Spracherkennungs-"Durchwahl" herstellt. Wichtig ist im Endeffekt nur, dass das AMI-Script aufgerufen wird, egal wie
  • Eine Direktwahl mit Hilfe der Fritzbox ist zwar möglich, aber erst nach 30 Sekunden Wartezeit, das war mir viel zu lang, erspart aber den Umweg über FHEM mit AMI-Script und Alexa
  • der Vosk-Server für die Spracherkennung läuft bei mir auf einer separaten Maschine auf bare metal in einem Docker Container im gleichen Netzwerk wie der Asterisk Server. Dadurch bleibt der Asterisk-Server schön schlank und hat auch unter Last keinen großen Leidensdruck.
  • Anfänglich habe ich das (selbst kompilierte) Modul vosk-asterisk genutzt. Das musste ich aber aufgeben, da es bei verschiedenen Eingangscodecs den Asterisk Server zum Absturz brachte
  • aktuell zeichnet Asterisk die Sprache auf (mittels RECORD Befehl), danach überträgt ein AGI-Script (Python) die Datei zum Vosk Server und wandelt nach Rückmeldung die erhaltenen geschriebenen Zahlen in Ziffern um.
  • Spracherkennung: Hier muss man wirklich ein wenig "rumspielen" uns den speziellen Anwendungsfall betrachten. Unterschiedliche Endgeräte als Eingabe haben sehr unterschiedliche Spracherkennungen zur Folge. Für meine Bedürfnisse funktioniert es gut. Eventuell kann der Asterisk AGC Befehl im Dialplan für mehr Kompatibilität mit verschiedenen Endgeräten sorgen, genauso wie die Anpassung des RECORD Befehls bezüglich Stilleerkennung und maximaler Aufzeichnungsdauer. Im Zweifel hilft auch eventuell eine Analyse der aufgenommenen Sprachdatei.