practical estimate for ICS-43432 / ICS-43434:
| Sound at mic | Expected I2S level | CNN detection efficiency |
|---|---|---|
| 120 dB SPL | 0 dBFS | Clipping, bad for AI |
| 100 dB SPL | −20 dBFS | Excellent |
| 94 dB SPL | −26 dBFS | Excellent |
| 80 dB SPL | −40 dBFS | Very good |
| 70 dB SPL | −50 dBFS | Good |
| 60 dB SPL | −60 dBFS | Medium/good |
| 50 dB SPL | −70 dBFS | Weak, needs filtering/FFT |
| 40 dB SPL | −80 dBFS | Poor, only if quiet background |
| 30 dB SPL | −90 dBFS | Near mic noise floor, unreliable |
For drone CNN detection:
| I2S level | Practical CNN result |
|---|---|
| −20 to −45 dBFS | Very strong detection |
| −45 to −60 dBFS | Good detection if trained well |
| −60 to −70 dBFS | Possible with band-pass + FFT/log-mel |
| −70 to −80 dBFS | Weak, many false detections |
| Below −80 dBFS | Usually not reliable |
Best target for your drone system:
keep drone signal around −40 to −65 dBFS at the mic input.
in our code : I2S mic, the important one
int32_t v8 = raw[i] >> 8; // Because the mic audio is usually 24-bit inside 32-bit I2S.
24-bit sample min = -8,388,608
24-bit sample max = +8,388,607
Based on your code, raw[i] is int32_t, so absolute theoretical range is:
| Value in code
|
Minimum possible | Maximum possible |
|---|---|---|
raw[i] |
−2,147,483,648 | +2,147,483,647 |
raw[i] >> 8 |
−8,388,608 | +8,388,607 |
raw[i] >> 16 |
−32,768 | +32,76 |
24-bit sample min = -8,388,608
24-bit sample max = +8,388,607
dBFS means decibels relative to full digital scale.

RMS_sample |
Average audio signal strength |
Full_scale |
Maximum possible digital value |
For 16-bit audio:
|
1 |
Full_scale = 32768 |
Example:
|
1 2 |
RMS_sample = 11313 Full_scale = 32768 |
Calculation:
|
1 2 3 |
dBFS = 20 × log10(11313 / 32768) dBFS = 20 × log10(0.345) dBFS ≈ -9.24 dBFS |
So the signal is 9.24 dB below maximum digital level.
getting the rms RMS_sample
RMS = sqrt( average(sample²) )
For real-time I2S mic RMS, use a window of:
| RMS samples | Time at 16 kHz | Use |
|---|---|---|
| 128 | 8 ms | very fast, noisy |
| 256 | 16 ms | good real-time level meter |
| 512 | 32 ms | better stable RMS |
| 1024 | 64 ms | very good for mic/audio level |
| 1600 | 100 ms | good for AI / drone detection |
| 2048 | 128 ms | smoother, more delay |
how to estimate SPL from your samples
https://d17t6iyxenbwp1.cloudfront.net/s3fs-public/2026-04/ds-000038-ics-43432-datasheet.pdf?VersionId=veAhamtZ3HRY0lMilS5lPSHZqZUVD.rR