我是音频分析的新手,但需要执行(看似)简单的任务。我有一个包含16位记录(单通道)和44100采样率的字节数组。如何在任何给定时刻执行快速分析以获得音量?我需要计算一个阈值,所以如果一个阈值高于某个幅度(音量),则返回true,否则返回false。我以为我可以迭代字节数组并检查它的值,255是最响亮的,但这似乎不起作用,即使我没有记录任何东西,背景噪音进入,一些数组填充255.任何建议都会很棒。 感谢
答案 0 :(得分:4)
由于您有16位数据,因此您应该期望信号在-32768和+32767之间变化。 要计算体积,您可以采用1000个样本的间隔,并计算其RMS值。将平方样本值除以1000并取平方根。根据你的门槛检查这个数字。
答案 1 :(得分:3)
通常使用root mean square测量波浪的能量。
如果你想要在感知上更准确,你可以通过discrete fourier transform将时域信号转换为频域信号,并通过一些加权函数在幅度上进行积分(因为低频波是感知的比同样能量的高频波更响亮。)
但我不知道音频的东西,所以我只是制作东西。 ☺
答案 2 :(得分:0)
我可能会尝试使用标准偏差滑动窗口。 OTOH,我不会认为255 =最响。它可能是,但我想知道正在使用什么编码。如果存在任何压缩,那么我怀疑255是“最响亮的”。