在我的应用中,我需要将来自麦克风(采样后)的整个语音信号分成10毫秒非重叠窗口。
我目前正在我的代码中使用hanning窗口来执行此操作:
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毫秒非重叠窗口?
答案 0 :(得分:4)
你只需将你的信号分解成大块的Fs * 0.01样本,例如如果您的采样率Fs = 44.1 kHz,那么您将处理4410个样本的连续块。然后,您可以将窗函数,FFT等应用于441个样本的每个块。