Echo Problematik

  • Hallo!


    Das sind gute Neuigkeiten. Auch ich compiliere gerade an PJSUA herum, auch ich habe gesehen, dass die ein AEC anbieten und war daher schon recht angetan.


    Aber noch bevor ich das mit dem AEC angehe möchte ich versuchen einen h264 Video Stream zu bekommen, am liebsten über den auf dem Raspi vorhandenen HW encoder (bis ffmpeg geht es schon mal, darüber habe ich noch Probleme) . Das war bei mir der initiale Grund, warum ich mir dieses PJSUA angesehen habe. Allerdings habe ich es bis dato aber noch nicht hin bekommen. Das sit aber ein anderes Thema...


    Hat denn jemand von euch schon mal versucht das linphone-raspberry mit Echo cancellation zu komplieren? Ich hatte nämlich bisher noch kein Glück damit... linphone an sich habe ich hin bkommen, aber dieses ppython wrapper gedöns noch nicht.


    Michael

  • Hallo,


    ich hab auch mal versucht das Echo-Problem mit der Anleitung von phx zu beseitigen.


    Hab alles so gemacht wie beschrieben. Aber bekomme die gleiche Fehlermeldung, wie emilio.


    Habe dann alle /etc/pulse/"Datei-Einträge" wieder in den Orginal zustand gebracht und die user aus den Gruppen entfernt.


    Und das Ende vom Lied ist, die Doorpi Sprachausgabe geht nicht mehr.


    Hat jemand eine Idee, was ich falsch gemacht habe?

  • Hallo en123,


    ich würde gern helfen ... evtl. habe ich auch etwas in meiner Anleitung vergessen ... aber ein paar mehr Informationen braucht es schon zur Fehlersuche (s. post 124).


    Vielleicht spuckt "sudo journalctl -eu pulseaudio" einen Hinweis aus.
    Alternativ kannst du folgendes versuchen: pulseaudio beenden mit "sudo systemctl stop pulseaudio" oder pulseaudio -k (je nach startart) und danach pulseaudio manuell mit mehr log-output starten "sudo pulseaudio -vvv --system"



    Ergänzung:
    In /etc/pulse/client.conf ist bei mir alles auskommentiert und ich habe bei mir auch kein X-server/GUI laufen.

  • Hallo phx,




    Ich habe den Raspberry Pi Model B und das aktuelle Betriebssystem Raspbian Stretch
    Kernel 4.14.79-v7+



    lsb_release -a
    No LSB modules are available.
    Distributor ID: Raspbian
    Description: Raspbian GNU/Linux 9.6 (stretch)
    Release: 9.6
    Codename: stretch


    uname -a
    Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux


    dpkg -l | grep pulseaudio
    ii pulseaudio 10.0-1+deb9u1 armhf PulseAudio sound server
    ii pulseaudio-utils 10.0-1+deb9u1 armhf Command line tools for the PulseAudio sound server


    doorpi_cli --version
    VoIP Door-Intercomstation with Raspberry Pi 2.5.1



    Code: system.pa
    1. /etc/pulse/system.pa
    2. ### echo cancellation
    3. load-module module-echo-cancel aec_method=webrtc sink_name="doorpisink" source_name="doorpisource" sink_master="alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo" source_master="alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-mono"
    4. use_master_format=true aec_args="analog_gain_control=0 digital_gain_control=0 noise_suppression=0 high_pass_filter=0 mobile=1 routing_mode=loud-speakerphone comfort_noise=0"
    5. set-default-sink doorpisink
    6. set-default-source doorpisource




    sudo journalctl -eu pulseaudio




    Habe ich das so richtig gemacht?
    /etc/pulse/system.pa

    Code
    1. ### echo cancellation
    2. load-module module-echo-cancel aec_method=webrtc sink_name="doorpisink" source_name="doorpisource" sink_master="alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo" source_master="alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-mono"
    3. use_master_format=true aec_args="analog_gain_control=0 digital_gain_control=0 noise_suppression=0 high_pass_filter=0 mobile=1 routing_mode=loud-speakerphone comfort_noise=0"
    4. set-default-sink doorpisink
    5. set-default-source doorpisource
  • Dein raspbian ist fast identisch zu meinem. Ich sehe hier keinen Fehler. Dass in system.pa ausschließlich aec_args bei mir Anführungszeichen hat ... sollte nun wirklich keinen Unterschied machen.


    Ich habe mal alle meine Konfigurationsdateien angehängt. Insb. die vollständige pulseaudio Konfiguration (/etc/pulse/*)
    In /systemstate.txt ist die Ausgabe von allen Befehlen die mir gerade eingefallen sind. Insb. am Dateiende die Reche auf die von pulseaudio genutzten Verzeichnisse. Pulseaudio läuft bei mir nicht als root, sondern unter dem Nutzer pulse.


    Weitere Hinweise (evtl. liegt es an der autospawn option?)
    https://www.linuxquestions.org…r-pavucontrol-4175610042/
    -> ... evtl. pulseaudio mit -vvvv starten und dann schauen, was passiert, wenn du pactl aufrufst.
    https://askubuntu.com/question…o-pulseaudio-failed-error

  • Danke phx,


    du hast mich auf den richtigen Gedanken gebracht.
    Ich habe die Zeile
    "use_master_format=true aec_args="analog_gain_control=0......"
    ohne Umbruch gemacht.
    Jetzt kommt auf pulseaudio -vvv --system



    Ich habe drei Stockwerke mit Telefonen über die Fritzbox 7390 angeschlossen. Zwei davon über die externen Fon-Anschlüsse der Fritzbox. Eines über Dect mit einem Fritzfon C5
    Mit meinem alten Siemens Gigaset 3015 hör ich zumindest meine Stimme am Lautsprecher der Anläuteplatte. Das Micro schein nicht zu gehen. Bei den beiden anderen ist nichts zu hören.
    Als ich nur Alsa benutzte gingen alle drei Telefone. Was könnte da sein?
    Hat jemand eine Idee?

  • Evtl. ist es einfach zu leise oder auf mute?


    Du kannst mit "alsamixer" auf der Konsole alles durchgehen. Mit F6 die Karte auswählen, F4 für Aufnahme (geht bei mir seltsamerweise nicht) oder F5 für Alle und den Pfeiltasten durchblättern ... alles was nach Micro, gain, In/Input riecht mal überprüfen.

  • Hallo phx,
    bin schon am verzweifeln.
    Bei den drei Telefonen die ich über Fritzbox angeschlossen habe, funktioniert nur eins
    seitdem ich pulseaudio echo cancellation aktiviert habe.
    Also hier kann ich am Doorpi_Lautsprecher meine Stimme hören und das Mikro geht auch.
    Wenn ich zum Fritzfon ein Call starte, läutet das Telefon aber ich kann am Lautsprecher
    der Anläutplatte meine Stimme nicht hören und das Mikro geht auch nicht.
    Ich hab mal meine doorpi.ini und eine log Ausgabe als zip mit angehängt.
    Vielleicht hab ich da was falsch gemacht.


    Gruß en123

  • Puh. Sah auf den ersten Blick alles korrekt aus im log von doorpi. Mit gefährlichem Halbwissen stelle ich aber mal folgende Vermutung auf:
    1) aplay -L zeigt an, dass "default" auf auf pulseaudio geht
    2) In der doorpi.ini hast du jedoch nicht "ALSA: default device" als capture_device und playback_device ausgewählt
    3) Die in der doorpi.ini explizit gewählte Soundkarte "ALSA: USB PnP Sound Device" ist zwar die richtige Karte, wird aber nicht über Pulseaudio geroutet.


    Vielleicht reicht es schon, in der doorpi.ini wieder "ALSA: default device" für beide devices zu nehmen. Default in alsa ist pulseaudio, sobald es korrekt geladen ist, wie aplay -L ja bei dir anzeigt, und in Pulseaudio selbst sind die sinks/sources dann auf die richtige USB-Karte eingestellt.
    Ich habe bei mir von Anfang an die interne Karte deaktiviert (in /boot/config.txt dtparam=audio=on auskommentiert -> #dtparam=audio=on), um ein Problem weniger zu haben ;)


    Weitere Anmerkungen zur doorpi.ini:
    - "mic_gain_db = 0" habe ich bei mir nicht gesetzt. Ist Mikrofonverstärkung von 0 gewollt?
    - "call = ..." bei [AdminNumbers] sieht deplaziert aus, aber vielleicht kenn ich nur die Option nicht. Und "* = active" macht in Kombination mit den nachfolgend explizit aufgeführten Nummern keinen Sinn.

  • Hi all,


    I'm also building my DoorPi and it has been 1 step forward, three steps back. I even considered an old Android Phone as Doorbell with a custom application but in the end that did not work out as I cannot understand the people at the door.


    Has anybody already looked into UV4L. I have great results with that... no echo whatsoever. This is because the webrtc protocol has a lot of echo-cancellation software built-in. The problem with that is that I do not know how to link it to Asterisk, which I would like to keep since it would allow me to call me on my Android Phone when I'm not home.


    I'm now first going to try @Wal's solution with compiling pjsip.


    Best regards,
    Ronald

  • Ich habe jetzt nochmal mit 0815 Hardware getestet, AEC mit pjsua geht definitiv. Es wäre aber schön, wen das jemand bestätigen könnte.

    Wal : I installed pjsip and I'm trying to understand how the echo cancellations should work. In the doorpi/sipphone/pjsualib/Config.py from your doorpi.tar.gz archive, I find the following:

    Code
    1. MediaConfig.ec_options = conf.get_int(SIPPHONE_SECTION, 'media.ec_options', 0)
    2. MediaConfig.ec_tail_len = conf.get_int(SIPPHONE_SECTION, 'media.ec_tail_len', 1024)

    If I understand the pjsip documentation well, the 0 means no echo cancellation will be done. Did you add something media.ec_options in the doorpi.ini with a value of 1? If not, I can't understand how the echo cancellation would work.

  • Hello rdehuyss,
    yes you are right, the parameter "MediaConfig.ec_options" must be set in the doorpi.ini.
    I did not pursue the topic any further because I no longer use doorpi.
    Since I use ioBroker as SmartHome software, I have programmed an adapter for it. As Sip software I use Baresip and as AEC the module of Pulseaudio. My hardware is now an Odroid XU4 that has more power for AEC.
    Baresip is currently being developed, so I changed.