您将如何测量一个音频样本中的低音量?
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,您需要进行数学设计(系数值和计数......)以上是关于您将如何测量一个音频样本中的低音量?的主要内容,如果未能解决你的问题,请参考以下文章