Mumble Script

Ich habe bereits eine VM bei mir am laufen um darin rum zu spielen. Ich wollte erst bei mir selber probieren.

Aber ich kann euch ja ein öffentlichen Schlüssel erzeugen.

@MPW, wie sende ich dir das? Per PN?

Ja oder einfach hier rein. Ist ja schließlich öffentlich. :slight_smile:

Okay, dann probier erstmal bei dir. Dann braucht sich @corny456 die Arbeit nicht machen.

Bin gespannt, wäre interessant, falls du Lust hast am Mittwoch persönlich oder per Mumble was dazu zu erzählen.

Ich machs erst mal bei mir.

Ich würde gern am Mittwoch mit jemandem zusammen auf dem Mumble Server Joinen.

Ich habe eigentlich noch Abendschule zu tun, daher kann ich nicht immer pünktlich da sein.

Edit:
Ich hab mich vertan ich möchte mit jemandem zur Warpzone kommen und gleichzeitig mit jemandem in Mumble Sprechen wenn alles klappt.

2 „Gefällt mir“

Läuft.

Wir sind in der Regel bis mindestens Mitternacht dort.

Bis dann

Hallo Leute,

Sorry das ich mich nicht mehr gemeldet habe, aber gerade laufen Release Updates aus, und es gibt eine neue Funktion die heißt RNNoice. Mit dem Filter werden z.B. Tastatur Geräusche oder andere Störgeräusche gefiltert. Bleibt nur noch das bei den Treffen viel geredet wird.

Ich komme nächstes mal zum Treffen auf euer Mumble, wobei ich hoffe das bis dahin die Updates über die bühne gelaufen sind.

Ich weiß aus der Entwicklung, dass der Windows build server gerade noch gefixt wird daher ist unter Unix/Linux schon rc1 vorhanden, daher bitte um geduld.

Infos zu Mumble 1.3.0 hier

1 „Gefällt mir“

Ich möchte auch auf eine Funktion hinweisen die „Beforzugter Sprecher“ (Priority Speaker) heist. Diese Funktion funktioniert im Prinzip so wie ihr es benötigt, mit dem hacken das es an einem ACL Recht fürs Stumm /Taub Stellen (Mute/Deafen) gebunden ist.

Ich glaube mit dieser Funktion ist es sinnlos noch ein Script zu schreiben wenn Mumble selbst so eine Funktion liefert. Oder sehe ich das falsch?

Infos hier:

Funktion in 1.3.0 hinzugefügt

1 „Gefällt mir“

Sehr coole Sache. Habe es in die Tagesordnung aufgenommen. Ich freu mich drauf :slight_smile:

Habe was sinnvolles herausgefunden!

Leider ist euch bestimmt aufgefallen das Benutzer in Mumble darüber klagen das sie eine Rückkopplung oder Echo von sich selbst bekommen. Das hat damit zu tun, dass die Echo Unterdrückung in Mumble seit dem Celt bzw. Opus benutzt wird keine Echo Unterdrückung mehr funktioniert. Der alte Speex Codec konnte das noch, aber der ist uralt und hat eher schlechte Qualität. Unterm strich ist die Echo Unterdrückung in Mumble unwirksam.

Ich habe herausgefunden das Pulseaudio ein modul für das Problem liefert.
Mit folgendem befehl kann man es einschalten:
$ pactl load-module module-echo-cancel

Hinweis: Damit es funktioniert muss in Pulse der Default für Input und Output eingestellt sein!

Wenn es aktiviert wurde stellt man in Mumble auf den “echo cancellation …” als gerät sowohl für Eingang und Ausgang. Die Mumble eigene Echo Unterdrückung dann ausschalten.

Wir haben auch herausgefunden wenn man ein anders device als das wofür man mumble nutzt noch filtern möchte kann man es mit mehr Aufwand auch erreichen. Beispiel:
pactl load-module module-echo-cancel aec_method=webrtc use_master_format=true format=s32le rate=96000 channels=2
Dies ist aber für euer Setup nicht notwendig, ich wollte es aber mal erwähnt haben. Es forciert z.B. das jedes Gerät 96kHz benutzt, damit es nicht so dumpf klinkt.

MfG Chris

2 „Gefällt mir“

Die Echounterdrückung in PA ist aber auch eher so mäßig.

Meines Wissens gibt es keinen wirklich schön funktionieren Algorithmus für Echounterdrückung, der das kann. DECT-Telefone und auch kommerzielle VoIP-Lösungen, seien es SIP-Telefone oder auch Skype arbeiten einfach damit, das Mikro bzw. die Lautsprecher wechselseitig stumm zu schalten bzw. die Lautstärke stark zu reduzieren. Es ist also eigentlich eher eine intelligente halbduplex Umschaltung.

Oder man arbeitet mit Mikrofonarrays, sodass ein Mikrofon nahe am Lautsprecher ist, und dieses dann aus den anderen raussubtrahiert wird. Das funktioniert auch, haben eigentlich alle modernen Laptops.

Aber mit einem Einspurmikrophon und einem Lautsprecher geht Echounterdrückung algorithmisch meines Wissens nach derzeit nicht oder das Ergebnis ist in der Regel nicht zufriedenstellend.

Ich habe es getestet, und ja es gibt natürlich eine Verzerrung wenn eine Rückkopplung gefiltert wird. Aber ich denke es ist nerviger eine Rückkopplung zu ertragen als eine Filterung zu ertragen.

Probier es aus. Ich finde dieses Algorithmus jedenfalls nicht so schlecht wie das von den Telephonen.

MfG Chris

1 „Gefällt mir“

Rückkopplungs- und Echounterdrückung sind aber zwei verschiedene Sachen.

Wir können es natürlich gerne mal testen. Aber ich finde die Lösung alle nicht anwesenden zu priorisierten Sprechern zu deklarieren schon ganz gut. Nur @Hoepers hatte auf seinem angebissenen Apfel Probleme mit Mumble 1.3. Bei allen anderen lief es bisher gut.

Perfekt wäre es halt das als Skript auf dem Server für den Raum fest zu hinterlegen, dass einfach das Saalmikro abgeschaltet wird, wenn jemand anderes spricht. Vom Algorithmus her total simpel. Es hängt von der Struktur von Mumble ab, ob man das ohne tiefere Eingriffe in den Code umsetzen kann.

Der FFRL hatte mal eine Podiumsfunktion geskriptet. Es gab zwei verknüpfte Räume. Ein Raum, zu dem nur der Vorstand Zutritt hatte, wurde in einen weiteren Raum, in dem dann die normalen Zuhörer waren, gespiegelt. Und wer eine Wortmeldung hatte, wurde dann kurz vom Moderator in den anderen Raum verschoben. Das nur als Beispiel, lief wohl früher mal gut, ist aber irgendwann bei einem Update kaputt und das Wissen das zu pflegen verloren gegangen.

Moin … ich hatte mich da mit Echo Unterdrückung von Pulseaudio befasst. Der Command den der Chris geposted hat stammt aus meinem Testsetup.

pactl load-module module-echo-cancel aec_method=webrtc use_master_format=true format=s32le rate=96000 channels=2

Die formate s32le und 96kHz sind hier dem geschuldet das ich Musik halt ungern in schlechten Sampling Raten höre… (Alltags tauglich sind auch s24le und 48kHz oder auch s16le und 44.1kHz)

Also ich habe hier mit voll aufgedrehten Boxen und viel Bass getestet. Das „echo cancelling“ hat sauber funktioniert. Man konnte leichte Verzerrungen hören. Aber das ist auch klar weil mein Mikro halt auch an die Physik gebunden ist. Und wenn hier im Raum der Bass durchfegt dann kann das Mikro halt dies kaum kompensieren. Für Sprache sollte die Pulseaudio Lösung das jetzige Probleme beheben. Prio Speaker oder ein Skript sollten dann nicht mehr notwendig sein. Bzw. müssen nicht als fix zur Echo Unterdrückung herhalten.

Ich teste hier noch ein bisschen das man ein Setup aufbauen kann welches auch einen Neustart überlebt.

Paper zur Noise/Echo Reduction in PulseAudio https://www.sthu.org/research/publications/files/lac2013.pdf
(Umschreibt ganz gut was die Algorithmen in Pulse können und was nicht. Fokus ist hier aber embedded und Multi-Channel…)

Ich bin erstaunt wie gut das klappt!

Aktuell findet man dies leider noch bei alten oder günstigen Geräten. Wäre auch doof wenn man die teuren Meeting Raum Lösungen gegen ein VoIP Telefon tauschen könnte.

Nennt sich in intelligenten Setups Beamforming. Technisch ähnlich dem Beamforming beim WLAN.
Bin bei meiner Pulseaudio Recherche hier auch auf einen Ansatz gekommen. Die Sample Files sind recht gut …
https://arunraghavan.net/2016/06/beamforming-in-pulseaudio/

Jabra Headset Mikro vs. 2+1 Boxen System ging hier im Testsetup ganz gut :slight_smile:

Dann testen wir das mal, ich bin gespannt. Auch ob das stabil läuft. Also ich das so 2015 zuletzt getestet habe, ist PA mit Echounterdrückung immer so nach 5-10 min abgeschmiert.

Hat der Saalmic PC nenn Ubuntu 18.04 oder neuer?

Die aktuelle Implementierung ist erst 2016 mit PulseAudio 9.0 eingeführt worden.
Siehe: Improvements to PulseAudio’s Echo Cancellation – Arun Raghavan

Ah okay. Glaub da ist 18.04 drauf.

Moin,

hier die Einstellungen für die /etc/pulse/default.pa. Einfach am Ende einfügen und bei den default sinks und sources die eigenen default Namen einfügen.
Die Namen kann man sich hiermit anzeigen lassen:
pactl list sinks | grep Name
pactl list sources | grep Name

In mumble dann jeweils auf default umstellen und Echo Cancelling in Mumble deaktivieren.

Hier nur die Änderungen:
edit_pa_ffechoCancel.txt (1,1 KB)

Meine default.pa (ubuntu 18.04):
default.pa.txt (5,7 KB)

Kurz dazu was es tut:

Hier dann bitte die Namen der default Source und Sink eintragen:

#SET DEFAULT AUDIO SOURCE AND SINK
set-default-source alsa_input.usb-0b0e_Jabra_LINK_360_501AA5A4E493022E00-00.analog-mono
set-default-sink alsa_output.pci-0000_0a_00.3.analog-stereo

An dieser Stelle wird das Modul geladen:

#LOAD ECHO CANCEL WITH AEC_METHOD WEBRTC
# default quality mode source based
load-module module-echo-cancel aec_method=webrtc use_master_format=true source_name=ffechoCancel_source sink_name=ffechoCancel_sink
# high quality mode
#load-module module-echo-cancel aec_method=webrtc use_master_format=true source_name=ffechoCancel_source sink_name=ffechoCancel_sink format=s32le rate=96000 channels=2

Und hier werden die echo canceled Source und Sink als neuer default definiert:

#SET ECHO CANCEL SOURCE AND SINK
set-default-source ffechoCancel_source
set-default-sink ffechoCancel_sink
1 „Gefällt mir“

Danke für die tolle Anleitung.

Getestet und funktioniert super :grinning:.

Neuer Schnippsel der mit 2 Zeilen auskommt ohne die Defaults hin und her zu wechseln …

.fail

# high quality mode
load-module module-echo-cancel aec_method=webrtc use_master_format=true source_master=alsa_input.usb-ZOOM_Corporation_H1_000000000000-00.analog-stereo sink_master=alsa_output.pci-0000_0c_00.4.analog-stereo source_name=ffechoCancel_source sink_name=ffechoCancel_sink format=s32le rate=96000 channels=2

die Namen der Device müssen natürlich getauscht werden.
Die Namen kann man sich hiermit anzeigen lassen:
pactl list sinks | grep Name
pactl list sources | grep Name

1 „Gefällt mir“

Sieht so aus als würde die Echo Unterdrückung in Mumble gefixt.

Wenn jemand testen mag kann es jetzt tun.

MfG Chris

1 „Gefällt mir“

Weiterer Pullrequest für Mumble Echo Cancel fix:

MfG Chris

EDIT:

Oh fehlalarm: ich habe mich verlesen. Handelt von RNNoice nicht Echocancel

1 „Gefällt mir“