Normalise or condition? Noise-floor front-ends for on-board keyword spotting under UAV rotor ego-noise
Organizations: Victoria University of Wellington Wellington, New Zealand · University of Canterbury Christchurch, New Zealand
Abstract
A microphone on the airframe of a small multi-rotor UAV is dominated by rotor ego-noise, so spoken flight commands arrive at negative signal-to-noise ratio (SNR). We study small-footprint keyword spotting (KWS) for a ten-word command vocabulary under real ego-noise, training on one quadrotor and testing on another. Besides per-clip accuracy we measure the streaming false-alarm rate on 4.4 h of continuous rotor noise. We compare classical noise-robust front-ends (CMN, PCEN, spectral subtraction), test-time adaptation, and two front-ends that track the per-band ego-noise floor over the two seconds preceding the decision window and either subtract it (normalisation) or feed it to the network as a second input channel (conditioning). Per clip, all front-ends look alike: +2-3 points on average, up to +14 at -15 dB. On continuous rotor noise they differ sharply. Normalising front-ends fire about ten times more often than plain log-mel at the same threshold and end up below it at a budget of one false alarm per hour (-9 points at 0 dB). Conditioning keeps the baseline's false-alarm rate and turns its gain into detections (+8 points at -10 dB over three seeds); on top of PCEN it gives the best per-clip accuracy and false-alarm rate, and a level-anchored variant is also invariant to the microphone gain. Real drone+interferer recordings expose the remaining failure mode, environmental sounds and bystander speech, which training negatives halve. A single script reproduces all on-device numbers on the NVIDIA Jetson Orin NX flight computer, where the complete pipeline costs 3 ms per 100 ms hop on the CPU.
Figures & tables
| Front-end | Train | 0 | 5 | 10 | 20 | clean | mean | FAR | |||
| log-mel | – | 15.8 | 23.3 | 38.9 | 61.2 | 73.2 | 80.0 | 85.6 | 98.0 | 54.0 | 100.0 |
| log-mel | G | 29.9 | 53.3 | 71.6 | 82.6 | 87.2 | 89.8 | 91.4 | 96.0 | 72.3 | 43.1 |
| NFN | G | 44.5 | 65.7 | 78.3 | 85.2 | 88.2 | 89.6 | 90.7 | 96.6 | 77.5 | 53.8 |
| NPC | G | 41.8 | 64.2 | 78.8 | 86.8 | 90.3 | 91.9 | 93.1 | 96.3 | 78.1 | 30.3 |
| log-mel | E | 42.8 | 69.9 | 83.5 | 89.6 | 92.8 | 94.6 | 95.7 | 96.7 | 81.2 0.2 | 3.6 2.1 |
| CMN | E | 55.3 | 73.2 | 84.0 | 89.6 | 92.6 | 94.2 | 95.3 | 97.0 | 83.5 | 7.3 |
| acc. | hit | FA/h @0.7 | unk. | |||
|---|---|---|---|---|---|---|
| Front-end | mean | 1 FA/h | rotor | non-sp. | speech | /100 |
| log-mel | 81.3 | 82.8 | 1.1 | 27 | 143 | 3.8 |
| log-mel + neg. | 81.6 | 88.7 | 0.0 | 15 | 66 | 6.2 |
| NFN | 83.0 | 75.4 | 9.8 | 40 | 124 | 5.2 |
| NFN + neg. | 82.8 | 60.7 | 12.5 | 24 | 93 | 6.2 |
| NPC-a | 84.0 | 86.1 | 0.9 | 42 | 132 | 4.5 |
| Stage / model | Params | PC | Jetson | Jetson |
|---|---|---|---|---|
| CPU | CPU | TensorRT | ||
| Front-end (log-mel ) | – | 0.10 | 0.57 | n/a |
| BC-ResNet-3 + NPC-a | 57 k | 1.07 | 2.64 | 1.32 |
| BC-ResNet-8 + NPC-a | 349 k | 2.09 | 8.01 | 1.45 |
| BC-ResNet-8 + PCEN+NPC-a | 349 k | 2.02 | 8.10 | 1.44 |
| KWT-1 + NFN | 558 k | 1.56 | 6.61 | 0.75 |
Keyword Spotting
Keyword spotting detects specified words or wake phrases in continuous audio, often on-device under tight latency, power, and false-alarm limits.
See all 24 papers