gpt4 book ai didi

c++ - 如何使用 C++ 查找 WAV 文件的最高音量级别

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:27 25 4
gpt4 key购买 nike

我想使用 C++(库 libsndfile)获取 WAV 文件的最高音量级别的值?有什么建议吗?

最佳答案

您可以简单地在样本缓冲区中的样本的绝对值中找到最高的单个样本值(峰值)。这采用一般形式:

t_sample PeakAmplitude(const t_sample* const buffer, const size_t& count) {
t_sample highest(0);
for (size_t idx(0); idx < count; ++idx) {
// or fabs if fp
highest = std::max(highest, abs(buffer[idx]));
}
return highest;
}

要获得平均值,您可以使用 RMS 函数。插图:

t_sample RMSAmplitude(const t_sample* const buffer, const size_t& count) {
t_sample s2(0);
for (size_t idx(0); idx < count; ++idx) {
// mind your sample types and ranges
s2 += buffer[idx] * buffer[idx];
}
return sqrt(s2 / static_cast<double>(count));
}

RMS 计算比峰值更接近人类感知。

要更深入地了解人类感知,您可以使用 Weighing Filters .

关于c++ - 如何使用 C++ 查找 WAV 文件的最高音量级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com