Available at Seeed
The ReSpeaker USB 4 Mic Array is the successor of the ReSpeaker USB 6+1 Mic Array. It has better built-in audio processing algorithms than the 6+1 Mic Array, so it has better audio recording quality, although it only has 4 microphones.
- 4 microphones
- 12 RGB LEDs
- USB
- built-in AEC, VAD, DOA, Beamforming and NS
- 16000 sample rate
Audacity is recommended to test audio recording.
On Linux and macOS, the USB 4 Mic Array will just work. On Windows, audio recording and playback will also work without installing a driver. But in order to upgrade the device's firmware or to control LEDs an DSP parameters on Windows, the libusb-win32 driver is required. We use a handy tool - Zadig to install the libusb-win32 driver for both SEEED DFU and SEEED Control (the USB 4 Mic Array has 4 devices on Windows Device Manager).
Make sure that libusb-win32 is selected, not WinUSB or libusbK
The Microphone Array supports USB DFU. We have a python script - dfu.py to do that.
uv sync
uv run python dfu.py --download new_firmware.bin # with sudo if usb permission error
| firmware | channels | note |
|---|---|---|
| 1_channel_firmware.bin | 1 | processed audio for ASR |
| 6_channels_firmware.bin | 6 | channel 0: processed audio for ASR, channel 1-4: 4 microphones' raw data, channel 5: playback |
Note: The flash memory of XVF3000 has updated from 90nm to 65nm, the Jedec ID between the 90nm and 65nm flash memories has a 1-bit different. This will cause the new device not upgradable after you download old firmware(v2.0.0 or below) to an new device. The new firmware(v3.0.0 or above) is already compatible with old device and new device, so we advise customers to use the new firmware when DFU. The new 65nm flash memory device will use new part numbers with a suffix 'A' as the following picture:
| hardware | factory programmed | DFU firmware | outcome | |
|---|---|---|---|---|
| 1 | old device | any | any | DFU succeed, device operates correctly and upgradeable |
| 2 | new device (XVF3000 with a suffix 'A') | 3.0.0 | 3.0.0 or above | DFU succeed, device operates correctly and upgradeable |
| 3 | new device (XVF3000 with a suffix 'A') | 3.0.0 | 2.0.0 or below | DFU succeed, device operates correctly, but not upgradeable |
The USB 4 Mic Array has on-board 12 RGB LEDs and has a variety of light effects. Go to the respeaker/pixel_ring to learn how to use it. The LED control protocol is at respeaker/pixel_ring wiki.
We provide a set of scripts to test and interact with the ReSpeaker Mic Array.
Recent Optimizations included in this repo:
- Modern Package Management: Migrated to use
uvviapyproject.tomlfor fast, isolated dependency setups. - Python 3.10+ Compatibility: Resolved legacy array string errors (
tostringreplaced withtobytes) in the underlyingtuning.pyto support modern Python versions. - Customized LED Control for macOS/Windows: Included the pure Python
usb_pixel_ring_v2.pydriver to bypass compilation issues of the originalpixel_ringon non-Linux systems.
Ensure dependencies are installed via uv sync first.
get_index.py: Find your PyAudio device index.DOA.py: Read the Direction of Arrival angle from the hardware.VAD.py: Read the Voice Activity Detection status.record.py: Record multi-channel audio usingpyaudio(updateRESPEAKER_INDEXbased onget_index.pyoutput. ChangeRESPEAKER_CHANNELSdepending on your flashed firmware).tracking_led.py: A fun interactive acoustic tracking spotlight! It combines VAD and DOA to point the LED ring toward the speaker when voice is detected, and enters a breathing "think" state when quiet. Uses a customized warm amber palette and comfortable brightness.sed_doa_panns.py(New!): High-performance realtime Sound Event Detection using the PANNs (Cnn14) model. Optimized for low latency (~40ms inference) on Apple Silicon CPUs and high accuracy for speech, music, and environmental sounds.sed_doa_htsat.py: Dual-model verification system combining HTS-AT and PANNs for robust event detection (best for noise filtering).
Run them using uv run:
uv run python get_index.py
uv run python DOA.py
uv run python VAD.py
uv run python record.py
uv run python tracking_led.py
uv run python sed_doa_panns.pyThere are some parameters of built-in algorithms to configure. For example, we can turn off Automatic Gain Control (AGC):
uv run python tuning.py AGCONOFF 0
To get the full list parameters, run:
uv run python tuning.py -p
ODAS is a very cool project to perform sound source localization, tracking, separation and post-filtering. Let's have a try!
- get ODAS and build it
sudo apt-get install libfftw3-dev libconfig-dev libasound2-dev
git clone https://github.com/introlab/odas.git --branch=dev
mkdir odas/build
cd odas/build
cmake ..
make
- get ODAS Studio from https://github.com/introlab/odas_web/releases and open it.
The odascore will be at odas/bin/odascore, the config file is at odas.cfg. Change odas.cfg based on your sound card number.
interface: {
type = "soundcard";
card = 1;
device = 0;
}
- upgrade your usb 4 mic array with 6_channels_firmware_6.02dB.bin (or 6_channels_firmware.bin, 6_channels_firmware_12.04dB.bin) which includes 4 channels raw audio data.