Echo Problematik

  • Hilfe / Ratschläge

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
- Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
-> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
- Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
- Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

Danke...

  • 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

    Quellcode

    1. ALSA: Polycom Communicator
    Bilder
    • PulsAudio1.JPG

      18,04 kB, 357×97, 39 mal angesehen
    raspberry pi 3, PiFace, Doorpi aktuelle Version

    http://plcsmarthome.jimdo.com/

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von emilio20 ()

  • Hallo emilio20,

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

    Quellcode

    1. $ pactl list short sinks
    2. 0 alsa_output.platform-soc_sound.analog-stereo module-alsa-card.c s16le 2ch 16000Hz SUSPENDED
    3. 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.

    Quellcode

    1. $ cat /etc/group | grep pulse
    2. audio:x:29:pi,pulse
    3. pulse:x:116:
    4. pulse-access:x:117:pi,root,pulse
    Entweder mit adduser oder manuell mit vigr / vigr -s die Gruppen bearbeiten.


    Und sichergehen, dass pulseaudio auch läuft ;)

    Quellcode

    1. $ ps aux | grep pulse
    2. 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:

    Quellcode

    1. [SIP-Phone]
    2. ...
    3. audio_codecs = PCMA,PCMU
    4. ...
    5. capture_device = ALSA: default device
    6. ...
    7. echo_cancellation_enabled = False
    8. ...
    9. playback_device = ALSA: default device
    10. ...
    11. sipphonetyp = linphone
    12. ...
    Alles anzeigen
    Wenn das Standard-ALSA-Gerät passt, dann ist alles gut.

    Quellcode

    1. $ aplay -L
    2. ...
    3. default
    4. Playback/recording through the PulseAudio sound server
    5. ...
  • 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.
  • sparkie
    kannst du mal genau erklären wie du das ein schaltest ? Wie gehst du in den GUI ist habe auf meinem pi keine Desktop installiert. Verwende Raspbian Stretch Lite
    Ich müsste diese einstellung über die console ändern ?
    raspberry pi 3, PiFace, Doorpi aktuelle Version

    http://plcsmarthome.jimdo.com/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von emilio20 ()

  • @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:

    Quellcode

    1. apt get linphone
    - keine nenneswerten pulseaudio Komponenten:

    Quellcode

    1. # dpkg -l | grep pulse
    2. 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:

    Quellcode

    1. # 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

    Quellcode

    1. echo_cancellation_enabled = True

    eingestellt

    Ist auf jeden fall besser nach 3 sec.
    raspberry pi 3, PiFace, Doorpi aktuelle Version

    http://plcsmarthome.jimdo.com/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von emilio20 ()

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

    Quellcode

    1. -------auto answering to call-------
    2. Connected.
    3. linphonec> Call 12 with <sip:ip1@192.168.144.214> connected.
    4. Media streams established with <sip:ip1@192.168.144.214> for call 12 (audio).
    5. 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.

    Quellcode

    1. pi@rpi3:~ $ sudo pip list | grep linphone
    2. linphone4raspberry 3.9.0
    3. pi@rpi3:~ $ dpkg -L linphone
    4. 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:

    Quellcode

    1. pi@rpi3:~ $ ps aux | grep pulse
    2. 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

    Quellcode

    1. pi@rpi3:~ $ sudo systemctl status pulseaudio
    2. ● pulseaudio.service - PulseAudio Sound System
    3. Loaded: loaded (/etc/systemd/system/pulseaudio.service; enabled; vendor preset: enabled)
    4. Active: active (running) since Sun 2018-09-02 18:57:39 CEST; 3 months 19 days ago
    5. Main PID: 662 (pulseaudio)
    6. CGroup: /system.slice/pulseaudio.service
    7. └─662 /usr/bin/pulseaudio
    Log ansehen mit journalctl -fe -u pulseaudio
  • stonev schrieb:

    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:

    Brainfuck-Quellcode

    1. ortp-message-===========================================================
    2. ortp-message- FILTER USAGE STATISTICS
    3. ortp-message-Name Count Time/tick (ms) CPU Usage
    4. ortp-message------------------------------------------------------------
    5. ortp-message-MSSpeexEC 7734 3.77017 64.6894
    6. ortp-message-MSAlsaWrite 4958 1.23601 13.5965
    7. ortp-message-MSAlsaRead 10541 0.443542 10.3722
    8. ortp-message-MSRtpSend 10541 0.241304 5.64286
    9. ortp-message-MSRtpRecv 10541 0.143422 3.35391
    10. ortp-message-MSAlawEnc 4958 0.0655054 0.720582
    11. ortp-message-MSVolume 10245 0.0237356 0.539468
    12. ortp-message-MSAlawDec 5280 0.0407339 0.477182
    13. ortp-message-MSGenericPLC 10541 0.0123215 0.288136
    14. ortp-message-MSDtmfGen 10541 0.010788 0.252277
    15. ortp-message-MSEqualizer 5287 0.00575015 0.0674501
    16. ortp-message-===========================================================
    Alles anzeigen
    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?
  • accuvue schrieb:

    @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...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von sparkie ()

  • Echo Problematik

    Neu

    accuvue schrieb:

    @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
  • Neu

    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.

    Quellcode

    1. 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:

    Quellcode

    1. cd pjsip-apps/src/python
    2. make
    3. sudo make install

    In der doorpi.ini :

    Quellcode

    1. [SIP-Phone]
    2. firewallpolicy = PolicyNoFirewall
    3. audio_codecs = PCMA,PCMU
    4. call_timeout = 30
    5. capture_device = ALSA: Jabra SPEAK 410 USB
    6. dialtone = !BASEPATH!/media/ShortDialTone.wav
    7. dialtone_renew_every_start = False
    8. dialtone_volume = 0
    9. echo_cancellation_enabled = True
    10. identity = testdoor
    11. local_port = 5060
    12. max_call_time = 120
    13. mic_gain_db = 0
    14. playback_device = ALSA: Jabra SPEAK 410 USB
    15. record_while_dialing = False
    16. records = !BASEPATH!/records/%Y-%m-%d_%H-%M-%S.wav
    17. sipphonetyp = pjsua
    18. sipserver_password = 12345678
    19. sipserver_realm = fritz.box
    20. sipserver_server = fritz.box
    21. sipserver_username = testdoor
    22. ua.max_calls = 2
    23. ua.nameserver = fritz.box
    24. video_codecs = VP8
    25. video_device = StaticImage: Static picture
    26. video_display_enabled = False
    27. video_size = vga
    Alles anzeigen

    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 !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Wal () aus folgendem Grund: Nach diversen Tests ein P.S. zugefügt