您将如何测量一个音频样本中的低音量?

Posted

技术标签:

【中文标题】您将如何测量一个音频样本中的低音量?【英文标题】:How would you measure the amount of bass in one audio sample? 【发布时间】:2019-11-08 06:44:13 【问题描述】:

我是音频编程的初学者,想知道如何在单个音频样本中获得低音量。我在想它可能会以 db 为单位进行测量,但我不知道是否有一个实际用于测量低音的单位。 我没有用于测量低音的代码,因为我不知道从哪里看或从哪里开始我已经完成了一切,直到将我的音频文件的所有样本都存储为浮点数使用 juce 库的数组,现在只需遍历每个样本测量每个样本的低音

有什么帮助吗?

【问题讨论】:

@uguiugi75 尝试研究你想要的东西。你的问题真的很模糊。我希望我能提供帮助,但我假设您不了解音频采样背后的理论。音频样本只是特定情况下的电压电平。如果有一天有人只用一个音频样本就能找出低音,我会印象深刻。 音频样本是什么意思?是 PCM 吗? 是的样品是 pcm 【参考方案1】:

我假设一个音频样本是指一组浮点数,而不仅仅是该数组的一个元素。

如果您“谷歌”这个词 Bass,您会看到第一个结果:

低音(也称为底端)描述了低(也称为“深”)频率、音高和范围从 16 到 256 Hz 的音调。

是的,低音只是该范围内的音频。

现在,我认为您将能够弄清楚如何使用音频样本找到频率,如果没有,那么 this is the best I can do...

现在,您可以清楚地找到所述范围内的低音量和频率.. :)

【讨论】:

通过快速阅读所有这些,我想到了一个。当您知道频率范围时,您可以使用 FFT(快速傅里叶变换)来获得“低音量”。 我在这里在黑暗中拍摄。但这是一个问题@skratchi.at FFT 需要多个样本。 只是猜测而已。直到我们一无所知,然后我们才做 OP 想做的事情,如果 FFT 适合,这是值得怀疑的。 @user4581301 正是我在开头添加I am assuming by one audio sample you mean an array of floats 的原因【参考方案2】:

这里只有一种解决方案,而且不是您想的那样。您需要将时域中的信号转换为频域中的信号。低音是频域的下半部分。

您首先需要的是 FFT。这需要一些样本作为输入。典型值为 2048 个样本。如果您的输入是 48 kHz 信号,这会将信号分成 1024 个 47 Hz 的 bin。较低的 5 个 bin 左右包含信号的低音部分。 (Bin 0 还包含任何 DC 偏移,这可能有问题)

然后您需要将这 5 个垃圾箱转换为能量;这只是将 5 个值平方并求和。

【讨论】:

还有另一个不使用 FFT 的选项...您可以使用带通数字 FIR 滤波器。但我同意使用 FFT 更容易(但更慢),因为对于 FIR,您需要进行数学设计(系数值和计数......)

以上是关于您将如何测量一个音频样本中的低音量?的主要内容,如果未能解决你的问题,请参考以下文章

带有音量包络的 iOS 音频采样器

iPhone 3G、3GS 和 4 上音频框架的差异

可视化 PCM 样本的体积

用 dB 表示音乐音频样本? [复制]

使用 Python 测量音频“响度”

音频文件中的样本如何对齐?