[pulseaudio-discuss] Test and Evaluate Echo Cancellation in an Embedded Device

Caio caiortp at gmail.com
Fri May 13 20:49:44 UTC 2016


Arun,

Your test works very well! tks!
When I listen the cancelled.wav The audio start very low and after the
voice is very very low and some times disapers, now it's time to fix the
mechanical part (speaker / mic) and mic volume.

The audio is cracking , but I think there's some problem in my
configuration (I will need help to fix it).


The log.

Jan 01 02:52:43 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Doing resync
Jan 01 02:52:43 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback after capture (-1638515), drop
sink 104884
Jan 01 02:52:43 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (146059), drop
source 9346
Jan 01 02:52:44 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (13025), drop source
832
Jan 01 02:52:45 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (10100), drop source
646
Jan 01 02:52:46 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (9965), drop source
636
Jan 01 02:52:47 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (10089), drop source
644
Jan 01 02:52:48 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback too far ahead (10024), drop source
640
Jan 01 02:52:49 colibri-imx6-jfl pulseaudio[1051]: E: [alsa-source-HiFi
wm8962-0] module-echo-cancel.c: Playback after capture (-34), drop sink 22


This variable   PULSE_PROP="filter.want=echo-cancel"   fixed the problem.
When I was testing just like I wrote I had problems with echo.

pactl load-module module-echo-cancel source_name=echosource
sink_name=echosink aec_method=webrtc sink_master=mastersink
source_master=mastersource
gst-launch-1.0 filesrc location=some-voice-file.wav ! wavparse !
  pulsesink device="echosink" \
                       pulsesrc  device="echosource" ! wavenc ! filesink
                       location=cancelled.wav


How I can configure webrtc or speex using enviroment vars (PULSE_PROP)?






Thank you very much!

Regards,

Caio Pereira

2016-05-12 0:47 GMT-03:00 Arun Raghavan <arun at arunraghavan.net>:

> On Thu, 12 May 2016, at 01:41 AM, Caio wrote:
> > Hello!
> >
> > I'm working with a embedded linux and I'm using gstreamer to talk with
> > other board (voice call).
> >
> > To test and evaluate my project I'm using the IMX6SABRE Dual Lite Board
> >  (
> >
> http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-processors/i.mx-6-processors/i.mx6qp/sabre-board-for-smart-devices-reference-design-based-on-the-i.mx-6-series:RDIMX6SABREBRD
> > )
> >
> >  have the pulseaudio , speex and webrtc installed in my oard,  but with
> >  my
> > tests I didn't have success with echo cancellation
> >
> > In my testbed I'm using two boards in different rooms, each board has the
> > same softwares, to test the voice call I'm using a script with gstreamer.
> >
> > There's some method to test and evaluate the echo cancellation in
> > embedded
> > environment? Someone has an advice?
> >
> > I'm loading the module-echo-cancel using this command
> >
> > pactl load-module module-echo-cancel source_name=echosource
> > sink_name=echosink aec_method=webrtc sink_master=mastersink
> > source_master=mastersource
> >
> > (I change the webrtc to speex in other tests)
> >
> > The Gstreamer Script (usage ./gstreamer-call.sh ip start)
> >
> >     #!/bin/sh
> >     IPDEST=$1
> >
> >     case "$2" in
> >        start)
> >              echo "Starting gstlaunch"
> >                     gst-launch-1.0 -v \
> >                             pulsesrc device="echosource"  \
> >                     ! alawenc ! rtppcmapay ! udpsink port=4000
> >                     host=$IPDEST
> > &
> >                     gst-launch-1.0 -v udpsrc
> >
> caps="application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)PCMA"
> > port=4000 ! \
> >                             rtppcmadepay ! alawdec ! audioconvert !
> > audioresample ! \
> >                             pulsesink device="echosink" \
> >                     &
>
> This script should work. Can you describe what is failing? And can you
> attach PA server logs as well?
>
> I usually test with something like:
>
>   PULSE_PROP="filter.want=echo-cancel" \
>   gst-launch-1.0 filesrc location=some-voice-file.wav ! wavparse !
>   pulsesink \
>                        pulsesrc ! wavenc ! filesink
>                        location=cancelled.wav
>
> -- Arun
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>



-- 
----------------------------------------------
Caio Pereira
@caio_rtp
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20160513/185c815b/attachment-0001.html>


More information about the pulseaudio-discuss mailing list