喇叭正反相位测试音频_FIR滤波器能给音频扩声带来怎样的帮助?

随着数字音频的快速发展,近些年在音频扩声领域,经常能听到音频技术人士讨论FIR数字滤波器,有些说法和厂家的宣传难免有些过于神化,有些厂家的技术工程师竟然宣称,自己的FIR滤波器能把每只扬声器或者整组扩声系统的相位优化到接近于0°!(在某第三方测试软件的界面上相位特性近似一条直线)。

f8750386ab96d67a8039437cbec503b7.png

各位,我们都知道不同频率的波长是不同的,要把20Hz-20KHz的频率相位在同一扩声环境下统一归零?我认为这是不太现实,为什么这么说呢?我们用钟表来打个比喻:假设钟表上的秒针、分针、时针,分别代表不同的频率(或者波长),钟表只有在0点或者12点钟的那一刻相位是归零的。其他任意时间轴都不可能完全归零,也就好比100Hz、1kHz、10KHz只要在同一时间和空间里面做工,任一频率都会以不同的频率周期在360°的周期内循环。在某一时间轴上,不同频率所处的相位角是不同的。

FIR滤波器说到底能给音频扩声带来什么样的帮助呢?首先我们要问什么是FIR滤波器?和传统IIR的滤波器有什么区别或者特性?

我们先来了解一下滤波器的特性。

1、低通滤波器

从0~f1频率之间,它可以使信号中低于f1的频率成分通过,而高于f1的频率成分受到极大地衰减。

ffe50dd823b776f93786a90bdfe89ec0.png

2、高通滤波器

与低通滤波相反,从频率f1~∞,其幅频特性平直。它使信号中高于f1的频率成分几乎不受衰减地通过,而低于f1的频率成分将受到极大地衰减。

ad290bc2dc2a7b9f4f80328fa23e1c9b.png

3、带通滤波器

通频带在f1~f2之间。它使信号中高于f1而低于f2的频率成分可以通过,而其它成分受到衰减。

7b91d8709049e7e99d6f2b53c07ad98f.png

4、带阻滤波器

与带通滤波相反,阻带在频率f1~f2之间。它使信号中高于f1而低于f2的频率成分受到衰减,其余频率成分的信号几乎不受衰减地通过。

bd63a130a7235ab19486ed6ad8bb05f1.png

我们常用的PEQ、GEQ也在近似于带通滤波器和带阻滤波器上演变而来。仅滤波器而言,对于某环境下的扩声系统的幅频特性是很容易做出变量,也就是我们比较关心的频响曲线的平滑性,通过增益和衰减能快速的对过多或者过少的某些频率进行修整,从而达到人儿听觉所需的频率响度值。但是,很多时候我们会发现,即使听觉响度的幅频特性满足了预设值,但是实际听感却并不满意(比如明显感觉扩声系统在还原声音的时候存在离散性、脱节、动态欠佳等)。这种现象除了扩声系统本身存在一定的缺陷之外,同时跟扩声环境也密切相关。

那么在实际扩声应用中对系统造成上述缺陷的原因有哪些呢?

1、扬声器本质的缺陷,大部分扬声器都是有2个以上的喇叭单元组成,喇叭与喇叭之间相位设计、喇叭与箱体的结构设计、分频网络的设计等等,都会对扩声系统造成劣化;

2、扩声系统的架构,音源从混音台到功放再到扬声器,整个路由的系统架构也很容易对整个扩声系统造成劣化的因素存在;

3、扩声环境因素,很多扩声环境都对声音存在干涉或者破坏,甚至环境温度和空气湿度都会对声音不同频率造成非线性变量;

4、扩声系统相频特性非线性失真和环境多次反射产生的多个声源衍生的相位关系相互干涉。

自从数字音频在应用中得到普及之后,传统的IIR滤波器似乎已经不能满足我们的要求,因此FIR滤波器也就被炒的风生水起。那么IIR型滤波器与FIR型滤波器有什么本质区别呢?为什么没有跟数字IIR滤波器同时诞生呢?

1、IIR滤波器,是无限脉冲响应滤波器,又称递归型滤波器,即结构上带有反馈环路。

特点:

  • IIR数字滤波器的系统函数可以写成封闭函数的形式,具有反馈回路;
  • IIR数字滤波器的相位非线性,相位特性不好控制,随截止频率变化而变化;
  • IIR滤波器有历史的输出参与反馈,同FIR相比在相同阶数时取得更好的滤波效果;
  • IIR数字滤波器采用递归型结构,由于运算中的舍入处理,使误差不断累积,有时会对信号产生微弱的寄生振荡。

2、FIR滤波器,是有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是相对稳定的系统。  

特点:

  • FIR滤波器的最主要的特点是没有反馈回路,稳定性强,故不存在不稳定的问题;
  • FIR具有严格的线性相位,幅频特性随意设置的同时,保证精确的线性相位;
  • FIR相对IIR滤波器而言,相同性能指标时,阶次较高,对CPU的性能要求较高。

3、两者的区别

稳定性:由于FIR滤波器没有反馈回路,稳定性要强于IIR;

相位特性:FIR为线性相位延迟,IIR为非线性相位延迟。

运行平台:IIR滤波器成本更低,可以采用模拟元器件搭建,也可以用普通IC芯片来实现;而FIR如果采用传统芯片来设计的话,系统延时将会远远大于IIR的系统延时,好在现在FPGA芯片在很多大数据运行和交换的平台上得到广泛应用,基于FPGA运行平台上可实现并行计算的功能,从而实现高阶FIR滤波器的架构,而且还能保证极低的系统延时。

上面我们提到,滤波器能改变幅频特性,能把频响曲线处理的相对平滑,采用IIR滤波器来改变滤波器的参量,同时也会对相频特性造成变化,相频特性的失真不仅是产生相位延时,数字音频都是基于算法来实现因果关系,如果系统中的滤波器在一个失真信号的基础上去计算的话,那么结果一定也是不理想的。

既然FIR滤波器相对IIR滤波器有诸多优点,那么为什么到今天却并没有在实际应用中得到普及呢?目前在音频领域已经有一些厂家研发出具备FIR滤波器的软硬件,在实际应用过程中,目前有很多争议,有些产品在应用过程中还需要第三方软硬件的配合才能应用到系统中去,有些FIR的阶数不够高,还不能处理全频段的信号,尤其频率越低越难以处理。有些加载了FIR滤波器,使整个系统产生巨大延时(十几毫秒甚至几十毫秒),在现场扩声系统中是无法接受的。

当然,FIR滤波器也不是万能的,音乐始终是归纳为艺术范畴,扩声系统的功能也是要为音乐艺术服务的,好的扩声系统或者的好听的音乐艺术,绝非仅靠好看的频响图就能实现完美的。

俗话说,世间万物都得讲究个阴阳平衡,尤其对于扩声系统的处理过程中,能用简单的方法处理好的系统,千万别整复杂了,过度的依赖FIR滤波器,其实是一种不自信的表现,刚才说了,万物讲究平衡,当你通过某些手段获得一定收货的时候,那么同时你也一定会失去某些不想失去的东西。好比我们在使用FIR滤波器,越来越多的工程师都喜欢追求更高的数字采样率和比特率,觉得参数越高就越精准,数字音频的软硬件对于自然声源来讲,在AD/DA过程中,过度的采样、量化、处理,反而会让声音的本质属性变得本末倒置;FIR滤波器也是如此,如何把控FIR处理的尺度是非常关键的,过度的FIR处理,可能会让声音变得更“干净”,但是很大程度上也会失去一部分应有的“味道”;就好比一个演员要上舞台表演,其实恰到好处的化化妆就非常好了,干嘛非要整个容再上去?

在过去的两年多时间里面,我们对“北京赛因公司”的APC460L这台FIR滤波器,可以说是了解比较深刻的。说到FIR处理尺度把控,我们在APC460L应有的过程中,总结了几点经验给大家分享一下。

一、测量前正确设置

其实任何软件,在应用前都需要详细了解其特性,在测量前,首先要设置一个合适的信号电平和测量

话筒的拾音比例,过大或者过小的电平值都会让FIR滤波器产生“误判”。

f7edb82b21402ff742e9402ef4295369.png

二、如何选择最佳测量位置和如何架设测量话筒?

对于立体声扩声系统来讲,如何预设拾音话筒的位置、距离、高度、以及拾音话筒的方向?都会对测量结果产生“误判”,为了更客观的对直达声和反射声进行采样,建议测量话筒于地面保持垂直状;话筒头高度接近人耳位置。

61c7ce2a87badc1e17db1b030ab8d57b.png

三、如何判断测量的客观性?

4aeb0a822e0b8bd2580009e70bc8fbb3.png
32cb29c5f1f258f58677451f42555ec4.png
d50623764e2f06d7cd6415db9d1bfe6c.png
0c29881969e802ad6b6562383de901ba.png

总结:测量信号电平和测量话筒摆放的重要性。

1、如果测量电平过低,对采样精度不够,计算结果不够客观;

2、如果测量电平过高,会引起FIR过度处理,尤其对高频的过度处理。

3、为什么建议测量话筒与地面保持90度垂直状态?是因为APC不仅要对扬声器系统拾取信号,同时还需要结合扩声环境的反射声进行采样,这样架设测量话筒理论上更客观。

f101e27c3ebb03c3c9fb5ec1c2f07190.png

四、低频与全频的响度比

首先我们来看一张“人耳等响曲线图”,以1KHz的声压级为参考,当1KHz=100dB时:

733eecb076c808106ba1b58e009e27e0.png

30Hz≈+18dB

40Hz≈+12dB

100Hz≈+3dB

300-500Hz≈-2dB

2KHz-5KHz≈-12dB

10KHz≈+6dB

适用于大多数人耳的相对响度值。

五、APC处理后低频响度变小了是什么原因?

首先我们再看一下上面的这张“人耳等响曲线图”,人耳对不同频率的响度感知的灵敏度是不一样的。当我们在用APC测量的时候,往往对原系统的响度平衡没有做调整,也就是原系统的低频往往比全频的响度要大很多,APC通过采样获取的信息后,默认为低频的能量是过多的,在计算的时候把高于全频的能量给衰减掉,因为机器只是把频响曲线处理的相对平滑(对于机器来说这是一个默认值),因此在测量前最好先调整低频与全频的响度比例。

32ae292b7bcf8c731745cbc4f3ce57f2.png
6de5e2b00ceea4c3bfdf056fa107a53f.png

把所有需要测量点完成后,再把低频响度恢复到适合人耳听觉曲线的响度就OK了。不同的音乐风格和不同的音响师对声音的理解都会存在差异,响度曲线没有必要固化,是相对的而不是绝对。因此,APC第一步工作只是把原来不干净、不清晰的声音处理“干净”提高清晰度。

六、如何设置人耳等响曲线?

在“Curve Design”窗口,在绿色线上任意点双击鼠标左键,就可以创建一个“EQ”点,左右移动频率,上下移动增益或者衰减,如果要限制带宽,可以在“EQ”点左右两边再双击鼠标,就建立了一个类似Q值的频带范围,左右移动可任意调整带宽。

fb5fbb102bb20ca6b6fe4bb6b4088d20.png
785bea20f97ab564ea6e488ba391f3ad.png

提示:在APC响度曲线调整的时候,系统声音不能实时变化,每次变动曲线后,都需要点击APPLY后,等待机器进行数据写入,当进度条完成后即可。

52ae4ab5d21536420d65f2aab24e998b.png

如果对设置的曲线不满意,需要回到平直的曲线点击 RESET TO FLAT,等待进度条走完就完成清除上一次的曲线数据。

当曲线经过FIR滤波器处理器后,无论你任意修改响度曲线是不会破坏相频特性的,也就是说,在保证声音干净的基础上你可以任意调整响度曲线(这跟调音台或者处理器上去调整PEQ的结果是完全不同的听感)。

0f13b06459d081cab5ba98fba33efe28.png

FIR滤波器要在扩声领域得到普及,还有很长的一段路要走,目前在应用功能上还比较单一,尤其涉及到多通道输入和输出与扩声环境融合方面还不能够满足需要,期望这些技术研发人员能够多结合实际应用现场,深度融合现场应用需求,研发出更便捷,实用性更高的产品出来。

原文标题《浅谈FIR滤波器的应用——以APC460L为例》

文/PLAY TIME 陈万勇

原文刊登于WORLD SHOW十一月刊《技术交流》栏目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用c语言easy—x库实现实时钟表

先了解一下easy-x库 EasyX 是针对 C 的图形库&#xff0c;可以帮助 C语言初学者快速上手图形和游戏编程。 可以通过官网下载&#xff0c;文件很小&#xff0c; easy-x的支持头文件是 #include<graphics.h>下载之后双击打开会有所有easy-x函数的语法和作用&#xff0c;中…

java基础—方法重载(overload)

一、方法的重载 方法名一样&#xff0c;但参数不一样&#xff0c;这就是重载(overload)。 所谓的参数不一样&#xff0c;主要有两点&#xff1a;第一是参数的个数不一样&#xff0c;第二是参数的类型不一样。只要这两方面有其中的一方面不一样就可以构成方法的重载了。 1 packa…

word 编辑域中的汉字_word中插入的cad对象无法双击编辑问题解决记录

昨日&#xff0c;安装了天正插件5.0后&#xff0c;插入word中的cad图无法编辑了&#xff0c;弹出提示的大意是检查是否安装了cad或者是否关闭了CAD中所有的弹窗。在此之前&#xff0c;计算机装了office2010和cad2014及cad2018&#xff0c;office自动关联cad2018&#xff0c;即使…

php实现注册登陆验证

欢迎界面很简单&#xff0c;直接放上代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head&…

iOS touch事件单击双击区分响应

如果您的 iPhone 应用里有个 view&#xff0c;既有单击操作又有双击操作。用户双击 view 时&#xff0c;总是先执行一遍单击的操作再执行双击的操作。所以直接判断时就会发现不能直接进入双击操作。下面是区分 touch 事件是单击还是双击的方法 -(void)singleTap{ NSLog(&quo…

搭建高可用的redis集群,避免standalone模式带给你的苦难

现在项目上用redis的话&#xff0c;很少说不用集群的情况&#xff0c;毕竟如果生产上只有一台redis会有极大的风险&#xff0c;比如机器挂掉&#xff0c;或者内存爆掉&#xff0c;就比如我们生产环境 曾今也遭遇到这种情况&#xff0c;导致redis内存不够挂掉的情况&#xff0c;…

python计算a的平方加b的平方_NumPy计算范数2的平方

老实说&#xff0c;没有比np.inner或np.dot更快的了。如果你觉得中间变量很烦人&#xff0c;你可以创建一个lambda函数&#xff1a;sqeuclidean lambda x: np.inner(x, x)np.inner和np.dot利用BLAS例程&#xff0c;几乎肯定比标准的元素乘法加和快。In [1]: %%timeit -n 1 -r …

php连接MySQL

先说一下我踩了三天的坑 我在这之前用mysql申请了一个数据库&#xff0c;然后用php连接一直连接不上&#xff0c;试了许多办法&#xff0c;都不行 下载MySQL时显示3306端口被占用&#xff0c;所以选了3307 一直报错&#xff0c;三天后&#xff0c;终于知道了&#xff0c;你用的…

SVG动画

动画原理 SVG动画&#xff0c;就是元素的属性值关于时间的变化。 如下图来说&#xff0c;元素的某个属性值的起始值&#xff08;from&#xff09;到结束值&#xff08;to&#xff09;在一个时间段&#xff08;duration&#xff09;根据时间函数&#xff08;timing-function&…

bootstrap弹出的模态框水平垂直居中的实现

学习javascript从入门到放弃&#xff01;&#xff0c;这是第一篇随笔&#xff0c;经验不足&#xff0c;如有不当之处&#xff0c;还望指出。好了废话不多说直接切入正题吧 1.bootstrap默认的model写法&#xff1a; //触发模态框的button <button data-toggle"modal&quo…

python开发实践教程_Python开发实践教程

前言第一章 通过求三角形面积步入Python程序世界 案例1-1 求三角形面积 导读 知识梳理与扩展 小结 练习一第二章 常用运算、使用自定义函数 案例2-1 用函数的方法计算三角形面积 导读 案例2-2 开发一个求三角形面积的工具包 知识梳理与扩展 小结 练习二第三章 分支、循环和列表…

正则表达式 PHP

正则表达式的常用函数&#xff1a; 先写一个函数show&#xff0c;用来输出数组&#xff0c;使代码看起来方便&#xff0c;且把经常重复用到的量放在前面 function show($varnull) {if(empty($var))//检测变量是否为空{echo null;}elseif (is_array($var)||is_object($var))//…

iis发布网站怎么支持.json文件

转载于:https://www.cnblogs.com/daizhipeng/p/5622839.html

PHP Cookie和Session

cookie cookle常用来识别用户&#xff0c;可以理解为浏览器留下的一种文件&#xff0c;cookie可以分为会话cookie和硬盘cookie两种&#xff0c;会话cookie生命周期短&#xff0c;浏览器关闭即销毁&#xff0c;硬盘cookie生命周期由开发者设定&#xff0c;可长可短 1.创建cook…

浏览器渲染机制

1. 明白浏览器渲染的目的 可访问性&#xff08;Accessability&#xff09;、加载性能和重构灵活性一直是前端工程师们关心的主题。 其中加载性能与浏览器的渲染机制深深挂钩&#xff0c;弄明白浏览器背后的渲染机制&#xff0c;才能在日常的前端的开发中明白如何进行性能优化。…

java中List Set Map使用

Testpublic void run(){ArrayList<String> list new ArrayList<String>();list.add( "美女");list.add( "帅哥");list.add( "芙蓉姐姐" );for (int i 0; i < list.size(); i) {String strlist.get(i);System. out.println(str);…

python免费开源工具推荐_年薪200万的程序员,推荐这10大Python免费开源工具!

原标题&#xff1a;年薪200万的程序员&#xff0c;推荐这10大Python免费开源工具&#xff01;毫无疑问&#xff0c;Python是最流行的语言之一&#xff0c;其成功的原因之一是它为科学计算提供了广泛的报道。 在这里&#xff0c;我们仔细研究用于机器学习和数据科学的十大Python…

通过Yeoman快速搭建AngularJS webapp应用的实践

这里主要记录关于使用yeoman快速构建angluarJS的前端应用的实践&#xff1a; 安装node、yeoman等过程略去 1、首页我们可以在公共的脚手架中找到自己想要的脚手架&#xff0c;官方脚手架库的地址 Yeoman generators: http://yeoman.io/generators/ 这里我们选择官方团队出的ang…

[Objective-C]编程艺术 笔记整理

看了《禅与 Objective-C 编程艺术》&#xff0c;发现不少平时不注意的或注意但没有系统总结的东西&#xff0c;特此记录一下。 这次没有整理完&#xff0c;后续更新会结合手里的一些其他资料整理。 新博客wossoneri.com传送门 完整的介绍看这两个链接Google开源项目风格指南禅与…

python大数据工程师 培训_大数据工程师学习之路

大数据的作用&#xff1a;发现过去事件的特征预测未来最优化选择职位划分&#xff1a;数据产品经理数据分析师->商业敏感性&#xff0c;产品经理的助手数据研发工程师数据挖掘工程师/数据科学家需要准备的技术知识&#xff1a;Linux操作系统与网络编程&#xff1a;进程/线程…