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

Arun Raghavan arun at arunraghavan.net
Thu May 12 03:47:05 UTC 2016


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


More information about the pulseaudio-discuss mailing list