← All projectsGitHub
Task-specific AI accelerators

Does block floating point fix the 16-bit FFT scaling problem in an always-on MFCC front end?

research/accel-frontendbfp

A shared data-chosen exponent for the 16-bit FFT in accel-frontend's MFCC path cuts cepstral error to 0.016 to 0.081 of the spread at -60 to -30 dBFS (one shift per stage: 0.35 to 0.72) for about +0.5% modelled energy, but no better than 18 to 20-bit fixed schedules on loud input (synthetic frames, no Speech Commands)

5 tests

What it found

accel-frontend found that fixed per-stage FFT shifts in a 16-bit word either floor quiet speech or overflow loud speech. This project gives the 256-point complex FFT one shared exponent chosen from the data: the block is scaled up to the largest peak a butterfly stage can take (13,573, from the (1 + √2) growth bound) and shifted down by 1 after a stage only when needed. Stored words stay within 16 bits (largest 27,770 over all runs), the butterfly adder needs 17. On the same synthetic voiced frames with a −61 dBFS microphone floor (40 frames per point), cepstral error as a share of cepstral spread is 0.081, 0.060, 0.032 and 0.016 at −60, −50, −40 and −30 dBFS, against 0.715, 0.662, 0.533 and 0.351 for one shift per stage and 0.236, 0.198, 0.120 and 0.051 for a 2-shift schedule that needs 11 to 16-bit adders. At −20 dBFS and above it is about 0.012 to 0.017, no better than fixed schedules that use 18 to 20 bits (0.002 to 0.014): 16-bit rounding sets a floor near 0.01 of the spread. The exponent logic adds 4,608 adds per frame (11,009 to 15,617) and no multiplies, about 0.5% of the front end's modelled energy under accel-frontend's 45 nm constants. Preliminary: those constants were typed from memory of Horowitz (2014) and not re-checked; the audio is synthetic (Speech Commands unreachable), so the metric is cepstral distortion and no keyword accuracy is measured.

A figure from its own output

Figure produced by research/accel-frontendbfp: bfp
accel-frontendbfp/experiments/bfp.png, written by the project's own experiment code.

Paper, code and results

More in Task-specific AI accelerators

All 40 Task-specific AI accelerators projects →

Other research topics

Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1

Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.