草庐IT

麦克风的分类和性能参数

山无忧 2023-12-30 原文

1. 前言
我们生活中处处可以见到麦克风的身影,耳机、话筒、手机、智能音箱……但有小伙伴就问了,不同的应用那该咋选麦克风呢,该关注哪些性能参数呢?那今天我们就来聊聊麦克风的那些事儿吧

2. 麦克风简介
麦克风是将声音转换为电信号的设备,广泛应用于电话、语音识别、音乐录制等场合。麦克风可以将声音的变化通过特定的机制转换为电压或者电流的变化,再交给电路系统进行处理。由此可见,麦克风和扬声器执行的是相反的过程。
根据不同的声电转换机制,麦克风分为不同的类型,包括动态麦克风、电容式麦克风和压电式麦克风等。由于输出信号比较微弱,一般麦克风都会配合前置放大器(Preamplifier)一起使用,再与后端电路连接。

3. 麦克风分类
根据声电转换方式的不同,麦克风大致分为以下 7 类:
(1)动态麦克风 Dynamic Microphone

原理:声音扰动圆锥体在磁场中运动,通过电磁感应在线圈上产生电压的变化;
优点:简单紧固、易于小型化、不需额外供电、不易过载(失真);
缺点:灵敏度不如驻极体麦克风、频响和瞬态响应不够好、多数不可以调整方向性;
(2)带状麦克风 Ribbon Microphone

原理:声音扰动磁场中金属带,通过电磁感应在金属带两端产生电压变化;
优点:音质效果好、双向响应效果好、瞬态响应好;
缺点:脆弱易损、输出灵敏度小、高声压易造成损坏;
(3)电容式麦克风 Condenser Microphone

原理:声音扰动改变金属膜板与背板的距离,引起膜板和背板间电容 C 的变化,电容器上存储的电荷 Q 也会随着变化,进而在电阻 R 上产生电压的变化,由此完成声音信号到电信号的转换;
优点:灵敏度高、频响特性好、瞬态响应特性好;
缺点:脆弱、需要外部供电、对湿度敏感、内部可能过载(失真);
(4)驻极体麦克风 Electret Condenser Microphone

原理:驻极体麦克风原理类似电容式麦克风,声音影响金属隔膜与背板距离,电容器上的电荷变化在电阻上产生电压的变化,由此完成声音信号到电信号的转换。ECM 的金属隔膜是永久性的含电荷材料,因此在使用中不必需要额外的偏置电源,但 ECM 的频率响应特性不如电容式麦克风;
驻极体麦克风因其低成本小型化的特点,在手持设备中得到广泛应用。内部集成 FET 前置放大器的驻极体麦克风可以提供很高的性能。下图为电容式麦克风(a)和驻极体麦克风(b)的电路的对比示意图,其中虚线框内代表麦克风本体部分。

典型的驻极体麦克风内部如下图所示,驻极体麦克风的电容不需要外部供电,但是场效应管需要供电。麦克风输出通过大容值电容 AC 耦合到前置放大器。上拉电阻 R 决定麦克风的输出阻抗,并决定场效应管缓冲器的偏置电压;


(5)MEMS 麦克风 MEMS Microphone
MEMS(微型机电系统)麦克风也称麦克风芯片或者硅麦克风。通过 MEMS 工艺将传感膜片直接附着在硅片上,一般 MEMS 麦克风都集成前置放大器。在 MEMS 麦克风中,又分为电容式和压电式两种。压电式比电容式更新。数字 MEMS 麦克风芯片内部集成 ADC,直接输出数字信号,PDM 是最常见的数字麦克风接口方式。
(6)晶体/压电麦克风 Crystal Microphone /Piezo Microphone

原理:利用某些材料的压电效应——即声音造成材料的变形产生电压的变化。如上图所示,晶体麦克风的膜片连接到压电晶体,膜片的振动会造成晶体形变,从而在端子上产生电压(电流)信号;
优点:坚固耐用、信噪比高、启动时间更短、防水防尘性能好;
(7)炭粒麦克风 Carbon Microphone

原理:金属隔板之间填塞炭颗粒,声压作用于隔板,炭粒的振动引起金属隔板之间阻抗的变化。声压越大,金属隔板距离越近,则阻抗越小,反之阻抗越大。由此完成声音信号到电信号的转换。炭粒麦克风是最早期的麦克风,如今已很少使用;

4. 麦克风性能参数
(1)指向性 Directionality
麦克风的指向性,即麦克风对于不同方向声音的响应能力是不同的。麦克风的指向性与麦克风的设计原理有关,常见有全向型、八字型和心型,如下表所示。在曲线上各点施加同样声压,麦克风会产生相同大小的输出。

方向性描述麦克风的灵敏度随声源空间位置的改变而变化的模式。将全向麦克风集成到手机等较大的机壳中后,系统的方向响应可能不是全向的。对于系统设计人员,与定向响应的麦克风相比,利用全向麦克风能够更灵活地设计系统对声学输入的响应。
(2)灵敏度 Sensitivity
麦克风的灵敏度是指其输出端对于给定标准声学输入的电气响应。用于麦克风灵敏度测量的标准参考输入信号为 94 dB 声压级或 1 帕的 1 kHz 正弦波。对于固定的声学输入,灵敏度值高的麦克风比灵敏度值低的麦克风输出的电信号幅度高。麦克风灵敏度通常是负值,因此,灵敏度越高,其绝对值越小。
务必注意麦克风灵敏度参数的单位。如果两个麦克风的灵敏度不是采用同一单位来规定,那么直接比较灵敏度值是不恰当的。模拟麦克风的灵敏度通常用 dBV 来规定,即相对于 1.0 Vrms 的比值(dB)。数字麦克风的灵敏度通常用 dBFS 来规定,即相对于满量程数字输出(FS)的比值(dB)。对于数字麦克风,满量程(全“1”)是麦克风输出数字编码可以表征的最大值。
灵敏度指输入压力与电气输出(电压)的比值。对于模拟麦克风,灵敏度通常用 mV/Pa 来衡量,其结果可通过下式转换为 dB 值。

其中 OutputREF 为 1 V/Pa(1000 mV/Pa)。
对于数字麦克风,灵敏度表示为 94 dB SPL 输入所产生的输出占满量程输出的百分比。数字麦克风的换算公式为以下表达。

其中 OutputREF 为满量程数字输出水平(全“1”)。
较高的灵敏度并不总是意味着麦克风的性能更佳。麦克风的灵敏度越高,则它在典型条件(如交谈等)下的输出水平与最大输出水平之间的裕量通常也越小。在近场(近距离谈话)应用中,高灵敏度的麦克风可能更容易引起失真,这种失真常常会降低麦克风的整体动态范围。
(3)信噪比 SNR
信噪比表示参考信号与麦克风输出的噪声水平的比值。这种测量包括麦克风元件和 MEMS 麦克风封装中集成的 ASIC 二者所贡献的噪声。SNR 为噪声水平与标准 1 kHz、94 dB SPL 参考信号的 dB 差。要计算 SNR,须在安静、消声环境下测量麦克风的噪声输出。该参数通常表示为 20 kHz 带宽内的 A 加权值 (dBA), 这意味着它包括一个与人耳对不同频率声音的灵敏度相对应的校正系数。当比较不同麦克风的 SNR 时,必须确保它们采用相同的加权方式和带宽,在较窄带宽下测得的 SNR 优于在整个 20 kHz 带宽下测得的 SNR。
(4)动态范围 Dynamic Range
麦克风的动态范围衡量麦克风能够做出线性响应的最大 SPL 与最小 SPL 之差。麦克风的 SNR 是衡量等效输入噪声与 94 dB SPL 的参考水平之差,但在该参考水平以上,麦克风仍然有相当大的有用信号响应范围。麦克风能够对 94 dB SPL 至最高 120 dB SPL(即AOP)的声学输入信号做出线性响应。因此,MEMS 麦克风的动态范围等于其 SNR + 26 dB,其中 26 dB = 120 dB(AOP) − 94 dB。
(5)等效输入噪声 EIN
等效输入噪声是将麦克风的输出噪声水平表示为一个施加于麦克风输入端的理论外部噪声源。低于 EIN 水平的输入在麦克风的噪底以下,并且在麦克风能够产生输出的信号动态范围以外。EIN 可以从动态范围或 SNR 参数导出,如下式所示:EIN = 最大声音输入 − 动态范围,即 EIN = 94 dB – SNR。
(6)频率响应 Frequency Response
麦克风的频率响应描述其在整个频谱上的输出水平。频率上限和下限用麦克风响应比 1 kHz 的参考输出水平低 3 dB 时的频率点来描述。1 kHz 的参考水平通常归一化为 0 dB。


频率响应较宽且平坦的麦克风有助于系统设计实现自然、清晰的声音。
(7)总谐波失真 THD
总谐波失真衡量在给定纯单音输入信号下输出信号的失真水平,用百分比表示。此百分比为基频以上所有谐波频率的功率之和与基频信号音功率的比值。
MEMS 麦克风的 THD 利用基波的前五次谐波计算。计算公式如下:

注意不要将此参数与总谐波失真加噪声(THD + N)混淆,后者不仅衡量谐波水平,而且包括输出中的所有其它噪声影响。
(8)线性度 Linearity
线性度表征麦克风电信号输出幅度与输入声压的关系。下图分别为麦克风 THD + N 和线性度的曲线图。


(9)电源抑制 Power Supply Rejection 和电源抑制比 Power Supply Rejection Ratio
电源抑制和电源抑制比是两个类似表征麦克风输出对于电源输入噪声抑制能力的参数。它们测量的是电源噪声影响到麦克风的输出的程度。测量方法有所不同。
电源抑制 PSR 通过将频率为 100 mV 峰峰值,频率为 217 Hz 的方波施加于麦克风的 VDD 引脚来测量。PSR 的结果是在没有声音输入情况下,麦克风经过 A-Weight 滤波器,20 kHz 带宽的输出幅度大小。对于模拟麦克风,PSR 的单位为 dBV(负值),数字麦克风 PSR 的单位为 dBFS(负值)。如果麦克风具有良好的电源抑制能力,则此 PSR 近似等于 A-Weight 滤波器的噪声水平。
电源抑制PSR测量之所以使用 217 Hz 频率,是因为在 GSM 电话应用中,217 Hz 开关频率通常是电源的一个主要噪声源。
电源抑制比 PSRR 测试使用的1KHZ正弦波,峰峰值 200 mV 的正弦波施加到麦克风的 VDD 引脚。PSRR 测量麦克风在频域内对电源噪声的抑制能力。测试 PSRR 的过程中,不需要使用到 A-Weight 滤波器。在麦克风的器件手册中,一般标定 1 kHz 时器件的 PSRR。

数字麦克风和模拟麦克风的 PSRR 参数曲线类似,数字麦克风电源抑制比单位为 dBFS。不过数字麦克风的电源抑制比参数不是严格的比值关系,因为电源噪声输入单位为 dBV,而麦克风输出噪声单位为 dBFS,并非与电源噪声的比例关系。因此,数字麦克风的电源抑制比曲线中使用 PSR。
(10)声学过载点 Acoustic Overload Point
声学过载点指的是麦克风输出 THD 等于 10 % 时输入的声压大小(SPL),通常也称为麦克风的削波点。声压高于 AOP 的输入会造成输出信号严重失真。通过检测输出信号 THD的 波形决定 AOP 的大小,如下图所示。

AOP 和 THD 的测试值并不能正确反映麦克风的输出随着失真增加变化的情况。无论是硬件或软件的削波,都会提供关于音质变化的额外信息。为表征麦克风输出随着 SPL 增加变化的情况,有些麦克风的数据手册会提供麦克风输出随着 SPL 增加在时域内变化的情况,下图表示输入不同声压的 1 kHz 正弦声波,某麦克风输出电压变化的情况。
以上就是麦克风的 10 个性能,指向性、灵敏度、信噪比、动态范围、等效输入噪声、总谐波失真、线性度、电源抑制和电源抑制比、声学过载点,在选择麦克风时候可以着重关注这些性能。

有关麦克风的分类和性能参数的更多相关文章

  1. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  2. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  3. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  4. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  5. ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge - 2

    两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option

  6. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  7. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  8. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  9. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  10. ruby-on-rails - 在 Controller 中干净地处理多个过滤器(参数) - 2

    我有一个名为Post的类,我需要能够适应以下场景:如果用户选择了一个类别,则只显示该类别的帖子如果用户选择了一种类型,则只显示该类型的帖子如果用户选择了一个类别和类型,则只显示该类别中该类型的帖子如果用户没有选择任何内容,则显示所有帖子我想知道我的Controller是否不可避免地会因大量条件语句而显得粗糙...这是我解决此问题的错误方法-有谁知道我如何才能做到这一点?classPostsController 最佳答案 您最好遵循“胖模型,瘦Controller”的惯例,这意味着您应该将这种逻辑放在模型本身中。Post类应该能够报告

随机推荐