【发布时间】:2021-05-08 03:52:09
【问题描述】:
我正在处理一个显示突然尖峰的音频文件:
当我尝试规范化音频文件时,音频程序看到这个尖峰,注意到它处于 0 dB 并且不会再规范化音频。
为了解决这个问题,我应用了一个限制为 -3 dB 的限制器。我使用过 Steinberg Wavelab 和 Audacity Hard Limiter。相反,它们都会减小整个音量。
两者都不能消除这个尖峰。
编辑:我发现 Audacity 中的“硬剪辑”可以满足我的需要,但现在我仍然想完成自己的方法。
所以我在想它们可能无法正常工作。
然后我尝试在 VB6 中编写自己的限制器,以便完全控制正在发生的事情。
为此,我正在加载一个 wav 文件的音频数据,如下所示:
(我已经非常精简了这个过程)
Dim nSamples() As Integer
ReDim nSamples(0 To (lCountSamples - 1))
Get #iFile, , nSamples
我现在在“nSamples”中有音频数据。
Dim i&
For i = 1 To UBound(nSamples)
Dim dblAmplitude As Double
dblAmplitude = nSamples(i) / 32767
Dim db As Double
db = 20 * Log10(dblAmplitude)
If db > -0.3 Then
nSamples(i)=0 'how would I lower the volume here instead of just setting it to 0???
End If
Next
我不确定如何从样本数据中计算 dB 以便对其进行裁剪以及如何将其裁剪为 -3dB。
我现在只是尝试将裁剪值设置为“0”。
但是,这里发生了一些奇怪的事情:音频的下部消失了:
我预计将值设置为 0 会使音频静音,但在我的情况下,较低的 wav 形式消失了。
我的方法有什么问题?
谢谢!
【问题讨论】:
-
峰是什么?这些是真正的声音还是人工制品?硬削波会导致削波,这意味着它会影响应用削波点周围的音频。可以吗?
-
@LukaszTracewski 这些是真实的声音。当我夹住尖峰时,我预计它的音量会更低。我不明白您所说的“现场音频”是什么意思。我只想降低这个尖峰的音量。周边地区根本不应该受到影响。
-
我想你可能想错了。这更像是一个音频工程/声音设计问题,而不是一个编程问题。传统上你会做的是使用一点自动化duck这些区域周围的音量推子。压缩器而不是限制器应该处理这个问题,你需要小心,因为你需要选择正确的参数:硬拐点,快速启动和释放,没有额外的增益。如果您需要跨 100 多个音频文件执行此操作,则对流程进行编程似乎更明智,但您尝试做的事情不一定是微不足道的。
-
是的,我有 30.000 个这样的文件。
-
无法帮助您使用 VB6,但 Audacity 有一个 python API manual.audacityteam.org/man/scripting.html