0

在我的应用程序中,我需要将来自麦克风的整个语音信号(采样后)分成 10 毫秒的非重叠窗口。

我目前在我的代码中使用 hanning window 来做到这一点:

public short[] HanningWindow(short[] signal_in, int pos, int size)
    {
for (int i = pos; i < pos + size; i++)
{
    int j = i - pos; // j = index into Hann window function
    signal_in[i] = (short) (signal_in[i] * 0.5 * (1.0 - Math.cos(2.0 * Math.PI * j / size)));
}
return signal_in;
   }

现在我的问题是,我在哪里指定我需要 10 毫秒的非重叠窗口?

4

1 回答 1

4

您只需将信号分解成 Fs * 0.01 个样本块,例如,如果您的采样率 Fs = 44.1 kHz,那么您将处理 4410 个样本的连续块。然后,您可以将窗口函数、FFT 等应用于 441 个样本的每个块。

于 2013-07-18T05:48:08.650 回答