通道声码器产生带有“咔哒”声的输出

信息处理 fft 傅里叶变换 频谱 窗函数
2022-02-22 23:11:40

我正在尝试制作一个带有两个输入的通道声码器,一个是频率丰富的载波(音乐声音),另一个是调制器(人声)。应用通道声码器中涉及的操作会生成一个输出,使人声以载波音调唱歌。(想想 Songify。)

目前,我将两个信号拆分为指定大小的窗口,并将两个连续的窗口重叠一定的因素。然后计算载波和调制器窗口的 F​​FT。fft 进一步分成等长的带。该特定调制器 fft 幅度的平均值

for band_no = 0 to band_count:
        for i = 0 to band_length:
                avg+=magnitudeOfModulatorFFT[band_no*band_length + i];

然后我将“avg”乘以位于频带内的每个carrierFFT的频率值,然后取逆FFT。虽然这会产生所需的输出,但它也包括咔哒声。即使在将两个信号都乘以窗口函数之后。

我有什么办法可以解决这个问题?

1个回答

我认为这可能是两个问题之一。

你的框架重叠是多少?如果帧重叠小于 40% 左右,当您在最后执行重叠添加合成时,您将开始得到不希望的伪影。尝试 50-80% 的重叠(虽然计算成本更高,但它提供了更高的频率分辨率)。

第二个考虑与上述建议密切相关。您是否对帧信号使用任何类型的分析窗口?或许可以尝试使用 Hamming、Blackmann 或 Hanning 等锥形窗口。这将有助于最大限度地减少帧之间的频谱泄漏。希望这可以帮助。