1
$\begingroup$

I am currently trying to create an Android noise measurement app. I have found that the microphone built into the phone is a digital MEMS microphone and I am having trouble converting the digital data collected by the microphone to sound pressure (Pa).

My question is:

How do I convert digital data from a digital mems microphone to Pa?

$\endgroup$
1

2 Answers 2

2
$\begingroup$

You can't. At least not without a phone-specific calibration procedure. Android has too many variables: pre-amps, microphone transfer function & packaging, low lever driver, "enhancements", OS version, etc.. Sometimes the calibration even depends on the carrier.

It is easy enough to calibrate for a specific phone (model, settings, OS version, carrier, etc.), but that calibration can easily be off by 10dB or 15 dB for the next phone.

$\endgroup$
0
$\begingroup$

If nothing @hilmar mentioned in his answer mattered, then, theoretically,

You’d need to get your hands on:

  • The microphone’s specs (in particular, the sensitivity).
  • The ADC specs.

Then the steps would be:

  1. Find the sensitivity $S_{V/Pa}$. If the sensitivity is given in dBFS, $S_{V/Pa} = 10^{S_{dBFS}/20}$
  2. Convert the digital output $D$ to Volts: for an ADC with $N$ bits and a reference voltage $V_{ref}$: $$V_{out} = \left(\frac{D}{2^N}\right)\times V_{ref}$$
  3. Use this with the sensitivity to convert to pascals: $$Pa = \frac{V_{out}}{S_{V/Pa}}$$
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.