我编写了一些将音频信号(当前为正弦波)作为输入的代码,并执行以下操作:
n
取(1024) 个样本的帧- 应用 FFT
- 应用 iFFT
- 播放输出
通过这个过程,输出信号与输入信号基本相同。
现在,在第二次尝试中,我做了:
- 从输入中获取重叠帧
- 应用窗口函数
- 快速傅里叶变换
- 快速傅里叶变换
- 重叠输出帧
在步骤 1 中,如果我使用 2 的幂(4、8、256...)的跳跃大小(跳到下一帧的样本数)来获取重叠帧,则输出声音很平滑并且类似于原始输入声音,但是对于任何其他的跃点大小,声音开始减弱。这发生在输入信号的任何频率上。问题 1. 为什么只有 hop size 为 2^n 时声音才流畅?.
目前我使用汉宁窗。当跳数较大(例如 512)时,输出声音的音量低于跳数较小(例如 64)时的音量。这似乎是一种预期行为,因为小跳数意味着用更多帧重构样本,因此添加了更多信号。问题 2. 有没有办法正确缩放输出信号,使音量类似于原始信号?
谢谢!