跳转到主要内容

优化扬声器的音质

项目描述

PyPi

介绍

HiFiScan的目标是帮助调整音频系统,以获得最佳音频质量。有两种方法可以实现这一点

1. 手动:实时频率响应会显示出来,可以通过交互式方式消除峰值和谷值。

2. 自动:测量频率响应并计算校正。默认情况下,这是一种相位中性的有限脉冲响应(FIR),可以导入到大多数均衡器程序中。

测量是通过播放一个“尖叫声”音调来完成的,这个音调扫过所有频率,并记录每个频率从扬声器中出来的响度。需要一个好的麦克风,具有宽频率范围,最好是具有平坦频率响应的麦克风。

均衡器本身并未提供;可以通过您选择的均衡器执行,例如,Linux的EasyEffects,Windows的Equalizer APOPeace,或macOS的eqMac

安装

pip install -U hifiscan

通过在控制台输入来启动程序

hifiscan

所有功能也都可以在这个Jupyter笔记本中进行交互式使用。

示例

笔记本电脑

让我们首先优化笔记本电脑的扬声器。笔记本电脑具有微小的向下发射扬声器和大面积的音箱共振,使得其声音听起来非常糟糕。

声音是用USB录音室麦克风录制的;笔记本电脑的内置麦克风不适用于此。

images/laptop_setup.jpg

进行测量后,我们可以清楚地看到频谱有多糟糕,1 kHz处的峰值比平均值高出20 dB。每增加10 dB,功率增加10倍,因此20 dB是100倍。

低频设置为200 Hz,因为笔记本电脑不可能输出低于这个频率的声音。

images/laptop-spectrum.png

为了得到自动校正,我们进入“脉冲响应”部分(在左下角可选)。从这里,我们可以使用所有默认值,直接点击“导出为WAV”以获得一个完全足够的结果。

但让我们进一步优化这款笔记本电脑。我们可以做出各种权衡,其中之一涉及到脉冲的持续时间。较长的持续时间提供更好的低音控制,但也会增加更多的延迟。均衡器增加的延迟是脉冲持续时间的一半。由于笔记本电脑本身没有低音,我们选择22 ms的持续时间,以获得极低的11 ms延迟。这比声音传播四米的时间还要短,对于游戏或视频通话来说已经足够好了。

我们还增加范围到27 dB,以获得一点额外的均衡。

下方的图形(棕色)显示了预期均衡后的频谱,看起来非常平坦。

images/laptop-IR.png

因此,让我们导出脉冲响应并将其导入EasyEffects(在卷积效果中:“脉冲 -> 导入脉冲”然后“加载”)

images/Convolver.png

我们返回频谱测量,并使用存储按钮存储未校正的频谱(以便与以后的测量进行比较)。还可以存储更多测量,例如麦克风放置在不同位置时的情况,存储测量的总平均数以橙色显示。

测量均衡后的系统给出这个结果

images/laptop-flattened-spectrum.png

可以看到,均衡是通过衰减来实现的:所有内容都削减到低于顶部的某个水平(这里为27 dB),从而使整个景观变得平坦。

所有这些衰减都会降低总音量,因此需要将音量调高以获得相同的音量。这也提高了频谱的边缘,增加了有效频率范围。有40 Hz的额外低音和大量的高音,这非常受欢迎。

images/laptop-spectrum-equivolume.png

这就是时候离开图形,开始听一些音乐了。是否有所改进?当然,人们对什么听起来好有不同的品味,但对于那些喜欢中性平衡音的人来说,这是一个巨大的改进。人声也更容易理解。

低音不足可以通过缺失基频现象得到一定程度的补偿,即大脑根据其较高的频率谐波“添加”缺失的低频。似乎通过均衡谐波,虚幻的低音也得到了均衡。

HiFi立体声

HiFi安装有四个JBL环绕扬声器,以2x2立体声设置串联,还有一个低音炮。声音只能用非常平淡来形容,就好像高音单元没有工作一样。

为了校准,我们使用与笔记本电脑相同的麦克风,即Superlux E205UMKII。这次我们来校正麦克风的任何非平坦性。根据文档,它具有以下频率响应

images/mic_response.png

我们创建一个文本文件,描述麦克风的频率响应

20 -1.5
150 0
4500 0
10000 4
17000 0
20000 -2

该文件通过“校正… -> 麦克风校准 -> 加载”导入。还可以导入制造商提供的校准文件。

测量频谱证实了令人担忧的高音不足

images/stereo-spectrum.png

因此,让我们转到冲激响应部分来修复这个问题。

范围设置为33 dB - 这是一个极端值,但管它的。

渐变保留在5。它将冲激响应的边缘拉得更接近零(在绿色曲线上可见),这也会对频谱产生平滑效果。小于5的值可能会使绿色曲线的边缘过高,这可能会导致讨厌的预回声。大于5的值可能会对低音区域产生过多的平滑。

平滑也会平滑频谱,但平滑是按频率比例进行的。它会减少对低音区域的平滑,从而在此处获得更好的精度。一个好的平滑值可以从校正因子图(红色)来判断:它应该是平滑的,且角部圆润,同时具有足够的细节。

持续时间被调整,直到达到可接受的低音响应(在最低的棕色图表中可见)。

images/stereo-ir.png

将冲激响应导出并导入EasyEffects后,结果看起来很有希望。

images/stereo-spectrum-corrected.png

我们将音量调到与之前相同的大小,并对频谱应用一些视觉平滑以增强清晰度。结果证明,只要放大器将其驱动100倍,高音单元就能完成其工作。

images/stereo-final.png

音质差异天差地别。音乐现在真的很好。对于电影,它带来了非常沉浸式的动作和出色的对话清晰度。

如简介中所述,均衡器是相位中性的。这意味着尽管均衡器重且陡峭,但不会添加相对相位偏移。无损音乐源(如钹的反弹)的细节保持得非常清晰。

顺便说一下,所用的放大器是一款基于TPA3116D2数字放大器芯片的18美元电路板。播放时功耗为1.1瓦特,如果低音单元非常忙碌,功耗会更高。

蓝牙耳机

HiFiScan不建议与耳机一起使用。有AutoEq项目,为大多数耳机提供了现成的校正,即使如此,它也可以用于实验。例如,我有一副非常好的Dali IO-4耳机,可以使用蓝牙或通过模拟音频线被动使用。使用蓝牙时声音更好,这表明可能进行了某些均衡。让我们来测量一下!

images/dali.jpg

可以看到确实在进行一些主动调谐,尽管大部分调谐是声学的。橙色是蓝牙,青色是模拟线。在1.8 kHz处有一个宽-10 dB衰减,在5.5 kHz处有一个窄-4 dB衰减。可以将这种调谐应用于模拟信号,以获得与蓝牙相同的声音。

images/dali-spectrum.png

使用目标曲线

除了目标平坦频谱外,还可以针对特定曲线进行目标。这是通过创建包含目标曲线的文本文件,并通过“校正… -> 目标曲线 -> 加载”导入它来完成的。让我们使用这种锯齿形的目标曲线

300 -10
500 10
1000 5
2000 10
4000 10
6000 0
20000 -10

在冲激响应部分,我们可以在下图中看到对红色线(即目标曲线)进行了拟合。

images/target_IR.png

带有内置目标频谱的冲激响应导出并导入EasyEffects。橙色是原始频谱,红色是目标,青色是尝试跟随目标曲线的重新塑形频谱

images/target_spectrum.png

因果性

默认情况下,创建的是相位中性(也称为线性相位)的冲激响应。也可以创建最小相位响应。介于两者之间的任何情况都是可能的。这是通过“因果性”参数来完成的,其中0%是相位中性,100%是最小相位。通过改变因果性,在极端之间实现平滑过渡。

images/causality-waveform.png

延迟与因果关系成正比降低。在100%时,响应变为零延迟且纯因果,此时只使用当前和过去的音样本。预回声以两倍的后续回声为代价被消除。请注意,尽管名为“最小相位”,此设置实际上引起的相位失真最大,在陡峭的均衡下可能会很严重。

40%的因果关系可能是一个好的折衷方案,它可以减少约6 dB的预回声,而不会过多地相位模糊。让你的耳朵来判断哪种声音听起来最好。

在“工具… -> 更改IR因果关系”中可以找到用于更改现有冲击响应(WAV文件)的工具体。

免责声明

软件按简化版BSD许可证的条件提供。任何损坏的扬声器或破碎的玻璃由用户自行负责。

祝您享受,

作者:

Ewald de Wit <ewald.de.wit@gmail.com>

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

hifiscan-1.5.2.tar.gz (24.2 kB 查看哈希值)

上传时间: 源代码

构建发行版

hifiscan-1.5.2-py3-none-any.whl (20.5 kB 查看哈希值)

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面