Anderer Echo Canceller (OSLEC) im mISDN möglich?

Ich fasse mal den aktuellen Status vom Open Source Line Echo Canceller (OSLEC) & mISDN zusammen:

Leider gibt es z.Z. nur Patche, um diesen in Zaptel zu integrieren. Wo dieser aber wunderbar funktioniert (mit einer TDM400P getestet). Der mit abstand beste open source echo canceller!

Den jetzt in mISDN... Hat das eventuell schon jemand geschafft oder wünscht sich diesen auch im mISDN?

Laut Beronet steht der oslec leider nicht auf deren Zeitplan. Hier müsste man also selbst Hand anlegen.

Hier ein kleiner hint von crich zu oslec:
http://www.isdn4linux.de/pipermail/isdn4linux/2007-July/003033.html
i think oslec is easier to integrate than SoftEcho, just have a look at
the existing zaptel echocancelers, i think oslec has the same interface.
look for dsp_mg2ec.h and dsp.h.

Und hier von jemand anderem:

http://www.mail-archive.com/[email protected]/msg00364.html
I don't have time now :-( but someone with a little time can just watch inside oslec zaptel patch and try to port to misdn; the core routine seems "echo_can_update" and it seems we just need to add the OSLEC version in place of one of the old ones:

mercurius:/usr/src/asterisk/CORE-1.4/mISDN-1_1_5# grep -r echo_can_update .

./drivers/isdn/hardware/mISDN/dsp_mg2ec.h:static inline short echo_can_update(struct echo_can_state *ec, short iref, short isig) ./drivers/isdn/hardware/mISDN/dsp_mec2.h:static inline short echo_can_update(struct echo_can_state *ec, short iref, short isig) { ./drivers/isdn/hardware/mISDN/dsp_kb1ec.h:static inline short echo_can_update(struct echo_can_state *ec, short iref, short isig) ./drivers/isdn/hardware/mISDN/dsp_cancel.c: rxlin = echo_can_update(ss->ec, txlin, rxlin);

Binary file ./drivers/isdn/hardware/mISDN/dsp_cancel.o matches
Binary file ./drivers/isdn/hardware/mISDN/mISDN_dsp.o matches
Binary file ./drivers/isdn/hardware/mISDN/mISDN_dsp.ko matches
 
Patch: OSLEC echo canceller

Hallo zusammen,

habe mal einen Patch gegen den aktuellen GIT-Baum vom mISDN geschrieben.
Compiliert und ist ansonsten völlig ungetestet :)

http://peter.schlaile.de/mISDN/mISDN_oslec_patch

Wer es ausprobiert, möge Ergebnisse bitte posten.

Viel Spaß,
Peter Schlaile
 
Funktioniert wunderbar, im ersten Test war eine deutliche Verbesserung zu MG2 zu erkennen :)
Allerdings muss noch die Zeile
EXPORT_SYMBOL(oslec_hpf_tx);
aus der oslec_wrap.c, sonst depended das mISDN_dsp_oslec auf sich selbst.

Um den oslec zu aktivieren muss das modul geladen werden und der Eintrag
pipeline=oslec
in die [default]-section oder eine Port-Section der misdn.conf.

Gruss,
Michael
 
:) mensch leude... ich texte seit tagen den Herrn David Rowe zu, wie cool doch
nen oslec patch für misdn wäre, und dann schmeißt einer hier so mal den Patch rein! Danke Peter Schlaile!

Also Leude, kräftig testen. Und nicht zögern Herrn Rowe Ergebnisse oder Verbesserungsvorschläge zu senden. Oder Ihm einfach nur mal danke für diesen EC zu sagen. Is ne´n echt netter Kerl.
 
Danke für das Feedback!

Ich habe mal den ganzen Export-Symbol-Block rausgenommen, da er sowieso für mISDN nicht gebraucht wird.

Aktualisierter Patch ist an der gleichen Stelle.

Werde das Ding heute selbst mal testen :)

Viele Grüße,
Peter Schlaile
 
... nur irgendwie werde ich das Echo immer noch nicht los.

Kann mich mal jemand erhellen?

Wie zum #$%? bekomme ich dieses verdammte Echo von einem Headset (über SJ-Phone -> Asterisk) oder alternativ Siemens Gigaset C450IP weg?

Das Echo bekommt jeweils nur die Gegenseite mit etwas Verzögerung ab, was gerade bei Kundengesprächen extrem nervt, da man selbst es gar nichts mitbekommt.

Den Trick mit Lautstärke runterregeln kenne ich schon, aber das geht bei lauter Umgebung auf Dauer auch nicht wirklich gut.
-----------------------------------

Hat sich erledigt. OSLEC braucht einfach etwas Zeit zum Pegeln, daher wird man beim kurzen Reinpfeifen in das Mikro an etwas Echo nicht vorbeikommen...

Viele Grüße,
Peter Schlaile
 
Zuletzt bearbeitet:
mgernoth schrieb:
Um den oslec zu aktivieren muss das modul geladen werden und der Eintrag
pipeline=oslec
in die [default]-section oder eine Port-Section der misdn.conf.

Ich brauche wohl erhellt zu werden, denn ich kriegs hier (Asterisk 1.4) nicht zum laufen. Den Patch habe ich eingespielt, mISDN neu installiert und gestartet und die misdn.conf geändert. All das funktionierte ohne Auffälligkeiten.

Asterisk meint dann allerdings beim neustart dazu:
Code:
[Aug 29 09:42:17] WARNING[12684] misdn_config.c: misdn.conf: "pipeline=oslec" (section: default) invalid or out of range. Please edit your misdn.conf and then do a "misdn reload".

Was habe ich vergessen? Muss ich noch was am misdn-code von Asterisk 1.4 patchen?

Gruss,
Sachmet.
 
Hi,

ich entnehme der Fehlermeldung mal, daß Du mISDN 1.1.5 gepatcht hast.

Da mußt Du eigentlich sonst nix machen.

(wenn dmesg |grep OSLEC etwas liefert, dann hast Du soweit schon gewonnen.)

Ich kann übrigens noch empfehlen, txgain=-1 zu setzen.

Der Volume-Patch unter

http://peter.schlaile.de/mISDN/

hilft vielleicht noch etwas, wenn Du nicht zu leise werden willst...

Viele Grüße,
Peter
 
@peter

stelle die Patche doch auch in die isdn4linux.de und misdn.org Mailingliste rein. Eventuell kommen dann noch ein paar Tipps für's finale Finetuning.

Mit meinen snom320 (Firmware 6.5.12) und txgain=-1 wird jetzt fast ganz ok gecanceled.

Werde jetzt auch noch den volume_patch reinmachen und hier noch das Optimum auszupegeln.
 
@peter

Ja, ich habe mISDN 1.1.5 gepatcht - und ja, dmesg zeigt an, das OSLEC benutzt wird:
Code:
mISDN_dsp: Audio DSP  Rev. 1.29 (debug=0x0) EchoCancellor OSLEC dtmfthreshold(100)
mISDN_dsp: DSP clocks every 64 samples. This equals 2 jiffies.
Dann ist demnach alles in bester Ordnung?

Danke für den Patch!

Gruss,
Sachmet.
 
@Sachmet:

was das "patch läuft jetzt bei Dir" angeht: ja.

Ob all Deine Echo-Probleme jetzt weg sind, mußt Du selbst beurteilen :)
David Rowe ist über Feedback immer dankbar, falls es nicht gerade Akustikecho ist (Mikrophon fängt Signal aus dem Raum auf, weil z.B. der Lautsprecher vom Headset zu laut eingestellt ist).

Wobei ich ihn gerade dazu überreden möchte, doch noch einen Akustik-Echo-Cancellierer zu schreiben...

@wildzero:

isdn4linux habe ich mal gepostet, misdn-liste ist irgendwie tot. Subscribe tut nicht und Archiv ist letzter Stand erster August...

Viele Grüße,
Peter
 
hmm hmm hmm...

Ich habe jetzt zum vergleichen den oslec auch mal in den Bristuff gepatch
Anleitung siehe: http://www.ip-phone-forum.de/showthread.php?t=138981

Und mit exakt gleicher Hardware wieder auf die gleichen analogen Telefone angerufen. Ergebnis: Bristuff mit olsec = 100% Echo frei und 1A Sprachqualität!

Wohingegen mISDN mit oslec nur zu 70% Echo frei ist und das auch nur mit tweaks wie txgain=-1. Nur 70% Echo frei heißt , dass einzelne Sprachfetzen, also die erste laute Silbe z.B. nicht sauber gecancelt wird.

Mir scheint, dass der oslec irgdwie auf Zaptel hin optimiert ist, und <wildemutmassung> der Audiotransport durch:
chan_misdn -> mISDN -> HFC-Karte

grundsätzlich irgendwie etwas lahmer ist als bei (BRIstuffed):
chan_zap -> Zaptel -> HFC-Karte

und daher die Kombination chan_misdn/mISDN einfach auch Echo anfälliger ist, bzw. es den EC's es schwerer macht sauber zu arbeiten. </wildemutmassung>

Aber der bristuff-patch ist ja halt so ding... anders Thema.
 
Ich habe den patch jetz auch mal eingespielt. Kann man irgendwie ein paar Statistiken abrufen ? Oder sehen ob es läuft ? Habe leider keinen direkten
Ansprechpartner der mir echo´s produziert ;) Echo´s sind bei mir nur sporadisch.

cat /proc/oslec/info
etc.
geht bei mir irgendwie nich.


Bekomme immer nur

"no echo canceller being monitored - make a new call"

Gruss,

Jörg
 
cat /proc/oslec/info geht nicht. Der oslec läuft per peters patch nicht als kernelmodul, sondern ist direkt im misdn_dsp eingebunden.

Um Echo zu bekomen muss du nur ein Analogtelefon über SIP <-> mISDN <-> Analogtelefon anrufen. Einmal mit und einmal ohne Echocanceller. Am besten zwei Extenesions anlegen:

exten => 123,1,Dial(misdn/g:tcom/123/!e) ;Ohne EC

exten => 456,1,Dial(misdn/g:tcom/456/e) ;Mit EC

Ich selbst habe zum testen ein Anlogtelefon an einem ISDN/Analogwandler (DeTeWe TA33) an einem internen misdn-S0 hangen.
 
Gut dann kann ich ja das modul wieder entladen ;)

Leider habe ich hier keine Möglichkeit mit a/b Adapter da ich keinen habe. Wir leben hier schon im voll digitalen Zeitalter ;)

Gruss,

Jörg
 
Ich hatte heute wieder echos drin. Ich glaube aber irgendwie das ich was falsch konfiguriert habe. Evtl. kann mich ja jemand erleuchten.

Habe hier hfcmulti und hfcpci geladen.

Code:
Sep  7 14:58:03 gw kernel: mISDN_dsp: Audio DSP  Rev. 1.29 (debug=0x0) EchoCancellor OSLEC dtmfthreshold(100)

gilt das dsp modul dann für beide karten ?

Wenn ich ein misdn reload unter asterisk mache kommt folgende Fehlermeldung.

Code:
gw*CLI> misdn reload
Reloading mISDN Config
  == Parsing '/etc/asterisk/misdn.conf': Found
Sep 11 09:14:52 WARNING[19641]: misdn_config.c:664 _build_port_config: misdn.conf: "pipeline=oslec" (section: dialout) invalid or out of range. Please edit your misdn.conf and then do a "misdn reload".
Sep 11 09:14:52 WARNING[19641]: misdn_config.c:664 _build_port_config: misdn.conf: "pipeline=oslec" (section: dialin) invalid or out of range. Please edit your misdn.conf and then do a "misdn reload".

Scheinbar wird die option einfach ignoriert. Liegt hier mein Fehler ?

Gruss,

Jörg
 
Die option 'pipeline=' gibt es erst in der Version 1.2, daher kriegst du mit der aktuellen 1.1.x eine Fehlermeldung.

Bei mir sind seit Oslec die Echos auch fast gänzlich weg. Einzig am Gesprächsanfang höre ich sie manchmal noch kurz.

Gruss,
Sachmet.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.