Verbesserung der Sprachqualität

  • Hi,


    in diesem Thread kam die Frage auf, wie man grundsätzlich die Sprachqualität verbessern kann:


    Wichtiger ist es, Mikrofon und LS akkustisch zu entkoppeln, um die Sprachqualität beim Gegensprechen zu erhöhen.
    Wirklich zufrieden stellt mich die Sprachqualität derzeit nicht... Muss da noch ein wenig experimentieren.


    Bietet linphone noch Möglichkeiten softwareseitig an der Sprachqualität zu schrauben?


    Ich mache dafür dieses eigene Thema auf, da ich das wichtig finde und mich es auch brennend interessiert.
    Welche Möglichkeiten gibt es grundsätzlich die Qualität zu verbessern?


    In der DoorPi Config kann man z.B.

    Code
    1. echo_cancellation_enabled = True


    einstellen. Ich habe mal gelesen dass man das nicht tun sollte, weil dem Pi die Rechenleistung fehlt. Ich habe das bei mir mal gemacht (wohlgemerkt auf einem Raspberry B+), und es hat einiges gebracht. Das Echo (habe ich nur an der Innenstelle, also am Telefon) tritt dadurch deutlich in den Hintergrund. "top" sagt mir während eines Gesprächs immer noch 20% Idle.


    Kann man die Option somit grundsätzlich einschalten?

  • Ich habe die Funktion auch eingeschaltet. Es ist etwas besser (subjektiv), stellt mich aber nicht wirlklich zufrieden. Ich höre mich am Telefon immer noch stark selber reden.


    DoorPI bietet auch die Möglichkeit, den Codec einzustellen. Linphone bietet die Audio codecs: OPUS, SILK, SPEEX, G722, AMR-WB (G722.2), GSM 6.10, AMR-NB, ILBC, G729, G711
    In DoorPi ist PCMA,PCMU standard, was dem Codec G711 entsprechen müsste. Welche Möglichkeiten habe ich hier, mit dem Codec zu spielen und welche Werte müsste man eintragen? Di Fritbox unterstützt:

    • G.711a
    • G.711u
    • G.711 HD
    • G.722
    • G.726-24
    • G.726-32
    • G.726-40
    • iLBC 13.3
    • iLBC 15.2


    Der nächste Angriffspunkt wäre das Mikro. Ich habe eines genommen welches von einer VW Freisprechanlage noch hier lag. Vermutlich ein Mik mit Kugelcharakteristik. Entweder ich packe das Mik in Schalldämmendes Material (z. B. Styropor) so ein, dass es von hinten und von der Seite keinen Schall mehr empfängt (also vom LS), oder ein Mik mit Nierencharalkteristik (Superniere) könnte helfen. Da stehen noch Experimente an.


    Ich habe aber auch noch kein MIK mit Supernierencharakteristik gefunden, dass man problemlos verbauen könnte, wie die herkömmlichen Kapselmikrofone. Wer hier einen Tipp zur Hardware hat - her damit...

  • Könnte ein anderer Codec denn wirklich an dem Echoproblem etwas verändern?


    AMR-WB wird häufig für Sprachübertragung verwendet, aber das wird scheinbar von der Fritzbox nicht unterstützt. Ich kenn mich aber nicht wirklich aus was der beste Codec für diesen Einsatzzweck ist.


    Das mit der Charakteristik klingt vielversprechend. Ein Elektretmikrofon (was scheinbar die meisten hier verwenden) hat soweit ich weiß auch eine Kugelcharakteristik oder? Also eigentlich schlecht.


    Mit dem Dämmen klingt auch gut. Ich werde mir glaube ich mal eine "Haube" aus Styropor schnitzen die ich hinten an das Mikrofon anbringe und schaue, ob das irgendwie hilft.


  • Kann man die Option somit grundsätzlich einschalten?


    Ich habs bei mir produktiv aktiviert und dadurch verbessert. Bei mir sind es aber die langen Kabel von Mic und LS zum Pi.
    Als Teststellung mit kurzen Kabel ist es gut bis sehr gut.
    http://pythonhosted.org/linpho…echo_cancellation_enabled


    Kann jemand mal versuchen liblinphone für den Pi2 zu kompilieren?
    https://wiki.linphone.org/wiki…uilding_the_python_module


    Kann jemand die aktuelle Version vom pjsua als Sipphone testen?


    Kann jemand bitte das hier testen / validieren?
    https://lists.nongnu.org/archi…ers/2015-07/msg00024.html


    Und einen hab ich noch:
    https://sourceforge.net/p/rasp…hread/b2fe01bf/#71d7/9097


    Danke...


  • Kann jemand bitte das hier testen / validieren?
    https://lists.nongnu.org/archi…ers/2015-07/msg00024.html


    Also nachsehen ob neben dem linphonerc die genannte andere Datei liegt?
    Im Prinzip kein Thema, aber ich weiß schon nicht wo dieses linphonerc liegen sollte :D


    Beim Rest kann ich nicht wirklich helfen (hab keine Linux Kiste, und den dritten Punkt kapier ich nicht wirklich (vermute aber man muss Asterisk auf dem Pi laufen haben)).

  • Das grundsätzliche Problem des Echos ist hier beschrieben.



    Der effektiveste Weg, das Echo zu unterdrücken ist eine hardwareseitige Echo cancellation. Die softwarebasierten Lösungen funktionieren ganz oft wohl nicht zufriedenstellend. Bei Linphone für Phyton gibt es nur die oben angesprochene Funktion, die bei mir kaum nennenswerten Vorteile herbeiführt.


    Das Wiki von Linphone selber sagt dazu:


    Code
    1. The echo canceller is disabled because it uses a lot of CPU power which the Raspberry PI does not have.
    2. And it is not really useful for that use case.
    3. the only audio codecs enabled are PCMU and PCMA for the same reason.
    4. Other codecs such as speex or opus require too much CPU if we want to also have the video.



    Sieht also so aus, als kämen wir mit den vorhandenen Bordmitteln hier icht weiter. Ob pjsua bessere Softwarelösungen bereit ist die Frage, aber in jedem Fall dürfte auch diese an der CPU nagen.
    Ideal wäre ein Soundmodul für PI, der das hardwareseitig mitbringt. Aber gibt es sowas und ist es dann auch bezahlbar?
    Wäre das Teil von Wolf Audio ggf. eine Option? Im Datenblatt habe ich nichts zu echo cancellation gelesen, aber die werben mit "Aufbau eines VoIP - Konferenztelefons möglich".


    motom001_new :


    Zitat


    Kann jemand bitte das hier testen / validieren?
    https://lists.nongnu.org/archive/html/li...00024.html


    https://lists.nongnu.org/archi…ers/2015-07/msg00024.htmlWenn ich das richtig verstehe wird da nur der Audio Codec Speex besprochen. Da der von der Fritzbox aber nicht unterstützt wird, hilft das m. E. nich weiter.


    Zitat


    Kann jemand die aktuelle Version vom pjsua als Sipphone testen?


    Ich werde mich vlt. mal dran versuchen, allerdings könnte das meine Fähigkeiten übersteigen, pjsua in DoorPi einzubinden.

  • Zitat


    Wäre das Teil von Wolf Audio ggf. eine Option? Im Datenblatt habe ich nichts zu echo cancellation gelesen, aber die werben mit "Aufbau eines VoIP - Konferenztelefons möglich".


    In meinen Augen ist es keine Option, denn da steht dabei:



    Zitat


    Nur für Raspberry Pi A oder Raspberry Pi B, nicht für Raspberry Pi A+, B+, 2 oder3


    Vielleicht gibt es andere Soundmodule die Hardware Echo cancellation haben.
    In meinem Fall bringt die Echo cancellation von Linphone eine spürbare Verbesserung. Die Frage wäre, woran liegt das jetzt dass es bei mir gut funktioniert und bei anderen nicht :huh:
    Was man in jedem Fall machen sollte, ist die Mikrofon und Lautsprecher Kabel so kurz wie möglich zu halten, und Lautsprecher und Mikrofon so weit voneinander weg platzieren wie möglich. Ich teste morgen noch, ob es was bringt das Mikro von hinten mit schalldichtem Material zu isolieren.
    Weiterhin kann man mit Lautstärke des Lautsprechers und Empfindlichkeit des Mikrofons experimentieren. Je leiser der Lautsprecher und je un-empfindlicher das Mic, desto weniger Echo-Effekt. Hier muss man nicht unbedingt alles auf max haben um immer noch eine sehr gute Qualität zu haben. Ich habe z.B. das Speaker Volume auf 50 von 151. Bei 151 fliegen einem die Ohren weg.

  • In meinen Augen ist es keine Option, denn da steht dabei:


    Es gibt von dem Modul auch eine 2. Version für PI A+, B+, 2 und 3 :)


    Ich habe dann auch noch einmal etwas weiter in den Datenblättern gelesen. Drauf verbaut ist ein DSP Voice Processor (WM5102).
    Der kann u. a. folgendes:

    Code
    1. Programmable audio effects and voice processing functions
    2. - Transmit-path noise reduction and echo cancellation
    3. - Receive-path enhancement and noise reduction
    4. - Wind noise, sidetone and other programmable filters
    5. - Dynamic Range Control, Fully parametric EQs


    Das könnte gut angelegtes Geld sein...


    Mein Mikro hat etwa 10cm Kabellänge, wurde heute in Styropor gepackt und Empfindlichkeit bis kurz vor 0 runter geregelt. Trotzdem ein gruseliger Sound mit Echo :@

  • Okay pula001 - Schick mit bitte einen Bestelllink und Deine Liefer-Adresse per PN und ich kauf das Teil und lass es direkt an Dich liefern.



    Wenn ich das richtig verstehe wird da nur der Audio Codec Speex besprochen. Da der von der Fritzbox aber nicht unterstützt wird, hilft das m. E. nich weiter.


    Eventuell gibt es andere Audio-Codecs, die das beinhalten?



    Ich werde mich vlt. mal dran versuchen, allerdings könnte das meine Fähigkeiten übersteigen, pjsua in DoorPi einzubinden.


    Wenn pjsua richtig installiert ist, dann sollte es schon funktionieren, da die Anbindung schon in DoorPi programmiert ist.
    Hilfestellung zur Installation gibt es eine frühe Version von DoorPi:
    https://github.com/motom001/Do…0a0c156479a5/docs/install

  • Hab noch was zum knobeln gefunden:


    Code
    1. 2016-03-29 21:03:41,416 [INFO] [doorpi.sipphone.from_linphone] Setting echo canceller delay with value provided by soundcard: 0 ms


    Ist ein Eintrag in der Log, wenn man einen Anruf von DoorPi aus startet. Wo kann man für die Soundkarte sowas einstellen? Gibt es da ne ALSA Einstellung, die ich nicht kenne?


    größerer Log-Ausschnitt:


  • Gefunden in der linphonecore




    Gefunden hier http://www.linphone.org/techni…er/linphone/documentation

  • Nochmal zu o. a. Cirrus (ehemal Wolfson) Audio Card:


    Der Support für diese Karte seitens Cirrus ist wohl mehr als dürftig. Cirrus bietet ein fertiges Image für den RPI an, welches die Treiber für die Karte enthält. Dieses datiert allerdings auf 04.2015 und basiert vermutlich auf Noobs.


    Für alle die das Teil testen:
    Ich habe hier eine Seite mit einer Anleitung gefunden, nach der eine Installation (Patch des Kernels) unter Jessie möglich sein könnte (ungetestet):
    http://www.horus.com/~hias/cirrus-driver.html
    dazu gibt es dann auch einen Thread im Forum von elements14: https://www.element14.com/comm…s-to-kernel-31816-and-405



    Ist alles nicht sonderlich elegant, aber es ist das einzige Soundboard mit Mikrofoneingang, dass ich gefunden habe. Dazu mit echo cancellation...



    Allerdings: Wenn das System einmal stabil läuft, gibt es keinen Grund, daran ständig irgendwelche Updates vorzunehmen. Ich werde es wohl mal versuchen, allerdings die Version für einen RPI B.

  • Noch eine software-Variante zur Vermeidung des Echos: Pulseaudio


    Gemäß diesem Artikel ist in Pulseaudio ein Modul eingebaut das sich "Adrian echo canceller" nennt.
    Ggf. wäre dies ja nutzbar.


    Ich versuche das gerade mal zu testen. Habe mit

    Code
    1. sudo apt-get install pulseaudio


    Pulseaudio installiert. Die Ausgabe von aplay -L sieht bei mir dann so aus:


    Als Capture und playbackdevice habe ich unter Doorpi dann "ALSA: default" eingestellt. Ton funktioniert, aber leider noch kein Effekt. Ich weiß aber absolut nicht, ob Audi jetzt auch tatsächlich über Pulseaudio läuft und falls ja, ob dort der Echo canceler auch aktiv wirkt.


    Hat da jemand eine Idee, wie das herauszufinden wäre? Kann man Pulseaudio noch irgendwo konfigurieren?
    Kann DoorPi grundsätzlich mit Pulseaudio kommunizieren?