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

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

有什么帮助吗?

【问题讨论】:

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

标签: c++ algorithm audio measure juce


【解决方案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,您需要进行数学设计(系数值和计数......)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-30
  • 2011-12-18
  • 2010-11-20
  • 2014-05-05
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多