1

任何人都可以帮我解决一个 tensorflow 问题吗?我有这个音频文件数据库,我计算了它们对应的 mel 频谱图。

音频文件具有不同的长度,因此梅尔频谱图将具有不同的形状。最后,我将所有这些 mel 光谱图添加到一个名为“mels”的列表中

我正在尝试将“mels”列表转换为张量,因此我可以将其添加到我的 tf.data.Dataset 变量中,但它不断让我收到非矩形形状无法转换为张量的错误。

所以我尝试使用参差不齐的张量将其转换为张量,但是将整个 mel 列表转换为参差不齐的张量需要很长时间。我尝试转换一个较小长度的列表(只有 3 个梅尔光谱图),完成转换为参差不齐的张量需要大约 30 秒所以对于一个具有超过 200 个梅尔光谱图的列表,大约需要半小时或其他时间不好。有没有办法将此梅尔列表转换为张量?

这是代码的一小部分,以防我犯了一些愚蠢的错误

###########

def _load_spectrograms(fpaths):

fnames = []
mels = []
mags = []

for f in fpaths:
    
        fname = os.path.basename(f)
        mel = "mels/{}".format(fname.replace("wav", "npy"))
        mag = "mags/{}".format(fname.replace("wav", "npy"))
        mel = np.load(mel)
        mag = np.load(mag)
        # mel = tf.convert_to_tensor(mel)
        # mag = tf.convert_to_tensor(mag)
        # mel.set_shape((None, hp.n_mels * hp.r))
        # mag.set_shape((None, hp.n_fft // 2 + 1))
        fnames.append(fname)
        mels.append(mel)
        mags.append(mag)
       
return fnames, mels, mags

fnames, mels, mags = _load_spectrograms(fpaths)
mels = tf.ragged.constant(mels)
mags = tf.ragged.constant(mags)

########

4

0 回答 0