Ein Audio-Übertragungssystem mit Open Source Software auf WLAN Basis

Es ist rund zwei Jahre her, dass mich jemand fragte, ob ich nicht eine Idee für ein kostengünstiges Sprachkonferenzssystem hätte. Das System sollte als Simultanübersetzungssystem für Flüchtlinge verwendet werden. Die Übertragung sollte über Bluetooth oder WLAN stattfinden. Idealerweise sollten Smartphones als Empfänger verwendet werden.

Ich startete mit einem Raspberry Pi als Server und versuchte diverse Ansätze. Für den Datentransport wollte ich WLAN verwenden. Schnell stellte sich heraus, dass es primär zwei Probleme gab: Entweder war der Paketverlust gering (und damit keine oder kaum Abbrüche in der Audioübertragung), die Zeit zwischen Übersetzung und Empfang aber hoch (was schlecht für Simultanübersetzung ist) oder aber der Paketverlust war hoch (Abbrüche in der Audioübertragung) und die Latenz gering. Beides war nicht gewünscht.

Schließlich fand ich einen guten Kompromiss mit Mumble (einer Open Source Voice-over-IP Software). Dieser Blog Artikel ist als Howto zum Nachbauen gedacht.

Motivation für diesen Post

Insbesondere kleine Organisationen können sich keine teuren Sprachkonferenzsysteme leisten. Ich wollte deshalb eine leicht verständliche Anleitung schreiben, wie man ein Audio-Übertragungssystem selbst bauen kann. Beim Schreiben wurde mir dann klar, dass der Artikel extrem lang werden würde (das ist er ja jetzt schon), wenn ich alles bis ins Detail erkläre. Ich habe deshalb versucht, mich auf die Kernkomponenten zu beschränken.

Um das Folgende zu verstehen, braucht man gewisse Grundkenntnisse. Vor allem sollte man einen WLAN Router konfigurieren können und über grundlegende Netzwerkkenntnisse verfügen. Linux-Kenntnisse sind hilfreich, aber nicht dringend notwendig. Idealerweise hat man schonmal mit einem Raspberry Pi genutzt.

Einführung: Was ist Mumble?

Ich hatte zu Anfang erwähnt, dass ich nach viel Experimentieren bei Mumble gelandet bin. Stellt sich also die Frage, was "Mumble" ist und warum es für die Lösung unseres Problems gut geeignet ist.

Mumble ist eine kostenlose, Open Source, Voice-over-IP Kommunikationslösung. Mumble kann also Audio über IP-Netzwerke übertragen. Dazu können Nutzer "Kanälen" beitreten und innerhalb dieser Kanäle entweder per Sprache oder aber auch per Text kommunizieren. Das ist der erste Vorteil von Mumble, man kann damit leicht ein Übersetzungssystem für mehrere Sprachen bauen, indem man einfach für jede Sprachübersetzung einen eigenen Kanal anlegt. Diesem Kanal treten dann der Übersetzer und die Zuhörer bei. Die Zuhörer hören, was der Übersetzer sagt.
Was Nutzer tun können und was nicht, wird über sogenannte Access Control Lists (ACL) für jeden Kanal festgelegt. So kann z.B. bestimmten Benutzergruppen das "Rederecht" entzogen werden. Diese Nutzer können dann in einem Kanal nur hören, aber selbst nichts sagen. Die Idee ist nun, den jeweiligen Übersetzern dieses "Rederecht" zu gewähren, alle Anderen dürfen nur hören.

Ein weiterer Vorteil von Mumble ist, dass es die von mir anfänglich erwähnte Probleme elegant löst. Zur Sprachübertragung nutzt es den Codec Opus. Opus ist ein Verfahren um Audiodaten komprimiert in "Echtzeit" zu übertragen. "Echtzeit" bedeutet, die Sprachdaten müssen in einer bestimmten Zeitspanne übertragen worden sein. Das ermöglicht eine sehr niedrige Latenz der Audioübertragung. Gleichzeitig unterstützt Opus "Forward Error Correction". Das heißt, wenn bei der Übertragung von Audiodaten Pakete verloren gehen, kann Opus einen Teil der verloren gegangenen Pakete wiederherstellen. Trotz niedriger Latenz fehlen damit nur selten Daten im Audiodatenstrom.

Genereller Aufbau

Zum besseren Verständnis soll noch einmal kurz der Aufbau beschrieben werden. Ich hatte noch keine Zeit etwas besseres zu malen, deshalb das ganze als ASCII-Art:

 ((*))     ((*))
   |         |   
 +-------------+                +---------------------+
 |             | ---- WLAN ---- |Smartphone Übersetzer|
 |             |                +---------------------+
 |             |                +---------------------+
 |             | ---- WLAN ---- |  Smartphone Hörer   |
 | WLAN Router |                +---------------------+
 |             |                +---------------------+
 |             | ---- WLAN ---- |  Smartphone Hörer   |
 |             |                +---------------------+
 +-------------+
       |   
      LAN 
       |   
 +--------------+
 | Raspberry Pi |
 |  mit Mumble  |   
 +--------------+

Die Idee ist, einen Raspberry Pi mit installiertem Mumble als Server zu verwenden. Der Raspberry Pi ist per LAN Kabel direkt mit dem WLAN Router verbunden. Das Kabel kann einen halben Meter kurz sein und der Raspberry Pi wird irgendwo zusammen mit dem WLAN Router fest stationiert.
Sowohl Übersetzer als auch Hörer haben ein Smartphone auf dem eine Mumble-App läuft. Sie kommunizieren mit dem Mumble-Server auf dem Raspberry Pi über den WLAN-Router.
Der Mumble-Server wird so eingerichtet, dass es für jede Sprachübersetzung einen eigenen Kanal gibt. In diesen Kanälen haben, wie oben erwähnt, nur bestimmte Smartphones das "Rederecht" (Übersetzer). Alle anderen können nur hören.

Welche Hardware wird benötigt?

  • Raspberry Pi 2 oder höher mit SD Karte & Netzteil
  • USB-Tastatur und Monitor mit HDMI (Adapter-)Kabel zum (initialen) Einrichten des Raspberry Pi
  • WLAN Router mit LAN Buchse für unser Übersetzungssystem
  • Rechner zum Administrieren von Mumble
  • Geräte zum Testen des Setup, z.B. zwei Android Smartphones
  • Internetzugang über den der Raspberry Pi temporär angeschlossen und geupdated werden kann

Vorbereiten des WLAN Routers

Der WLAN Router sollte nur für das Übersetzungssystem verwendet werden. Leitet er zusätzlichen Netzwerkverkehr weiter, z.B. von Nutzern die im Internet surfen, erhöht sich die Wahrscheinlichkeit von Verbindungsproblemen. WLAN ist ein "shared medium", das heißt, alle Teilnehmer teilen sich die verfügbare Bandbreite. Umso weniger man das Medium "belastet", umso höher ist Wahrscheinlichkeit weniger Störungen zu haben (durch unnötigen Netzverkehr). Aus diesem Grund sollte der Router auch nicht mit dem Internet verbunden werden.

Es sollte nun das WLAN Netzwerk eingerichtet werden. Es kann eine beliebige SSID vergeben werden, beispielsweise "Translation System". Generell sollte WPA2 oder WPA3 für Verschlüsselung und Authentifizierung verwendet werden. Das hat zwar den Nachteil, dass später jeder Teilnehmer am Übersetzungssystem erst das WLAN-Netz auf seinem Gerät (z.B. Smartphone) einrichten muss, es macht es einem potentiellen Angreifer aber etwas schwerer, sein Unwesen zu treiben. Um die Einrichtung des WLAN später auf den Smartphones zu erleichtern, kann man z.B. die Zugangsdaten per QR-Code teilen.

Der WLAN Router muss den verbundenen Clients (also später den Smartphones von Übersetzern und Hörern) automatisch eine IP per DHCP zuweisen. Dem Raspberry Pi selbst kann man entweder auch eine IP per DHCP zuweisen lassen oder eine feste IP vergeben. In der folgenden Anleitung wird ersteres verwendet. Empfehlenswert ist es hier, den WLAN Router so einzurichten, dass der Raspberry Pi stets die gleiche IP zugewiesen bekommt.

Raspberry Pi als Mumble-Server einrichten

Der Raspberry Pi wird nun als Mumble-Server eingerichtet. Falls im folgenden einen Kasten zu seheh ist, dessen Inhalt mit einem $ Zeichen beginnt, so soll das eine Konsoleneingabe darstellen. Der Befehl muss ohne das Dollarzeichen eingegeben und mit ENTER zum Ausführen gebracht werden. Falls der Befehl während des Ausführens eine Eingabe erfordert, weise ich darauf hin.
Vor den meisten Kommandos wird das Wort sudo stehen. Es sorgt dafür, dass das dahinter stehende Kommando mit höheren Rechten ausgeführt wird. Dieses Kommando benötigt gelegentlich ein Passwort. Ich weise im Folgenden nochmal daraufhin.

Schritt 1:
Raspbian auf der SD Karte installieren und in den Raspberry Pi stecken. Ich gehe in dieser Anleitung nicht auf das Installieren von Raspbian ein. Es finden sich viele gute Anleitungen über Google.

Schritt 2:
Monitor, Tastatur sowie LAN Kabel an den Raspberry Pi anschließen. Das LAN Kabel mit dem Heimrouter so verbinden, dass der Raspberry Pi Internetzugang bekommt. Die Internetverbindung wird kurz benötigt, um Raspbian auf den neuesten Stand bringen zu können und um Software nachzuinstallieren. Der WLAN Router der später für das Übersetzungssystem benötigt wird und weiter oben bereits konfiguriert wurde, ist hier nicht gemeint (der sollte ja eigentlich auch keinen Internetzugang haben, siehe oben).

Schritt 3:
Monitor anschalten, dann Raspberry Pi anschalten (d.h. das Netzteil anschließen). Der Raspberry Pi sollte nun booten und eine IP per DHCP von eurem Heimrouter bekommen.

Schritt 4:
Am Raspberry Pi einloggen als Nutzer pi mit Passwort raspberry. Hier ist zu beachten, dass das Standard-Tastaturlayout Englisch ist, Z und Y sind also vertauscht. Statt einem Y muss ein ein Z eingeben werden.

Schritt 5:
Keyboard Layout auf Deutsch ändern. Dazu folgendes in der Konsole eingeben und mit ENTER bestätigen.

$ sudo dpkg-reconfigure keyboard-configuration

Zuerst das Passwort des Nutzers pi erneut eingeben, dabei wieder beachten dass Y und Z vertauscht sind. Es muss dann zuerst der Tastaturtyp gewählt werden, hier einfach mit ENTER bestätigen. Im folgenden Screen Other wählen (mittels der Pfeiltasten) und mit ENTER bestätigen. Im darauf folgenden Screen German wählen, wieder mit ENTER bestätigen. Im folgenden Screen als Layout German - German (eliminate dead keys) wählen und erneut mit ENTER bestätigen (siehe Bild). Tastatur einrichten Im vorletzten Screen kann man noch die Funktion der Taste AltGr, im letzten Screen einen Compose Key festlegen. Beide Screens einfach mit ENTER bestätigen.

Nach dem Ändern des Layouts, wird der Raspberry Pi mit folgendem Kommand neugestartet.

$ reboot

Sobald der Neustart beendet ist, erneut einloggen wie in Schritt 4 beschrieben.

Schritt 6:
Password ändern, indem folgendes auf der Konsole eingegeben wird:

$ passwd

Den Anweisungen auf der Konsole folgen. Dabei noch einmal das alte Passwort eingeben (raspberry) und dann zweimal ein neues Passwort übergeben. Es muss unbedingt ein sicheres und langes Passwort vergeben werden. Der Raspberry Pi wird später in einem Netzwerk "hängen" auf das verschiedene, möglicherweise nicht vertrauenswürdige Personen Zugriff haben. Dieser Schritt ist vor allem dann nötig, wenn ihr im folgenden (optionalen) Schritt SSH aktiviert.

Schritt 7:
Es werden jetzt noch verschiedene Einstellungen mittels raspi-config vorgenommen. Keine dieser Schritte ist notwendig, aber zumindest Schritt 7b) ist empfehlenswert.

$ sudo raspi-config

raspi-config Hinweise zu raspi-config:

  • * Navigation mit den Pfeiltasten bzw. TAB
  • * Aktionen müssen oft zusätzlich bestätigt werden, es öffnet sich dann ein Screen der mit "OK" bestätigt werden muss.

a) Optional, falls man später den Raspberry Pi per SSH warten möchte, um nicht Tastatur und Bildschirm jedes mal anschließen zu müssen:

Interfacing Options ->  P2 SSH wählen

SSH dient der Fernwartung. Wer nicht weiß, wie SSH zu verwenden ist, sollte es nicht aktivieren. Wenn es aktiviert wird, ist es besonders wichtig, dass in Schritt 6 ein sicheres und langes Passwort vergeben wurde (noch besser wäre hier Public-Key Authentication - aber das ist außerhalb des Rahmens dieses Artikels).

b) Optional (aber sehr sinnvoll und empfohlen), den Hostnamen des Raspberry Pi ändern:

Network Options -> N1 Hostname wählen

Empfehlenswert ist etwas wie translation zu verwenden um den Raspberry Pi später im Netzwerk leichter "adressieren" zu können. Das ist insbesondere dann wichtig, wenn der Raspberry Pi eine IP Adresse per DHCP bekommen hat. raspi-config Hostname Menu wählen raspi-config Hostnamen vergeben

Soll die Konfiguration beendet werden, muss so lange TAB gedrückt werden, bis Finish markiert ist, dann mit ENTER bestätigen. Möglicherweise wird man gefragt ob man den Raspberry Pi neustarten möchte: Would you like to reboot?. Hier mit Yes + ENTER bestätigen.

Schritt 8:
Der Raspberry Pi sollte theoretisch eine IP per DHCP bekommen und Internetzugang haben. Er sollte nun aktualisiert werden:

$ sudo apt update

und anschließend

$ sudo apt upgrade

Falls zu aktualisierende Pakete gefunden werden, muss der Aktualisierung mit Y + ENTER zugestimmt werden.

Schritt 9:
Installation des mumble Servers mittels:

$ sudo apt install mumble-server

Die Ausgabe sollte ähnlich der folgenden aussehen:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libavahi-client3 libavahi-compat-libdnssd1 libmariadbclient18 libmcpp0 libprotobuf10 libqt4-dbus libqt4-network libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-xml libqtcore4
  libqtdbus4 libzeroc-ice3.6 mysql-common qdbus qtchooser qtcore4-l10n
Suggested packages:
  libqt4-dev libthai0 mumble-django
The following NEW packages will be installed:
  libavahi-client3 libavahi-compat-libdnssd1 libmariadbclient18 libmcpp0 libprotobuf10 libqt4-dbus libqt4-network libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-xml libqtcore4
  libqtdbus4 libzeroc-ice3.6 mumble-server mysql-common qdbus qtchooser qtcore4-l10n
0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,895 kB of archives.
After this operation, 28.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Hier mit ENTER zustimmen.

Schritt 10:
Der mumble-server wird nun konfiguriert, indem das folgende Kommando ausführt wird. Es werden bei diesem Prozess dem Anwender verschiedene Fragen gestellt.

$ sudo dpkg-reconfigure mumble-server

Als erstes wird gefragt, ob der Mumble-Server bei jedem Start des Raspberry Pi automatisch mitgestartet (Autostart mumble-server on server boot?) werden soll. Hier muss mit YES bestätigt werden.
In Folge wird gefragt, ob der mumble-server mit einer höheren Priorität ausgeführt werden soll (Allow mumble-server to use higher priority?). Hier ebenfalls mit YES bestätigen. Höhere Prozess Priorität für murmurd setzen
Dann muss ein sogenanntes SuperUser Passwort vergeben werden. Hier solltet erneut ein langes, sicheres Passwort verwendet werden. Das Passwort sollte an einem sicheren Ort aufbewahrt werden (z.B. eine Passwort-Safe) und wird für die weitere Konfiguration benötigt. Es wird außerdem immer dann benötigt, wenn das "Rederecht" einem neuen Übersetzer-Smartphone gegeben werden soll. Mehr dazu weiter unten im Artikel. Superuser Passwort vergeben

Schritt 11:
Im Folgenden wird die Konfiguration des Mumble-Servers über die Konfigurations-Datei /etc/mumble-server.ini angepasst. Hierzu wird der Editor nano verwendet. Nicht alle im folgenden vorgestellten Konfigurationsparameter müssen angepasst werden. Sie sollen nur der vollständigkeithalber erwähnt werden.

$ sudo nano /etc/mumble-server.ini

Navigiert wird mit den Pfeiltasten. Es muss so lange nach unten gescrollt werden, bis der folgende Text auftaucht Wichtig ist die Zeile, die mit welcometext= beginnt. Alle Zeilen beginnend mit # darüber, sind nur Kommentare in der Konfigurations-Datei.

# The below will be used as defaults for new configured servers.
# If you're just running one server (the default), it's easier to
# configure it here than through D-Bus or Ice.
#
# Welcome message sent to clients when they connect.
welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />

Manche Mumble Clients zeigen den Text hinter welcometext= an, sobald man sich mit dem Server verbunden hat. Der Text kann nach Belieben geändert werden. Die Zeichenfolgen mit < und > sind HTML-Code. Mumble nimmt ihn zum Formatieren des Textes. <br /> ist z.B. ein Zeilenumbruch ("br" für Englisch "line break"), während <b>Murmur</b> den Text "Murmur" fett markiert ("b" für Englisch "bold"). Diese Zeichenfolgen werden von manchen Mumble-Clients "interpretiert" und der Text wird dann entsprechend formatiert angezeigt (also z.B. fett).

Weiterscrollen bis zu folgendem Eintrag:

# Maximum number of concurrent clients allowed.
users=100

Hier kann festgelegt werden, wieviele Clients sich maximal verbinden können. Den Wert kann man so lassen.

Weiterscrollen bis zu folgendem Text:

# Amount of users with Opus support needed to force Opus usage, in percent.
# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients.
#opusthreshold=100

Das # Zeichen vor #opusthreshold=100 entfernen und den Eintrag auf 0 ändern, also

opusthreshold=0

Damit wird Mumble gezwungen, immer Opus als Audio-Codec zu verwenden (zu "Opus", siehe Einführung oben). Wichtig!

Weiterscrollen bis zu folgendem Text:

# Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name.
#
#registerName=Mumble Server

Oben wurde erwähnt, dass Mumble Kanäle benutzt. Verbindet sich ein Client neu mit dem Server, landet er in der Regel erstmal immer in einem Standard Kanal. Jeder Kanal hat einen Namen, der vom Mumble-Client (z.B. der Smartphone Mumble-App) angezeigt wird. Der Standard Kanal heißt root. Möchte man das nicht, kann man den obigen Parameter ändern, z.B. so:

registerName=Translations Server

Der Client zeigt dann statt "root", den Text "Translation Server" an (weiter unten im Artikel sind Smartphone-Screenshots zu sehen, wo das deutlich wird). Für den weiteren Artikel wird angenommen, dass diese Einstellungen vorgenommen wurde.

Mittels STRG + X und anschließendem eingeben von Y + ENTER, werden die Änderungen gespeichert und der Editor wird geschlossen.

Schritt 12:
Um sicher zu gehen, dass der mumble-server alle geänderten Einstellungen übernimmt, wird der Dienste neugestartet.

$ sudo systemctl restart mumble-server.service

Schritt 13:
Nun muss der Raspberry Pi per LAN Kabel mit dem WLAN Router per LAN-Kabel verbunden werde, der später für das Übersetzungssystem verwendet werden soll. Es ist außerdem sinnvoll den Raspberry Pi neuzustarten. Hierzu folgendes Kommando ausführen:

$ sudo reboot

Schritt 14:
Es muss nun der Rechner gestartet werden, der zum Administrieren verwendet werden soll. Den Rechner per LAN-Kabel oder WLAN mit dem WLAN Router der für das Übersetzungssystem verwenden werden soll, verbinden. Es muss sichergestellt werden, dass dieser den Raspberry Pi erreichen kann. Die einfachste Möglichkeit das zu tun, ist, den Server mit einem ICMP echo request anzupingen. Unter Windows muss dazu die Eingabeaufforderung geöffnet werden. Mittels

C:\>ping translation
Pinging translation.fritz.box [192.168.178.20] with 32 bytes of data:
Reply from 192.168.178.20: bytes=32 time=5ms TTL=64
Reply from 192.168.178.20: bytes=32 time=5ms TTL=64
Reply from 192.168.178.20: bytes=32 time=5ms TTL=64
Reply from 192.168.178.20: bytes=32 time=5ms TTL=64

wird geprüft, ob der Raspberry Pi erreicht werden kann, wobei translation mit dem Hostnamen ersetzt werden muss, der in Schritt 7b vergeben wurde. Möglicherweise muss der Hostnamen samt Domäne angeben werden. Für FritzBoxen wäre das z.B. translation.fritz.box, statt nur translation. Bekommt ihr eine Antwort (Reply from), ist der Raspberry Pi erreichbar und es kann mit dem nächsten Schritt weitergehen. Das Vorgehen für Linux-Nutzer ist analog (Konsole öffnen, ping-Versuch durchführen).

An dieser Stelle können Tastatur und Bildschirm vom Raspberry Pi abgezogen werden. Sie werden nicht mehr benötigt.

Konfiguration der Kanäle mittels Mumble-Client

Nachdem der Server eingerichtet wurde, müssen die Kanäle angelegt und konfiguriert werden.

Schritt 1:
Zum Administrieren muss der Mumble Client installiert werden. Der Mumble Client für Windows Nutzer kann hier bezogen werden. Für die meisten Linux Distributionen sollten Pakete über den Paketmanager zu finden sein. Einfach mal nach mumble suchen.

Schritt 2:
Der Server wird nun mit Hilfe des eben installierten Clients konfiguriert. Dazu den Client starten. Eventuell wird gefragt, ob Mumble mittels des Audio-Assistenten eingerichtet werden soll. Dies kann übersprungen bzw. abgebrochen werden. Im Anschluss fragt der Client, ob ein Zertifikat erstellt werden soll. Hier sollte man Zertifikat automatisch erstellen wählen. Dann Weiter klicken und Abschließen.

Schritt 3:
Im folgenden Dialog kann ein Mumble Server ausgewählt werden. Hier muss zuerst der Raspberry Pi als Server hinzugefügt werden durch klicken auf Server hinzufügen.... Im nun erscheinenden Screen müssen der Hostname des Raspberry Pi sowie der Nutzername SuperUser und das zugehörige Passwort eingeben werden. Das Passwortfeld erscheint möglicherweise erst, wenn als Nutzername SuperUser eingetippt wurde.
Falls in Schritt 14 (oben) der Raspberry Pi nur mit Domainnamen, also z.B. statt mit translations nur mit translations.fritz.box erreichbar war, muss hier erneut der volle Domainname verwendet werden.
Für Nutzername und Passwort muss Groß-/Kleinschreibung beachtet werden. Anschließend mit OK bestätigen. Server hinzufügen

Im folgenden Screen mit Klick auf Verbinden die Verbindung zum Server initiieren. Mit Server verbinden

Die folgende Zertifikatswarnung, muss mit Ja bestätigt werden.

Schritt 4:
Sobald die Verbindung steht, ist eine Liste mit Kanälen sichtbar. Dort sollte nur eurer "Root" Kanal aufgelistet sein ("Translations Server" im folgenden Screenshot). Exemplarisch wird nun der Übersetzungskanal für "Englisch" eingerichtet. Hierzu mit der rechten Maustaste auf Translations Server (oder wie auch immer ihr euren Root Kanal genannt habt) klicken und Hinzufügen auswählen. Kanal hinzufügen - Schritt 1 Es erscheint ein neuer Dialog. Dem Kanal den Namen "English" geben und auf OK klicken. Kanal hinzufügen - Schritt 2 Der Kanal sollt jetzt in der Liste erscheinen, wie auch im folgenden Screenshot zu sehen ist.

Schritt 5:
Nun muss der Kanal so konfiguriert werden, dass normale Nutzer im Kanal nur hören, aber nicht sprechen dürfen. Lediglich privilegierte Nutzer (in unserem Fall die Übersetzer) sollen sprechen können. Hierzu mit der rechten Maustaste auf den neu angelegten Kanal English klicken und Bearbeiten auswählen. Kanal editieren - Schritt 1

Im folgenden Screen den Tab Berechtigungen wählen. Kanal editieren - Schritt 2

Den Haken bei Berechtigungen erben entfernen. Kanal editieren - Schritt 3

Auf Hinzufügen klicken und dann den neu erschienenen Eintrag @all auswählen. Die Rechte so vergeben (siehe rechte Seite des Screens), dass für die Gruppe all nur das Recht Durchqueren und Betreten erlaubt ist, so wie im Screenshot dargestellt. Kanal editieren - Schritt 4

Auf Hinzufügen klicken und im Drop-Down Menu "Gruppe" auth auswählen. Kanal editieren - Schritt 5

Anschließend unter Rechte die Berechtigungen so setzen, dass alle Nutzer der Gruppe "auth" Durchqueren, Betreten, Sprechen, Stumm-/Taubstellen und Flüstern können. Das ganze ist in folgendem im Screenshot nochmal dargestellt. Kanal editieren - Schritt 6

Schließlich auf OK Klicken, um die Kanaleinstellungen zu schließen. Damit wurde ein Kanal eingerichtet, indem jeder hören, aber nur authorisierte Nutzer sprechen dürfen. Standardmäßig darf jeder im Root Kanal sprechen, deshalb müssen wir im nächsten Schritt noch die Rechte des Root Kanals anpassen.

Schritt 6:
Mit der rechten Maustaste auf den Rootkanal und Bearbeiten klicken. Erneut zum Tab Berechtigungen wechseln. @all auswählen und die Berechtigungen, wie im folgenden Screenshot gezeigt, ändern. Wieder auf OK klicken um die Kanaleinstellungen zu schließen. Root-Kanal ACL anpassen

Konfiguration der Smartphones (Übersetzer und Hörer)

Nachdem der Server konfiguriert und ein Kanal mit den nötigen Rechten eingerichtet ist, müssen die Smartphones eingestellt werden.

Schritt 1:
Zuerst muss ein Mumble-Client installiert werden. Dieser heißt unter Android "Mumla" (in einer früheren Version dieses Artikels stand hier "Plumble" Client - dieser wird nicht mehr weiterentwickelt). Mumla kann man in FDroid hier und im Google Play Store hier finden. Unter iOS nennt sich der Client nur Mumble. Sobald die App installiert wurde, muss das Smartphone mit dem Übersetzungs-Wlan (eingerichtet zu Beginn dieses Artikels) verbunden werden.

Schritt 2:
Der Mumble-Client muss nun auf dem Smartphone gestartet werden. Beim ersten Starten des Client wird gefragt, ob ein Zertifikat erstellt werden soll. Unbedingt erstellen lassen! Als nächstes wird durch Tippen auf das + Symbol, eine Verbindung zum Server eingerichtet. Android Plumble - Schritt 1 Das Label im ersten Feld kann beliebig vergeben werden. Unter Adresse muss der Hostname des Raspberry Pi angeben werden. Falls in Schritt 14 (oben) der Raspberry Pi nur mit Domainnamen, also z.B. statt mit translations nur mit translations.fritz.box erreichbar war, muss hier erneut der volle Domainname verwendet werden. Der Username kann beliebig vergeben werden. Mit Klick auf ADD wird der Eintrag angelegt und erscheint dann in der Übersicht. Android Plumble - Schritt 2 Der Server sollte als Online markiert sein. Ist er es nicht, die Mobilen Daten in Android deaktivieren (siehe Troubleshooting). Die Verbindung zum Server wird schließlich durch tippen auf Translations, initiiert. Android Plumble - Schritt 3 Während des Verbindungsaufbaus wird gefragt, ob dem Serverzertifikat vertrauen werden soll. Dem muss zugestimmt werden, um eine Verbindung erfolgreich aufbauen zu können. Android Plumble - Schritt 4 Wenn alles geklappt hat, ist zwischen dem Mumble-Client auf dem Smartphone und dem mumble Server eine Verbindung hersgestellt. Man sollte sich nun im Root Kanal "Translations Server" befinden.

Schritt 3:
Durch Klick auf den Pfeil hinter dem Kanalname English kann in den "English" Kanal gewechselt werden. Android Plumble - Schritt 5

Wie zu sehen ist (durchgestrichenes Mikrofon-Symbol), hat man in keinem der Kanäle Sprachrecht, nur Hörrecht. Soll jetzt ein Smartphone zu einem Übersetzer-Smartphone gemacht werden, muss der entsprechende Nutzer registriert werden. Dies ist im folgenden Schritt beschrieben. Soll der Nutzer des Smartphones nur Hörrecht haben, ist die Einrichtung an dieser Stelle abgeschlossen. Android Plumble - Schritt 6

Schritt 4 (nur für Übersetzer-Smartphone):
Den Mumble-Client auf dem Rechner, der zum Konfigurieren der Kanäle verwendet wurde, starten. Mit der rechten Maustaste auf den Nutzer klicken, dem das Rederecht gegeben werden soll und Registrieren auswählen. Mumble versichert sich noch einmal, ob das wirklich gewünscht ist. Der folgenden Dialog muss also mit Ja bestätigt werden. Mumble Client - Nutzer registrieren

Wie man mit Blick auf das Smartphone feststellt, ändert sich das Mikrofon-Symbol nicht. Zuerst muss der Kanal noch einmal verlassen werden, z.B. durch die Zurück-Taste des Smartphones oder über das Menu Symbol ⋮ und Disconnect. Dann muss erneut eine Verbindung zum Server und der Kanal betreten werden. Wie am Symbol zu erkennen ist, solltet der Nutzer jetzt "Rederecht" haben. Android Plumble - Schritt 7

Geschafft!

Das System kann jetzt produktiv zur Übersetzung verwendet werden. Es können beliebig viele Kanäle für verschiedene Sprachen anlegt werden. Es muss sichergestellt sein, dass die Übersetzer "registriert" wurden, um das "Rederecht" zu haben. Alle Anderen können den Kanälen einfach beitreten und hören, was die Übersetzer sagen.

Troubleshooting

1. Ich kann Nutzer X nicht registrieren, weil der entsprechende Menu-Eintrag fehlt!
Es ist sehr wahrscheinlich, dass kein Client-Zertifikat auf dem Smartphone des Nutzers beim Einrichten der App erstellt wurde. Stellt sicher, dass ein Zertifikat generiert wurde. Mir ist das insbesondere bei iOS passiert. Ob ein Zertifikat erstellt wurde, lässt sich bei der iOS Mumble App über Preferences (oben links) dann Certificate prüfen. Hier darf nicht none stehen. Ansonsten muss über das + Symbol (oben rechts) ein Zertifikat generiert werden. Anschließend die Verbindung zum Server trennen und wieder aufbauen.

2. Das Übersetzer-/Sprecher Smartphone überträgt Geräusche, auch wenn der Übersetzer-/Sprecher gar nicht redet!
Alle mir bekannten Mumble Apps bieten die Möglichkeit das Mikrofon des Sprechers automatisch ab einem bestimmten Lautstärke-Schwellwert zu aktivieren. Das kann bei eher lauten Umgebungen Probleme bereiten, da dann das Mikro durch die Umgebungsgeräusche aktiviert wird, auch wenn der Sprecher gar nichts sagt. Hier ist es sinnvoll auf "Push-to-talk" umzuschalten. Der Sprecher muss dann entweder einen der Knöpfe am Smartphone halten, während er spricht oder auf den Bildschirm tippen. Hier gibt es wiederum zwei Möglichkeiten. Entweder ist das Mikro so lange aktiviert, wie der Sprecher den Knopf drückt (bzw. den Bildschirm berührt) oder man konfiguriert es so, dass der Knopf als Ein-/Ausschalter funktioniert. Dann bleibt das Mikro so lange aktiviert, bis ihr es wieder deaktiviert wird (es muss also nicht permanent eine Taste gedrückt oder oder der Bildschirm berührt werden). Die Audio-Einstellungen befinden sich bei den Android-Apps z.B. unter , Settings bzw. Einstellungen und dann Audio.

3. In meiner Android-App wird mir der Server nicht als online angezeigt und ich kann mich auch nicht auf den Server verbinden!
In neueren Android Versionen müssen die Mobilen Daten deaktivert werden, damit der Server gefunden werden kann. Ursache ist, dass Android bei jedem Netzwerk prüft, ob eine Internetverbindung möglich ist. Dazu wird getestet, ob bestimmte Google-Server erreichbar sind. Sind diese nicht erreichbar, wird angenommen, dass keine Internetverbindung über dieses Netzwerk möglich ist und weicht daher auf die mobile Datenverbindung als "Standard-Verbindung" aus. Über diese ist der Mumble-Server natürlich nicht erreichbar. Ein temporäres Deaktivieren der Mobilen Daten auf dem entsprechenden Smartphone, löst das Problem.

comments (0) - add comment

No comments so far, leave one?