任何人都可以帮我解决一个 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)
########