In Python, I am using the library Soundfile (which uses the library libsndfile) for digital sound processing. I am working with different sound files coming from different internet databases, and therefore they have different bit sizes. Either 16, 24 or 32 bit.

If I understood correctly, when these sound files were recorded (with whatever device they were recorded), that device had an ADC with some bit precission. And therefore the amplitudes recorded by that device were mapped to the corresponding ranges:

16 bit: -32768 to +32767

24 bit: -8388608 to +8388607

32 bit: -2147483648 to +2147483647

Does it mean that the audio files with 32 bit have a higher amplitude than the rest? I guess not, right?

Let's assume that all the devices had a microphone with the same sensitivity. Then the only difference is that the audio files recorded with the 24 and 32 bits devices were able to capture sounds louder than the maximum value of 32768, which for that particular sensitivity had a corresponding voltage value of whatever, right?

But, again, if we assume that their microphones had the same sensitivity, a value of amplitude 32768 in a 16-bit precision file, would mean the same loudness as a value of amplitude 32768 in a 24-bit precision file, right?



The fixed point bitwidth representation of an audio signal is not an indication of the physical loudness of the signal. It is just a relative representation of the signal.

ADCs will take in an analog signal with some specified max amplitude, say 2V peak-to-peak, for example. Then, this 2V range is quantized into 256 levels for an 8 bit converter. For a 16 bit converter, that same voltage range could be quantized into 65536 levels, and for 24 bits it is quantized into 2^24 levels.

An ADC is thus normalized with respect to full scale, not to an LSB (i.e. not all ADCs - 8/16/24 bit - have a common LSB representation; otherwise an 8 bit ADC would have full scale that is on the order of a few mV if a 16 bit ADC has full scale of a volt). The max voltage input is mapped roughly to the max digital representation (or close to it, usually). Then, a max value for an 8 bit, signed ADC is 127 and can represent the same voltage as the max value of a 16 bit, signed ADC of 32767.

As an aside, if you have 32 bit samples for audio, this is simply a high-precision representation to avoid introducing quantization noise; no audio will have such good fidelity that it truly requires 32 bits to represent it. That said, 24 bits is not a very convenient data type, so 32 bits is sometimes used for fixed-point representation to do better than 16 bits, which is marginal for high fidelity representation and operation.

Even for a 16 or 24 bit converter, the SNR is not limited by the quantization of the fixed-point representation. The associated analog will be typically dominate the spurious-free dynamic range specification. Do a search for "16 bit audio ADC" and look at the datasheets of various converters if you want to get familiar with typical specs.

Finally, looking at different microphones, you will find varying sensitivities and SNR, of course. The output of a microphone is nonetheless amplified to match the input voltage range of an ADC when sampling the mic output. Imagine the mic's noise being some SNR below the max output level of the mic (plus amplifier). This noise is then sampled by the ADC. An 8 bit ADC may be sufficient for a poor mic (i.e. noise floor of the mic and ADC are comparable), while a 24 bit converter is overkill for all but the best of mics. It is not that the signal out of a high-quality mic is higher voltage; it is that the noise level of the mic is much lower (and closer to the noisefloor of the high-fidelity ADC).

| improve this answer | |
  • $\begingroup$ Great answer, thanks. So, if I assume that all the recording devices had the same ADC, and therefore all the same input voltage range, then their amplitudes are comparable because they would be in the same dBFS for that specific ADC device, right? $\endgroup$ – sdiabr May 10 '18 at 10:18
  • $\begingroup$ For the most part, yes, though most ADCs will support a couple of reference voltages or ranges that can somewhat change the input voltage range. The range of reference voltages is usually less than 6 dB (usually quite less - maybe 2 dB), and there is a preferred reference voltage - and associated input voltage range - that gives best achievable SNR. $\endgroup$ – user35336 May 10 '18 at 13:45
  • $\begingroup$ Thanks @msm . And then, when I read the files using the mentioned library and they are mapped to the (-1,+1) range, do you know how is that range determined? Is it determined by the ADC range of my soundcard? $\endgroup$ – sdiabr May 11 '18 at 14:22
  • $\begingroup$ My guess is that the sound files are stored with a defined "full scale" that is then mapped to your numeric range. The full scale in voltage is defined by the soundcard. Best way to characterize it is to feed a known voltage test signal (e.g. 1 kHz) into the card and see what you get for numeric values. I would also vary amplitude at the input to see whether the library normalizes to the max value seen or simply passes on samples with a fixed scale. $\endgroup$ – user35336 May 11 '18 at 23:22

It is impossible to say anything about any of those assumptions, in the absence of more information.

Consider the best-case scenario where you have a single microphone and you use it for all measurements, but you can select between 8-bit and 24-bit ADC conversion. You have two possibilities:

  • The maximum value that can be recorded without saturation is the same for 8-bit and 24-bit. In this case, 24 bits can give you more resolution, which decreases the quantization noise.

  • The maximum value that can be recorded is increased for the 24-bit converter. In this case, you increase the dynamic range, and very likely will also have an increase in resolution, although not as much as in the previous case.

Having different microphones and unknown audio processing pipelines in the recorder only increases the uncertainty.

| improve this answer | |
  • $\begingroup$ Looking at the second possibility that you mention. Then the maximum possible value obtained for the 8-bit, i.e. 128, would still be a 128 (or approx, depending the precission step) if the same sound is recorded with 24-bit precission? $\endgroup$ – sdiabr May 1 '18 at 15:57
  • $\begingroup$ Not in general. You would need a very specific dynamic range to have that happen. $\endgroup$ – MBaz May 1 '18 at 16:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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