xiongyihui / notes

Notes
https://xiongyihui.github.io/notes/
3 stars 0 forks source link

从声音到PCM数字信号 #10

Open xiongyihui opened 6 years ago

xiongyihui commented 6 years ago

正在研究麦克风阵列,用的是模拟麦克风+ADC的方案,想要获得信噪比尽可能高且不失真的声音信号。这里面的关键点是配置ADC的模拟增益和数字增益,有时候需要动态控制,即自动增益控制(AGC,Automatic Gain Control)。要搞清楚怎么配置ADC的模拟增益和数字增益,这就需要搞清楚声音转换为PCM数字信号的过程,了解麦克风和ADC噪声的影响,弄明白ADC前置放大的配置,其中涉及诸多的概念和单位(诸如dB SPL、dBV、dBFS等),花了不少时间弄明白,还是写成文档记录下来。

image

声音和声压

声音是振动引起介质(空气、水等)发生疏密变化而形成的一种纵波。

声音的性质包括波长、频率和声压(sound pressure)等,其中,声压用来衡量声音的强度。声波在介质中传播时,介质疏密程发生变化,区域性产生压强变化,此即为声压。

image

Sound pressure diagram:

  1. silence;
  2. audible sound;
  3. atmospheric pressure;
  4. sound pressure

声音的强度也可以用介质中分子或原子的振幅(particle amplitude)来衡量,但通常用声压衡量声音的强度(因为声压容易测量得多?)。

人耳可感知到声压范围很广,包括20uPa到X,通常以对数尺度分贝(dB)表示声压级SPL。

L = 20 * log10 (p / p0) dB

在空气中,p0 = 20 uPa,这是人耳能感知到最小声压(1kHz)

image

模拟麦克风

麦克风把声音信号转换为电信号,其中模拟麦克风是将声压映射到电压,一个典型模拟麦克风的参数像这样:

param test condition value
灵敏度 (Sensitivity) 94 dB SPL sine wave -22 dBV / Pa
信噪比 (SNR) 94 dB SPL sine wave 59 dB
AOP (Acoustic Overload Point) THD 10%

灵敏度和信噪比都是在94 dB SPL (即1Pa) 声压正弦波下测量的,因此麦克风的输出底噪(Noise Floor)为 -22 - 59 = -81 dBV,等效输入噪声声压为 35 dB SPL(这里假设噪声全为麦克风固有噪声,94 dB SPL正弦波的谐波失真忽略不计)。 麦克风的信噪比越大越好。麦克风的灵敏度需要和ADC的配合好,相对来说,麦克风的灵敏度越高越好,因为相当于系统的前置放大越靠前,受到后面干扰的影响就更小。

ADC

模拟麦克风的输出电压通过ADC转换为PCM信号,为了让信号失真小,ADC的有效分辨率(dBV)应小于麦克风的底噪(dBV)。