我有 2 个单独的文件,称为:频谱图和相位。频谱图包含音频的幅度信息,相位包含每个窗口区域的相位信息。我需要使用这些信息重建音频,但我完全迷失了。你能把我引向正确的方向吗?我怎样才能做到这一点?
从给定的频谱图和相位数据重建音频
频谱图是信号中频率分量的图形时间滚动表示。有时它被称为“瀑布”,因为它是实时计算和绘制的。这背后的核心数学是 FFT。
频谱图通常显示信号(例如 DC 到 20kHz)中一系列频率分量的强度(或幅度)。FFT 有一个复数输出,每个输入块对应一个值块。这些复数的大小可能(以某种方式)存储在“频谱图”文件中,而相位存储在“相位”文件中。
从频谱图重建原始信号的技巧是反转频谱,其背后的数学是 IFFT。
您将需要文件中的幅度和相位数据来重新创建复频谱,然后将其应用于 IFFT 以获取时域信号。
你将不得不找出
- 应用了什么数学来计算频谱图:FFT 块大小、任何对数刻度 (dB?)、任何窗口、任何子采样等......以及数据在文件中的格式和组织方式。
- 如何计算和存储相位(块大小、度/弧度、数字格式等...)
正如评论者指出的那样,您必须从创建文件的人那里找到所有这些详细信息。但请注意,即使那样,也可能无法重新创建原始信号。
在这种情况下,如果您可以指定如何使用不同的参数(无窗口、无子采样等)生成频谱图,然后(重新)生成这些文件,您可能会有机会。
祝你好运。由于这有点像取证,因此您将需要它。
一般而言,您可以将幅度和相位转换为复数。请参阅此参考。完成后,您可以使用逆离散傅里叶变换来尝试恢复音频。
您没有指明天气,或者您不知道这些文件是如何制作的,因此无法保证应用这种直接方法会奏效。在没有此类信息的情况下,尝试无需任何费用。
我希望这有帮助。
频谱图通常是真实信号的过度完整和复杂的表示。过度完成意味着您获得的“独立”复数系数比信号中的样本多。这种冗余的背景告诉我们,有不同的方法可以从频谱图幅度和相位信息中重建信号。
让我们假设窗口的长度是偶数。真实信号的频谱图应由复数样本帧中的每一个组成。为了保留长度为的信号的所有信息,我们应该有
使用 Hermitian 对称性,这可以缩小到幅度和相位信息。通常,第一个和最后一个系数应该是实数。在那里,您可以检查幅度/相位文件的大小是否合适。换句话说,如果可以在相位文件中发现零值相位,您将获得有关如何获得频谱图的提示(窗口长度和重叠)。重叠通常为 50%、75% 或 25%。另一个检查原始信号大小的线索。
一旦有了窗口长度(可能在二进制文件的标题中),您就可以揭示原始信号被分块成重叠部分的方式。
但是您仍然不知道如何对样本进行加权,例如您必须反转的重叠窗口的形状。好消息:
- 首先:使用 Hamming 或 Hann 窗是非常传统的。因此,如果您没有关于窗口形状的信息,它们是安全的选择。
- 第二:过完备,有许多潜在的忠实逆。因此,即使您不知道确切的窗口形状,也可以进行猜测,过完备或冗余的复系数可以相互补偿以恢复美观的信号。
- 第三:尽可能多的逆可能,人们可以寻求具有完美信号或噪声去除的优化逆。无耻的参考?当然: 合成过采样复杂滤波器组的优化