gpt4 book ai didi

python - 如何使用 torchaudio 反转 MelSpectrogram 并获得音频波形?

转载 作者:行者123 更新时间:2023-12-03 14:28:05 24 4
gpt4 key购买 nike

我有一个 MelSpectrogram产生于:

eval_seq_specgram = torchaudio.transforms.MelSpectrogram(sample_rate=sample_rate, n_fft=256)(eval_audio_data).transpose(1, 2)
所以 eval_seq_specgram现在有一个 sizetorch.Size([1, 128, 499]) ,其中 499 是时间步数,128 是 n_mels .
我正在尝试反转它,所以我正在尝试使用 GriffinLim ,但在此之前,我想我需要反转 melscale ,所以我有:
inverse_mel_pred = torchaudio.transforms.InverseMelScale(sample_rate=sample_rate, n_stft=256)(eval_seq_specgram)
inverse_mel_pred有一个 sizetorch.Size([1, 256, 499])然后我尝试使用 GriffinLim :
pred_audio = torchaudio.transforms.GriffinLim(n_fft=256)(inverse_mel_pred)
但我收到一个错误:
Traceback (most recent call last):
File "evaluate_spect.py", line 63, in <module>
main()
File "evaluate_spect.py", line 51, in main
pred_audio = torchaudio.transforms.GriffinLim(n_fft=256)(inverse_mel_pred)
File "/home/shamoon/.local/share/virtualenvs/speech-reconstruction-7HMT9fTW/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/shamoon/.local/share/virtualenvs/speech-reconstruction-7HMT9fTW/lib/python3.8/site-packages/torchaudio/transforms.py", line 169, in forward
return F.griffinlim(specgram, self.window, self.n_fft, self.hop_length, self.win_length, self.power,
File "/home/shamoon/.local/share/virtualenvs/speech-reconstruction-7HMT9fTW/lib/python3.8/site-packages/torchaudio/functional.py", line 179, in griffinlim
inverse = torch.istft(specgram * angles,
RuntimeError: The size of tensor a (256) must match the size of tensor b (129) at non-singleton dimension 1
不知道我做错了什么或如何解决这个问题。

最佳答案

通过查看文档并对 colab 进行快速测试,似乎:

  • 当您使用 n_ftt = 256 创建 MelSpectrogram 时,256/2+1 = 129 bins生成
  • 同时 InverseMelScale 将名为 n_stft 的参数作为输入。表示垃圾箱的数量(所以在你的情况下应该设置为 129)

  • 作为旁注,我不明白你为什么需要转置调用,因为根据文档和我的测试
    waveform, sample_rate = torchaudio.load('test.wav')
    mel_specgram = transforms.MelSpectrogram(sample_rate)(waveform) # (channel, n_mels, time)
    已经返回一个 (channel, n_mels, time) 张量
    InverseMelScale wants形状张量 (..., n_mels, time)

    关于python - 如何使用 torchaudio 反转 MelSpectrogram 并获得音频波形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64809370/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com