我有一组歌曲,我使用具有 50% 重叠的汉明窗提取了幅度谱图。提取频谱图后,我使用主成分分析 (PCA) 进行了一些降维。在将其降低到较低维度后,我从较低维度重建了频谱图。所以现在,原始频谱图和重建频谱图之间会有一些误差。我想将此频谱图转换回音频信号并播放它,以便我能够知道何时从较低维度重建,音频听起来如何。
说Matlab中有没有可用的功能。将幅度谱图转换为音频信号??
我有一组歌曲,我使用具有 50% 重叠的汉明窗提取了幅度谱图。提取频谱图后,我使用主成分分析 (PCA) 进行了一些降维。在将其降低到较低维度后,我从较低维度重建了频谱图。所以现在,原始频谱图和重建频谱图之间会有一些误差。我想将此频谱图转换回音频信号并播放它,以便我能够知道何时从较低维度重建,音频听起来如何。
说Matlab中有没有可用的功能。将幅度谱图转换为音频信号??
如果将频谱图计算为来自重叠窗口的短时傅里叶变换的幅度,则频谱图隐含地包含一些相位信息。
以下迭代完成了这项工作:
是频谱图,是正向短时傅里叶变换,是反短时傅里叶变换。
我有点难以理解@edouard 的答案,这是在做正确的事。与我用来实现重建的https://dsp.stackexchange.com/a/3410/9031相比。
注意是虚数,并且是在迭代。从...开始是音频信号长度的随机向量。对我来说,几次迭代就足以得到一个听起来不错的结果。尽管如此,原始信号的绝对误差还是相当高的。此外,我从重建信号中生成的频谱图虽然总体上显示相同的结构,但幅度却大不相同。
您可以使用重建的频谱图与原始频谱图来设计一个滤波器,其幅度响应将一个频谱图转换为另一个频谱图。然后,您可以将此过滤器应用于原始时域数据,或应用于原始 FFT 以进行重叠添加/保存快速卷积过滤。
如果您不担心计算复杂性,请使用 Griffin-Lim 算法从频谱图中反转音频信号。