[pulseaudio-discuss] Using PulseAudio's echo cancellation for a voice assistant

Arun Raghavan arun at arunraghavan.net
Thu Mar 25 02:50:56 UTC 2021


On Sat, 6 Mar 2021, at 1:09 AM, Giovanni Campagna wrote:
> Hello all,
> I'm the developer of Almond (https://almond.stanford.edu), an open-
> source voice assistant, that is, an application that listens for
> commands from the user in voice (continuously until a specific word is
> heard) and then executes actions and replies.
> Our assistant makes use of PulseAudio for audio frontend processing. I
> have enabled echo cancellation by setting "filter.want=echo-cancel" on
> both the record and playback streams, and the echo cancellation modules
> seem to load correctly, but it seems that echo cancellation is only
> performed between those two streams. Music or other audio that is not
> assistant speech will not be echo cancelled.
> For the voice assistant use case, we would like to echo cancel against
> all outputs currently playing from the speaker where we're recording
> audio, so we have the clearest input from the user to convert to text.
> Is it possible to implement that using PulseAudio? What would be the
> best way to do so?
> Thanks in advance for the kind reply, and best,

For your sort of use-case, a static configuration to load module-echo-cancel and route the outputs you want to cancel to the echo-cancel sink should work better than using the filter.want property (which you'll need to set on _all_ streams that you intend to have participate in echo cancellation).


More information about the pulseaudio-discuss mailing list