3

我是音频分析的新手,但需要执行一项(看似)简单的任务。我有一个包含 16 位录音(单通道)和 44100 采样率的字节数组。如何执行快速分析以在任何给定时刻获取音量?我需要计算一个阈值,所以如果它高于某个幅度(音量),则函数返回 true,否则返回 false。我以为我可以遍历字节数组并检查它的值,其中 255 是最响亮的,但这似乎不起作用,因为即使我不记录任何东西,背景噪音进入并且一些数组充满了255. 任何建议都会很棒。谢谢

4

3 回答 3

4

由于您有 16 位数据,您应该期望信号在 -32768 和 +32767 之间变化。要计算音量,您可以间隔 1000 个样本,然后计算它们的 RMS 值。将平方样本值相加除以 1000 并取平方根。根据您的阈值检查此数字。

于 2010-12-06T08:22:04.443 回答
3

通常使用均方根测量波的能量。

如果您想在感知上更准确,您可以通过离散傅立叶变换将时域信号转换为频域信号,并使用一些加权函数对幅度进行积分(因为低频波在感知上比高频响亮相同能量的波)。

但我也不知道音频的东西,所以我只是在编造东西。☺</p>

于 2010-12-06T03:37:34.820 回答
0

我可能会尝试应用标准差滑动窗口。OTOH,我不会假设 255 = 最大声。可能是,但我想知道正在使用什么编码。如果存在任何压缩,那么我怀疑 255 是“最响亮的”。

于 2010-12-06T03:38:01.760 回答