Echo Problematik

  • Hallo
    da ich aktuell ein bisschen Zeit habe möchte ich mich mal um das Echo Problem kümmern.
    Ich habe einen USB Polycom CX100 zerlegt und in meine Sprechanlage eingebaut. Lautsprecher und Micro sind weit auseinander und die zwei Mircos sind in Schaumstoff eingepackt. Dennoch habeich echo Probleme.
    Es gibt somit nur noch die Möglichkeit einer Softwarelösung.


    @phx kannst du mal deine doorpi Ini Posten mit dem Audio bereich ?


    @phx was muss ich bei sink_master und source_master bei mir eintragen ?


    Wenn ich "pactl list short sinks" eingeben erhalte ich nur
    "Connection failure: Connection refused"


    In Doorpi verwende ich folgenden Eintrag

    Code
    ALSA: Polycom Communicator
  • Hallo emilio20,


    du bist auf dem richtigen Weg. Was du eintragen musst, zeigt dir pactl list short sinks (bzw. pactlr list short sources) an.

    Code
    $ pactl list short sinks
    0       alsa_output.platform-soc_sound.analog-stereo    module-alsa-card.c      s16le 2ch 16000Hz       SUSPENDED
    1       doorpisink      module-echo-cancel.c    float32le 2ch 16000Hz   SUSPENDED


    Bei dir fehlen wohl die Rechte für deinen Nutzer, um auf pulseaudio zuzugreifen. Schau evtl. nochmal in meinem Post unter Installation/Konfiguration pulseaudio nach.

    Code
    $ cat /etc/group | grep pulse
    audio:x:29:pi,pulse
    pulse:x:116:
    pulse-access:x:117:pi,root,pulse

    Entweder mit adduser oder manuell mit "sudo vigr" (und danach dasselbe nochmals mit "sudo vigr -s") die Gruppen bearbeiten.



    Und sichergehen, dass pulseaudio auch läuft ;)

    Code
    $ ps aux | grep pulse
    pulse      662  0.0  2.5 105724 23820 ?        S<sl Sep02   1:58 /usr/bin/pulseaudio



    In der doorpi.ini spielt sich eigentlich nicht viel ab. Hier alles bzgl. Audio:

    Wenn das Standard-ALSA-Gerät passt, dann ist alles gut.

    Code
    $ aplay -L
    ...
    default
        Playback/recording through the PulseAudio sound server
    ...
  • ich habe jetzt auf einem standard Raspbian mit RPI 3 B+ linphone getestet. Pulseaudio habe ich erst mal weggelassen.


    In der GUI von linphone erscheint unter 'multimedia settings' ein Button fuer 'echo cancel on/off'. Der funktioniert definitiv. Weil zusammen mit einer uralt Siedle TLE 051-02 hoere ich ohne aktiviertes echo-cancel mein eigenes Echo, das vom Tuer-Lautsprecher ins Tuer-Micro der TLE einkoppelt, sehr deutlich.


    Nach Aktivieren des echo-cancel im linphone ist dieses Echo reproduzierbar nach ein paar gesprochenen Silben komplett weg. Oft hoert man es von Anfang an nicht mehr. Natuerlich muss man dazu das laufende Gespraech (noch mit Echo) erst auflegen und ein neues starten, damit die Option aktiv wird. Das Echo ist sofort wieder da, wenn ich die Option deaktiviere.


    Deswegen verstehe ich nicht, warum hier zum Teil zu lesen ist, dass der echo-cancel vom linphone nicht funktionieren soll. Unter den obigen Bedingungen funktioniert es jedenfalls, rein softwarebasiert und ohne erkennbare Probleme.

  • emilio20:


    sorry, ich verwende keinen Doorpi sondern ich habe mir auf Basis eines minimalen Raspbian (entspricht debian-stretch) sowas aehnliches wie einen Doorpi gebaut. Ich denke aber die gewonnenen Erkenntnisse koennten auch fuer Doorpi nuetzlich sein. Deswegen habe ich sie hier gepostet.


    Was habe ich gemacht?


    Zur Hardware:
    - Raspberry Pi 3 Model B+
    - Sabrent USB Externe Soundkarte (ASIN B00IRVQ0F8) (fuer 6.99€ bei einem grossen Online Versandhaus)


    Zur Software:
    - minimales Raspbian mit ssh Zugang (installiert mit Debootstrap)
    - linphone zum Testen in der Vollversion. Installiert mit:

    Code
    apt get linphone

    - keine nenneswerten pulseaudio Komponenten:

    Code
    # dpkg -l | grep pulse
    ii  libpulse0:armhf                 10.0-1+deb9u1                     armhf        PulseAudio client libraries


    Damit ich die Grafikausgabe des 'linphone' auf meinem Desktop-Rechner sehen kann, logge ich von dort mit X11 forwarding auf meinem RPi ein:

    Code
    # ssh -X <rpi-IP>

    die einzigen relevanten Einstellungen/Kontrollen die ich nun in der GUI vom 'linphone' gemacht habe sind:
    - Kontrolle ob in den Multimedia Settings 'echo cancel' aktiviert ist
    - ob von linphone die richtige Soundhardware genutzt wird (heisst sinnigerweise USB Audio Device)
    - ob in linphone nur Codec PCMA aktiviert ist


    siehe auch Screenshots:




    die ~/.linphonerc schaut dann so aus (umbenannt, da dies sonst der Forumsupload nicht akzeptiert):


    linphonerc.txt


    diese Konfiguration sollte aber auch das linphone in CLI Version verstehen

  • Wenn ich jetzt noch wüsste wo ich die ~/.linphonerc finden dann würde ich diese mal über sudo nano abändern.
    Im home verzeichnis ist nichts zu finden.


    Hab jetzt mal in Doorpi


    Code
    echo_cancellation_enabled = True


    eingestellt


    Ist auf jeden fall besser nach 3 sec.

  • der echo canceller des linphone ist recht lustig. Manchmal bringt er die Meldung:

    Code
    -------auto answering to call-------
    Connected.
    linphonec> Call 12 with <sip:ip1@192.168.144.214> connected.
    Media streams established with <sip:ip1@192.168.144.214> for call 12 (audio).
    warning: The echo canceller started acting funny and got slapped (reset). It swears it will behave now.


    :)

  • sparkie:
    Doorpi verwendet linphone4raspberry 3.9.0. Deine Ergebnisse sind daher vermutlich nicht ganz vergleichbar.
    Gut zu wissen, dann linphone mit Echo-Unterdrückung grundsätzlich funktioniert. Über doorpi hatte es bei mir jedoch absolut keinen Effekt.

    Code
    pi@rpi3:~ $ sudo pip list | grep linphone
    linphone4raspberry 3.9.0
    
    
    pi@rpi3:~ $ dpkg -L linphone
    dpkg-query: Paket »linphone« ist nicht installiert




    emilio20:
    Versuch doch mal mit einer unveränderten Standardkonfiguration von pulseaudio anzufangen, ob dann pactl funktioniert und pulseaudio läuft.


    Je nachdem wie pulseaudio gestartet wurde, kannst du kontrollieren ob pulseaudio läuft und ggf. den log-level hoch drehen:


    Per Komandozeile:

    Code
    pi@rpi3:~ $ ps aux | grep pulse
    pulse      662  0.0  2.7 105724 25708 ?        S<sl Sep02   2:19 /usr/bin/pulseaudio

    Logging hoch drehen mit --log-level=4



    Oder über systemd in /etc/pulse/daemon.conf log-level=debug

    Code
    pi@rpi3:~ $ sudo systemctl status pulseaudio
    ● pulseaudio.service - PulseAudio Sound System
       Loaded: loaded (/etc/systemd/system/pulseaudio.service; enabled; vendor preset: enabled)
       Active: active (running) since Sun 2018-09-02 18:57:39 CEST; 3 months 19 days ago
     Main PID: 662 (pulseaudio)
       CGroup: /system.slice/pulseaudio.service
               └─662 /usr/bin/pulseaudio

    Log ansehen mit journalctl -fe -u pulseaudio

  • Nein, bei Linphone gibt es keine Stellschrauben dafür. Die für den Raspberry genutzte Versieon "Linphone for Raspberry" ist genau in diesen rechenintensiven Bereichen abgespeckt. Deswegen gibt es auch keine anderen Sprachprotokolle wie Speex o. ä.
    Hatte icheine Seite zuvorauch schon geschrieben.

    diese Feststellung mag vielleicht fuer die von DoorPi verwendete Version von 'linphone' gelten. Das kann ich nicht beurteilen, da ich kein DoorPi verwende.


    Das im Standard-Raspbian vorhandene 'linphone' hat jedoch den 'echo cancel' und Speex u.a. sehr wohl implementiert.


    Dieser Echo Canceller ist sogar auf dem ersten Raspberry Pi 1 Model B grundsaetzlich lauffaehig und funktioniert. Damit teste ich gerade.


    Nach Gespraechsende gibt es eine Statistik mit Usage Statistik:


    warum DoorPi ausgerechnet eine Version von 'linphone' nutzt, die mit 'echo cancel' solche Probleme hat verstehe ich nicht, da es sich schliesslich um eine fuer Tuersprechanlagen essentielle Funktion handelt.

  • @sparkie
    Hälst Du und über Deine Versuche mit dem Raspberry-Software-Echocancaller auf dem Laufenden? Das AEC-Modul scheint ja wegen der nicht vorhandenen Rechnerkapazitäten im Raspberry aus dem Projekt entfernt worden zu sein?


    Ich habe mich beim Bau meines Doorpi für die Hardwarelösung von Stonev entschieden. Funktioniert ganz vernünftig, zumindest was die Funktion der Echounterdrückung betrifft. Insgesamt betrachtet ist es natürlich doof, zwei autarke Rechner im Doorpi einzusetzen und eine mehrfache Digital-Analog Wandlung zu machen. Schön wäre es schon, wenn es der Raspberry gleich mit erledigen könnte...


    @stonev
    Ein Problem gibt es bei meiner Hardwarelösung mit dem voice INTER connect Modul: Die Verdrahtung der Masseverbindung. Zwar ist es mir nach umfangreichen Versuchen gelungen, Raspi, USB-Soundkarte, Voice INTER Connect Modul und Verstärker so zu verbinden, dass das Rauschen des Rechners minimiert ist. Aber so ganz weg ist es eben auch nicht. Besonders am Hörer des angerufenen Telefons ist das deutlich hörbar.



    Hast Du dafür eine Lösung gefunden?

  • @sparkie
    Hälst Du und über Deine Versuche mit dem Raspberry-Software-Echocancaller auf dem Laufenden? Das AEC-Modul scheint ja wegen der nicht vorhandenen Rechnerkapazitäten im Raspberry aus dem Projekt entfernt worden zu sein?

    welches Projekt meinst du? DoorPI oder Raspbian?


    Ich kann nur sagen der Echo Canceller ist auf einem *unverfaelschten* Raspbian in der CLI Version 'linphonec' sowie in der GUI Version 'linphone' vorhanden. Er funktioniert definitiv sehr gut auf einem RPi B 3. Dort wird ein ansonsten deutlich hoerbares Echo wirksam unterdrueckt. Kann man jederzeit durch (De)aktivieren der Funktion reproduzieren.


    Ich nutze so ein System produktiv fuer den Tuersprechbetrieb in einer groesseren ELCOM Anlage: doorpi-im-elcom-hager-i2bus-i2audio-netz. Das System ist jedoch rein Raspbian basierend (also kein DoorPI). Deswegen kann ich zu DoorPI nichts sagen.


    Sogar auf einem RPi B 1 kann der Canceller aktiviert werden. Hier habe jedoch noch keine Tests zur Wirksamkeit der Echo Unterdrueckung gemacht, da auf meinem Test RPi B 1 derzeit gar kein Echo entsteht und deswegen auch nicht unterdrueckt werden muss. Das Aktivieren der Funktion stoert aber selbst auf dem RPi B 1 den normalen Betrieb schon mal nicht.

  • eine Bauanleitung habe ich nicht verfasst, da sich bei mir die Tuersprechanlage ueber mehrere Rechner erstreckt. Das linphone steht z.B. mit einem Asterisk im lokalen Netzwerk in Kontakt. Da linphone keine DTMF Erkennung (ueber das Mikrofon) beherrscht. Diese Funktion uebernimmt der Asterisk.
    DTMF Eingabe per Smartphone App ist wichtig wenn ich z.B. ueber das Internet nicht mehr an die Sprechanlage komme. Im Notfall kann ich so ueber DTMF trotzdem alle wichtigen Kommandos an die Anlage geben. Z.B. wenn ich unten vor verschlossener Haustuere stehe und bei Internetausfall trotzdem ins Haus moechte :)


    dieses Thema ist aber etwas OT hier...

  • @sparkie
    @stonev
    Ein Problem gibt es bei meiner Hardwarelösung mit dem voice INTER connect Modul: Die Verdrahtung der Masseverbindung. Zwar ist es mir nach umfangreichen Versuchen gelungen, Raspi, USB-Soundkarte, Voice INTER Connect Modul und Verstärker so zu verbinden, dass das Rauschen des Rechners minimiert ist. Aber so ganz weg ist es eben auch nicht. Besonders am Hörer des angerufenen Telefons ist das deutlich hörbar.



    Hast Du dafür eine Lösung gefunden?


    Nein, ganz weg habe ich das auch nicht bekommen. Ich habe leider kein Oszilloskop
    , weshalb es mit der Ursachenforschung irgendwann eng wird.
    Spielwiesen wären hier die Qualität der Spannungsversorgung und Schirmung.




    Gesendet von iPhone mit Tapatalk

  • Achtung, auf eigene Gefahr !!!
    Nur Testsystem benutzen.


    Da einige hier im Forum mit dem Echo Probleme haben, habe ich mich mal an die pjsua lib gewagt und installiert.
    Danach hatte ich einige Hürden erklommen, um das Ganze mit DoorPi zum laufen zu bekommen.
    Da ich mit meinem System kein Echo habe, wurde ein Testsystem benutzt.
    Ich glaube das AEC von pjsua greift. Ich kann eine minimale Verzögerung der Sprache erkennen und kein Echo mehr, selbst wenn ich direkt neben der DoorPi stehe.


    Für Wagemutige:
    Anstatt vi als editor, habe ich nano benutzt.
    Ich bin nach dieser Anleitung vorgegangen.
    Installiert habe ich aber SDL 2.0.9 und pjproject-2.8
    Einfach die Zahlen abändern.
    Vor dem "./configure" von pjproject muß auch das Flag -fPIC zugefügt werden.

    Code
    export CFLAGS += -fPIC -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -mlittle-endian -munaligned-access -ffast-math


    Nach dem "make" von pjproject-2.8 noch ein "sudo make install" machen.


    Danach den Python-Wrapper erzeugen:

    Code
    cd pjsip-apps/src/python
    make
    sudo make install


    In der doorpi.ini :


    ua.nameserver = fritz.box und sipphonetyp = pjsua sind wichtig.


    Ordner sipphone in doorpi austauschen.
    archiv.zip


    Video habe ich nicht getestet!

    Toi,Toi,Toi


    P.S. Ein Anruf zur DoorPi wird mit einer Fehlermeldung abgebrochen. Da muß ich mich nochmal mit auseinandersetzen.

    Gruß
    Wal


    Kaum macht man es richtig, funktioniert es auch !

    Einmal editiert, zuletzt von Wal () aus folgendem Grund: Nach diversen Tests ein P.S. zugefügt