Zu leises Telefon mit Hilfe einer Asterisk-Konfiguration lauter stellen

15. Mai 2022

Ein gebraucht erworbenes DECT-Telefon wurde von den Gesprächsteilnehmern am anderen Ende der Leitung als eine Idee zu leise empfunden. Selbst in den Service-Einstellungen fand sich keine Einstellung die Mikrofonempfindlichkeit zu erhöhen. Was tun?

Die einfachste Lösung wäre es etwas lauter in das Mikrofon zu sprechen. So einfach wollte ich mir das Leben aber nicht machen. Da dieses Endgerät an einem Asterisk-Server betrieben wird, entschloss ich mich zu einer ungewöhnlichen Software-Lösung in der extensions.conf von Asterisk.

Ein Telefongespräch besteht immer aus zwei Kanälen (Channels), einer für jede Richtung: Der RX-Kanal geht vom Angerufenen zum Anrufer. Der TX-Kanal geht Anrufer zum Angerufenen. Sowohl die Pegel des TX- als auch die des RX-Kanals lassen sich mit der Volume-Function getrennt anheben.  Beispiel:  Set(Volume(TX)=3). Der Audio-Pegel des  TX-Kanals wird um 300% erhöht. Je höher die Zahl von 0 bis 10 bei einem SIP-Channel, desto lauter klingt es. Siehe auch

https://superuser.com/questions/1378341/is-it-possible-to-decrease-the-transmit-receive-volume-in-asterisk-below-normal

Der Wert 0 deaktivert demnach die Volume-Funktion, der Wert 1 bewirkt keine Erhöhung der Lautstärke, erst ab dem Wert 2 wird es lauter. Eine Absenkung des Pegels gelingt ab “-2” oder noch negativer. Es dürfen nur ganze Zahlen (Integer) zum Einsatz kommen.

Fallbeispiel: Im nachfolgenden Beispiel hat das Telefon 10883 ein zu leises Mikrofon, was durch folgende Einträge in der extensions.conf kompensiert wird:

Fall A – Die 10883 wird angerufen: Wenn die Caller-ID des Anrufers 10883 ist, springt das Programm zu der Zeile, die für eine höheren Lautstärkepegel des RX-Kanals sorgt. Der RX-Kanal geht vom Angerufenen zum Anrufer.

;
;
exten => _X.,1,NoOP(Jemand ruft von einer beliebigen Nummer an)
    same => n,GotoIf($[${CALLERID(num)} = 10883]?ja:nein) ; Abfrage, ob 10883 angerufen wurde
    same => n(ja),Set(VOLUME(RX)=2) ; nur wenn 10883 angerufen wird, dann wird lauter gedreht
    same => n,Dial(SIP/${EXTEN},60,rtT)
    same => n,Goto(weiter)
    same => n(nein),NoOP(keine Aenderung der Lautstaerke, Einleitung des Waehlvorgangs)
    same => n,Dial(SIP/${EXTEN},60,rtT)
    same => n(weiter),NoOP(Das Gespraech wird beendet)
    same => n,Hangup()
;
Fall B – Die 10883 ruft an: Wenn die 10883 anruft, dann erhöht sich der Lautstärkepegel des TX-Kanals. Der TX-Kanal geht vom Anrufer zum Angerufenen.

;
;
exten => 10883,1,NoOP(10883 wird angerufen)
  same => n,Set(VOLUME(TX)=2)
  same => n,Dial(SIP/${EXTEN},60,rtT)
;

Inzwischen habe ich es mir angewöhnt immer mit “same” zu arbeiten, was Änderungen am Code vereinfacht.

Eine im Prinzip gleiche Lösung ist in Asterisk Cookbook: Solutions to Everyday Telephony Problems, Chapter 3.7 Making Grandma louder beschrieben.

Auf einem Raspberry Pi lässt sich ein kompletter Telefonserver betreiben, der seinen Teilnehmern über Landesgrenzen hinweg kostenloses Telefonieren von unterwegs oder daheim ermöglicht.
Asterisk-Telefonserver auf einem Raspberry Pi – Installation, Konfiguration, Programmierung, SIP, IAX2, AGI-Skripte, Sicherheit und Tipps zum praktischen Betrieb – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk. Die Themen werden laufend erweitert.

Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner gehen auch. – weiter