Noise-cancelling USB microphone built on the Raspberry Pi Pico 2 (RP2350). Multiple I2S MEMS mics + adaptive filtering = clean voice on a €12 budget.
[INMP441 #1 (voice)] ──┐
├── PIO I2S RX (1 state machine, stereo)
[INMP441 #2 (noise ref)]┘ │
DMA → Audio Buffer
│
Core 0: LMS adaptive filter (5% CPU!)
│
TinyUSB UAC → appears as USB mic
LMS (Least Mean Squares) adaptive filter uses the reference mic to model ambient noise, then subtracts it from the voice mic signal in real-time. 10-15 dB noise reduction with 2 mics.
arm_lms_f32, arm_lms_norm_f32, FFT, FIR filters| Part | Price | Notes |
|---|---|---|
| Pico 2 (RP2350) | €5 | Or Pico 2 W for wireless monitoring |
| 2-4x INMP441 breakout | €3-6 | I2S MEMS mic, 61 dB SNR |
| PCM5102A DAC (optional) | €3 | I2S output for monitoring processed audio |
| Total | ~€12-14 |
Alternative mics: ICS-43434 (65 dB SNR, better linearity), SPH0645LM4H (Adafruit breakout).
The hard part is not computation — it's physical placement.
| Device | Mics | Spacing | Application |
|---|---|---|---|
| ReSpeaker 2-Mic HAT | 2 | 58 mm | Voice capture |
| ReSpeaker 4-Mic Linear | 4 | 65 mm | Far-field beamforming |
| Amazon Echo | 7 | ~35 mm circular | Far-field 360° |
| AirPods Pro | 3/ear | ~8 mm | Feedforward + feedback ANC |
| Laptop built-in | 2 | 60-80 mm | Near-field beamforming |
LMS at 16kHz, N=256 taps: Per sample: 2*256+1 = 513 MACs Per second: 8.2 million MACs/s RP2350: 5.5% of one core RP2040: 41% of one core LMS at 48kHz, N=512 taps: Per second: 49.2 million MACs/s RP2350: 33% of one core — still comfortable
Memory: ~16 KB total (audio buffers + filter coefficients + FFT workspace). Non-issue on either chip.
pinebuds on data has the dev environment)Two INMP441s on one I2S bus (3 wires + power):
Pico GPIO → INMP441 #1 (L/R=GND) + INMP441 #2 (L/R=VDD)
SCK → pin X ──┬── BCLK #1
└── BCLK #2
WS → pin Y ──┬── WS #1
└── WS #2
SD → pin Z ──┬── SD #1
└── SD #2
3V3 → VDD both
GND → GND both
One PIO state machine, one DMA channel. Samples arrive interleaved L(voice)/R(noise).
Phase: Backlog. Synergizes with PicoShell (same Pico 2 platform) and turing voice satellite.