从频谱图重建音频信号


19

我有一组歌曲,使用重叠频率为50%的汉明窗提取了幅度谱图。提取频谱图后,我使用主成分分析(PCA)进行了降维。将其降低到较低的维度后,我从较低的维度重构了频谱图。因此,现在,原始频谱图和重建频谱图之间将出现一些错误。我想将此频谱图转换回音频信号并播放它,这样我就能知道从较低尺寸重建时的声音声音。

Matlab中有可用的功能吗?将幅度频谱图转换为音频信号


2
您确实需要STFT和逆STFT。“频谱图”只是STFT幅度的热图的名称,仅幅度是不足以重建信号的。看看mathworks.com/matlabcentral/fileexchange/12902-dafx-toolbox/…吗?
endlith 2013年

4
为了扩展@endolith的评论,从STFT转到频谱图时您所缺少的是相位信息,它是信号频域表示的重要组成部分。
比约恩·罗奇

因此,这意味着如果我要重建原始音频信号,则需要STFT的幅度和相位?但通常是为了建立音频功能,| S | 使用的是复数no的幅度,并且相位信息被丢弃。我已经在其上作为我计算出的梅尔频谱执行PCA 男,是梅尔滤波器乘法矩阵。那么你如何重建提供的音频信号X,在近似X PCA后得到了什么?X=ØG中号|小号|X^
user76170 2013年

@endolith:我尝试使用您给mathworks.com/matlabcentral/fileexchange/12902-dafx-toolbox/的链接。...我同时使用了相位和幅度信息,即(将用作上述函数的输入)。使用这个,我尝试播放信号,听起来震撼。为什么会这样?然后,我计算了原始信号与如上所述通过逆STFT过程获得的信号之间的范数,它显示出3.46 * 10 ^ 3的巨大值。知道为什么会这样吗?小号
user76170 2013年

@ user76170:断断续续是因为STFT将信号切成帧,有时是重叠的,并且您必须以与构造它们相同的方式来解构它们,否则每一个都会不连续。您是否从该链接使用了STFT和ISTFT函数? 查看震荡信号的波形,这样就可以看到问题所在。
endlith 2013年

Answers:


15

如果将频谱图计算为来自重叠窗口的短时傅里叶变换的幅度,则频谱图将隐含一些相位信息。

以下迭代完成了该工作:

xn+1=istft(Sexp(iangle(stft(xn))))

是频谱图, stft是前向短时傅立叶变换, isft是逆短时傅立叶变换。Sstftisft


我想直接在@edouard上发表评论,但是我没有足够的声誉。有谁知道在他的答案是什么?另外,我将如何初始化x 0?只是随机的?是X ñ完整的重构信号在迭代ñ或只是ñ 系数X?谢谢。一世X0XñññX
2014年

1
@PR是单位虚数-1个
彼得·克

3

我很难理解@edouard的答案,这是正确的做法。与我用来实现重建的/signals//a/3410/9031相比

注意,是虚数,x n是第n 迭代时的重构信号。从x 0开始,它是音频信号长度的随机向量。对我来说,进行几次迭代就足以得出听起来不错的结果。然而,原始信号的绝对误差仍然很高。从重构信号生成的生成的频谱图I,尽管通常显示出相同的结构,但幅度却大不相同。一世XññX0


2

您可以使用重构的频谱图与原始频谱图来设计一个滤波器,该滤波器的幅度响应会将一个频谱图转换为另一个频谱图。然后,您可以将此滤波器应用于原始时域数据,或应用于原始FFT,以进行重叠添加/保存快速卷积滤波。


@ hotpaw2:我不明白您的回应,为什么我要将一个频谱图转换为另一个频谱图?我想在给定频谱图矩阵的情况下重构音频信号。设计从一个频谱图转换为另一个频谱图并重叠添加/保存快速卷积滤波的滤波器有什么要求?我想从|重建音频 S | 这样我就可以了解PCA的有效性。假设我可以播放两个剪辑,一个是原始音频信号,另一个是从较低尺寸重建而成的小号 | |小号||小号||小号^|
user76170 2013年

2
频谱图矩阵是有损的,因此不能用于重建。但是,如果您可以对转换进行反向工程以生成所需的频谱图,则可以将其应用于原始的非损耗时域数据,或者可能应用于原始的复杂结果FFT。
hotpaw2

小号|小号||小号|

1
@ user76170总而言之,就是在重建信号之前需要复杂的STFT。如果仅具有STFT幅度,那还不够。此规则有例外,但通常,您需要复杂的STFT,而不仅仅是幅度。
Tarin Ziyaee 2013年

|小号||小号^|

-1

如果您不担心计算复杂性,请使用Griffin-Lim算法将声谱图中的音频信号反转。


能否请您扩展一下答案?也许在算法中添加代表性论文或链接,并简要说明它与该问题的关系(?)
A_A

简而言之,如果我正确理解了您的问题,那么您想从频谱图中重建音频信号而不使用原始相位信息。Griffin-Lim算法需要一个频谱图矩阵作为输入并迭代地重建相位。您可以参考论文ieeexplore.ieee.org/document/1164317
Jitendra Dhiman,2010年

谢谢你让我知道。只是为了澄清这一点。该回复以“低质量”出现在我的评论队列中。我在“审核”方面的选择包括为“改进”提供评论。为了使此答案与DSP.SE中常见的答案相符,必须对Griffin Lim算法进行一些说明,以显示它与OP的要求如何相关。以后进行的任何编辑,都可以直接应用于您的答案。这样做的目的不是要特别满足“我”,而是要为问题提供一系列有意义的启发性答案
A_A

如果您没有原始的FFT信息,最好的答案是在此处(使用Griffin-Lim)。timsainb.github.io/...
蒿Krymski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.