麦克风的动态范围、电源抑制比以及频率响应

1.动态范围

麦克风的动态范围是衡量麦克风能够做出线性响应的最大SPL与最小SPL之差,它不同于SNR(相比之下,音频ADC或DAC的动态范围与SNR通常是等同的)。

麦克风的SNR衡量噪底与94 dB SPL的参考水平之差,但在该参考水平以上,麦克风仍然有相当大的有用信号响应范围。麦克风能够对94 dB SPL至最高120 dB SPL的声学输入信号做出线性响应。因此,MEMS麦克风的动态范围等于其SNR + 26 dB,其中26 dB = 120 dB-94 dB。例如,ADMP404的SNR为62 dB,而动态范围为88 dB。

麦克风的动态范围

图1. 模拟麦克风的dB SPL输入与dBV输出的关系

图1显示了声学输入(用dB SPL衡量)与麦克风电压输出(用dBV衡量)的关系。动态范围和SNR显示于这两个刻度轴之间,以供参考。图2利用-38 dBV灵敏度和62 dB SNR的ADMP404来显示这些关系。

麦克风的动态范围

图2. 数字麦克风的dB SPL输入与dBFS输出的关系

图2显示了数字麦克风的dB SPL输入与dBFS输出之间的类似关系。注意,在此图中,120 dB SPL的最大声学输入直接映射到0 dBFS输出信号。只要最大声学输入对应0 dBFS并且设置为120 dB SPL,则数字麦克风始终具有-26 dB的灵敏度。这是由灵敏度的定义(在94 dB SPL下测量)所决定的,而不是可以通过改变麦克风ASIC的增益进行调整的设计参数。

2.电源抑制比

麦克风的电源抑制比(PSRR)衡量其抑制电源引脚上的噪声,使之不影响信号输出的能力。PSRR通过将一个217 Hz、100 mV峰峰值正弦波施加于麦克风的VDD引脚来测量。PSRR测量将给出从麦克风的输出来看,此输入信号衰减了多少dB。此参数之所以使用217 Hz频率,是因为在GSM电话应用中,217 Hz开关频率通常是电源的一个主要噪声源。

麦克风的电源抑制比(PSRR)

典型电源抑制比与频率的关系图

MEMS麦克风的数据手册也会显示100 Hz至10 kHz频率范围内的PSRR。这些麦克风具有出色的低频噪声抑制性能(模拟麦克风小于-70 dBV,数字麦克风小于-80 dBFS)。如上图(选自ADMP404数据手册)所示,PSRR在高频时提高到略低于-50 dB的水平。

3.频率响应

麦克风的频率响应描述其在整个频谱上的输出水平。频率上限和下限用麦克风响应比1 kHz的参考输出水平低3 dB时的频率点来描述。1 kHz的参考水平通常归一化为0 dB。在这些条件下,ADI公司的MEMS麦克风通常具有统一的100 Hz至15 kHz频率响应。

频率响应特性还包括通带内偏离平坦响应的限值。这些值表示为±x dB,说明-3 dB点之间输出信号与标称0 dB电平的最大偏差。

对于ADI公司的MEMS麦克风,低频-3 dB点以下的低频滚降为一阶(6 dB/8倍频程或20 dB/10倍频程),高频-3 dB点以上的高频滚降为二阶(-12 dB/8倍频程或-40 dB/10倍频程)。

麦克风的频率响应

图1. 频率响应模板

麦克风的频率响应

图2. 典型频率响应(实测)

MEMS麦克风数据手册用两幅图来显示此频率响应:一幅图显示频率响应模板,另一个幅图显示典型实测频率响应。频率响应模板图显示整个频率范围内麦克风输出的上限和下限,麦克风输出保证位于此模板范围内。典型频率响应图显示麦克风在整个频段内的实际响应。图1和图2的示例为选自INMP510数据手册的两幅图。

频率响应较宽且平坦的麦克风有助于系统设计实现自然、清晰的声音。

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取麦克风音频率需要使用音频处理的知识,可以通过以下步骤实现: 1. 使用C#中的NAudio库来获取麦克风音频流。 2. 将音频流转换成音频数据,可以使用NAudio库提供的WaveBuffer类。 3. 对音频数据进行快速傅里叶变换(FFT),可以使用NAudio库提供的FFT类。 4. 获取音频数据的频谱信息,可以通过FFT计算得到。 5. 根据频谱信息计算出音频的频率。 以下是获取麦克风音频率的代码示例: ```csharp using NAudio.Wave; using System.Numerics; //创建一个录音机对象 var recorder = new WaveInEvent(); //设置录音机的参数 recorder.WaveFormat = new WaveFormat(44100, 1); //开启录音机 recorder.StartRecording(); //定义一个缓冲区,用于存储音频数据 byte[] buffer = new byte[recorder.WaveFormat.BlockAlign]; while (true) { //读取录音机中的音频数据 recorder.Read(buffer, 0, buffer.Length); //将音频数据转换成WaveBuffer对象 var waveBuffer = new WaveBuffer(buffer); //对音频数据进行FFT变换 var fft = new FFT(); Complex[] result = fft.Transform(waveBuffer.FloatBuffer); //获取音频数据的频谱信息 float[] spectrum = new float[result.Length]; for (int i = 0; i < result.Length; i++) { spectrum[i] = (float)(result[i].Magnitude); } //计算音频的频率 float maxFrequency = 0; float maxAmplitude = 0; for (int i = 0; i < spectrum.Length; i++) { float amplitude = spectrum[i]; if (amplitude > maxAmplitude) { maxFrequency = (float)i / (float)spectrum.Length * recorder.WaveFormat.SampleRate; maxAmplitude = amplitude; } } //输出音频的频率 Console.WriteLine("Frequency: " + maxFrequency); } ``` 需要注意的是,以上代码只是一个简单的示例,实际应用中还需要进行优化,例如对音频数据进行预处理、滤波等,以提高频率计算的准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值