我有一组歌曲,其中提取了STFT(短时傅立叶变换)并使用幅度谱$ | S | $通过使用梅尔滤波器组矩阵$ M $来计算梅尔频谱图,因此$ X = \ log (M \次| S |)$。我想知道是否有任何方法可以逆转这一过程,即从梅尔光谱图转换回光谱图。我对mel谱图执行了一些降维,并从较低维度重构了mel谱图。现在我想从重建的梅尔频谱图中再生音频信号,所以我想先重建频谱图,然后再重建音频信号。

问题是梅尔滤波器组矩阵不是方阵,由于我们减少了频点的数量,因此不能像这样使用$ M $的倒数:$ \ hat {S} = M ^ {-1} \ exp(X)$。那么有什么方法可以生成逆映射,例如可以将$ X $转换为$ S $的逆传递函数吗?

评论

除非您对来源听起来像一个很强的先验模型,否则这根本不可能。在您的来源上没有任何先验信息的情况下,实际上确实有很多不同的频谱可以“折叠”到同一组mel频率系数中。

@pichenettes:那么如何重建原始歌曲,希望您理解了这个问题。我有一个梅尔频谱图,它是从较低维度重建的版本。如果没有办法以数字方式报告“错误在于”,那么我可以说,在降维之后,通过保留较少的分量并重建mel,可以说是“听到”了重建的mel频谱图。频谱图,这就是声音的声音。

在一般情况下根本不可能。就像有5个数字,然后问如何从它们的总和中“重构”这些数字。

我们想在Matlab上制作语音控制系统,但我们不知道该怎么做,我们有语音数据,但是如何将这些数据放入Matlab中。例如(eight1.mel .... eight.mel)文件。我们希望在Matlab中进行这种音频英语数字识别。 1-我必须转换“ .mel-waw”文件吗? 2-我可以使用哪个密码?如果您对我们有帮助,我们将非常感谢您。

#1 楼

采取幅度谱图和梅尔滤波器组都是有损过程。重建原件所需的重要信息将丢失。因此,您需要返回并使用原始音频样本,通过确定等效于降维的时域或频域滤波器来进行重构。

您可以对丢失的信息做出假设,但这些假设本身通常听起来不准确,人为和/或机器人化。或者,您可以仅使用经过特殊合成的输入,在这种假设下,通过设计该输入可以使假设正确。

评论


$ \ begingroup $
Mel fiter bank是否有等效的反向转换?我了解这是一个有损过程。而且我们找不到$ M ^ {-1} $,因为M不是平方。但是,可以跳过该步骤,而直接对幅度谱图| M |执行PCA。 ?还存储阶段信息。然后重建| M |,合并相位信息,并获取原始音频?
$ \ endgroup $
–user76170
13年11月4日在10:17

#2 楼

如今,最简单的方法是使用librosa来完成此任务。它具有mel_to_stft函数,可以完全满足您的需求。

正如其他人所提到的,这种重建是有损的,只能找到近似解。在librosa中,它是使用非负租赁平方算法完成的。

注意:如果使用自己的算法提取了梅尔能量,则必须确保频率扭曲为类似,否则您最终将获得听起来不和谐的音频(假设以后您要从STFT合成波形)。在librosa中有两个变形函数,您可以通过指定htk=True来使用第二个变形函数。

#3 楼

如已经提到的,通常不可能精确地执行。就像您具有3D场景的2D表示一样,例如在汽车侧面,您原则上不能说是像汽车一样的超薄卡通,还是真实汽车的照片,但是如果您假设没有人试图欺骗您,则可以对真实数据做出一些假设,确实,这就是机器学习生成模型的工作方式。

关于逆变换,由于大多数滤波器是正交的(它们的内积为零),因此可以使用滤波器组的转置作为近似值。逆变换,但是数据的缩放将是错误的,因为您可以轻松地进行验证。您可以使用一些有关从某些大型数据集e.x中提取的原始STFT的统计信息。每个通道(频率)并标准化$ M ^ TMx $以具有“正确”的比例。仅从幅度信号创建完整的频谱图时,可以使用Griffin-Lin算法进行一些近似。您可以使用WaveNet或Parallel Wavenet之类的工具来增强它的功能,因为它已经被证明可以与语音信号和其他音频信号很好地配合使用。