Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad AEC performance. Tips? #70

Open
RafigRzayev opened this issue Nov 16, 2022 · 0 comments
Open

Bad AEC performance. Tips? #70

RafigRzayev opened this issue Nov 16, 2022 · 0 comments

Comments

@RafigRzayev
Copy link

Hello, I am using the mic for smart-speaker application.

Microphone is connected to a single board computer via USB. Sound system is connected to 3.5mm audio jack on the microphone for AEC to work. Below is the demonstration of setup:
scheme

I have watched your video showing the AEC performance, and it seems very good. I hoped that I will have similar results, but unfortunately microphone recording gets distorted by the signal emitted through speaker more than on your video. When I compared recording of single-channel firmware vs the first-channel of 6-channel firmware(processed for AEC), the quality of the latter is much better. But still it is not sufficient. I need to understand what is wrong with my setup, and why it doesn't work as in your video.

For my application I am using Linux, and this is what I do for audio settings:

pactl load-module module-remap-source master=alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input master_channel_map=front-left channel_map=front-left remix=false
pactl set-default-sink alsa_output.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.analog-stereo
pactl set-default-source alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input.remapped

Through this, I make sure that only the first channel is used for my voice detection application(clear of noise), and that audio output is streamed into the microphone for the filtering purpose.

  • Below are various logs from pulse-audio regarding sampling rate and etc. Could you please check if it they are ok for good AEC performance?
  • What can I do to improve the noise cancellation?
  • May it be that amplifier induces a delay which worsens the filtering? If yes, what would you suggest?
  • Which tuning parameters could help?

from pacmd stat:

Default sample spec: s16le 2ch 44100Hz
Default channel map: front-left,front-right
Default sink name: alsa_output.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.ag-stereo
Default source name: alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.ichannel-input.remapped

from pacmd list-sources:

  • index: 5
    name: <alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input.remapped>
    driver: <module-remap-source.c>
    flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: RUNNING
    suspend cause: (none)
    priority: 1000
    volume: front-left: 65536 / 100% / 0.00 dB
    balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 1.03 ms
    max rewind: 0 KiB
    sample spec: s16le 1ch 16000Hz
    channel map: front-left
    used by: 2
    linked by: 2
    configured latency: 8.69 ms; range is 0.50 .. 2000.00 ms
    module: 25
    properties:
    device.master_device = "alsa_input.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.multichannel-input"
    device.class = "filter"
    device.description = "Remapped ReSpeaker 4 Mic Array (UAC1.0) Multichannel"
    device.icon_name = "audio-input-microphone"

from pacmd list-sinks:

  • index: 1
    name: <alsa_output.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.analog-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 9549
    volume: front-left: 55000 / 84% / -4.57 dB, front-right: 55000 / 84% / -4.57 dB
    balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max request: 0 KiB
    max rewind: 0 KiB
    monitor source: 2
    sample spec: s24le 2ch 16000Hz
    channel map: front-left,front-right
    Stereo
    used by: 0
    linked by: 0
    configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
    card: 1 <alsa_card.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00>
    module: 8
    properties:
    alsa.resolution_bits = "24"
    device.api = "alsa"
    device.class = "sound"
    alsa.class = "generic"
    alsa.subclass = "generic-mix"
    alsa.name = "USB Audio"
    alsa.id = "USB Audio"
    alsa.subdevice = "0"
    alsa.subdevice_name = "subdevice #0"
    alsa.device = "0"
    alsa.card = "0"
    alsa.card_name = "ReSpeaker 4 Mic Array (UAC1.0)"
    alsa.long_card_name = "SEEED ReSpeaker 4 Mic Array (UAC1.0) at usb-fe3e0000.usb-1, full speed"
    alsa.driver_name = "snd_usb_audio"
    device.bus_path = "platform-fe3e0000.usb-usb-0:1:1.0"
    sysfs.path = "/devices/platform/fe3e0000.usb/usb4/4-1/4-1:1.0/sound/card0"
    udev.id = "usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00"
    device.bus = "usb"
    device.vendor.id = "2886"
    device.vendor.name = "SEEED"
    device.product.id = "0018"
    device.product.name = "ReSpeaker 4 Mic Array (UAC1.0)"
    device.serial = "SEEED_ReSpeaker_4_Mic_Array__UAC1.0_"
    device.form_factor = "speaker"
    device.string = "front:0"
    device.buffering.buffer_size = "192000"
    device.buffering.fragment_size = "96000"
    device.access_mode = "mmap+timer"
    device.profile.name = "analog-stereo"
    device.profile.description = "Analog Stereo"
    device.description = "ReSpeaker 4 Mic Array (UAC1.0) Analog Stereo"
    module-udev-detect.discovered = "1"
    device.icon_name = "audio-speakers-usb"
    ports:
    analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
    properties:

     active port: <analog-output>
    

P.S. If you want I can make a video which shows performance on audacity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant