首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么InverseMelScale的torchaudio函数速度这么慢?

为什么InverseMelScale的torchaudio函数速度这么慢?
EN

Stack Overflow用户
提问于 2022-11-15 14:57:52
回答 1查看 19关注 0票数 0

我目前正在探索和学习机器学习的音乐/音频生成,我已经失败的第一步。我的想法是在音频上使用基于图像的学习算法。要做到这一点,我想把音频转换成MEL谱图,然后应用机器学习的东西。然后,当模型被训练时,它显然应该再次产生音乐,这将是梅尔谱图。所以我得把梅尔谱转换回音频。

使用pytorchtorchaudio框架直接生成MEL谱图:

代码语言:javascript
复制
waveform, _ = torchaudio.load(os.path.join(folder, "drums.mp3"), normalize=True, format="mp3")
waveform = waveform.to(device)
mel_spectrogram_transform = torchaudio.transforms.MelSpectrogram(sample_rate=44100, hop_length=512, n_fft=2048, n_mels=512, f_max=16384).to(device)
mel_spectrogram = mel_spectrogram_transform(waveform)

为了能够将光谱图保存为图像,还有更多的预处理步骤,但为了简洁起见,我跳过这里。让我头疼的是逆步。torchaudio有一个函数,InverseMelScale。但这是非常缓慢的。以下是代码:

代码语言:javascript
复制
inverse_melscale_transform = torchaudio.transforms.InverseMelScale(sample_rate=44100, n_mels=512, n_stft=2048 // 2 + 1).to(device)  
mel_spectrogram = mel_spectrogram.to(device)
spectrogram = inverse_melscale_transform(mel_spectrogram)

同样,我在这里省略了更多的步骤,例如,使用GriffinLimspectrogram获取实际的音频。

以下是我迄今为止所做的工作:我在我的MacBook Pro (英特尔)上运行了代码,它花费了很长时间。然后我在带有256个内核的AMD Ryzen服务器上进行了测试,在那里我能够在几分钟内得到结果。现在我的想法是利用GPU,一个土卫六XP,以获得更快的结果,但即使经过30分钟的计算,100%的GPU利用率,没有看到任何结果。

我做错了什么?为什么AMD Ryzen要快得多?

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 02:00:23

目前,InverseMelScale是使用SGD实现的推理,即在InverseMelScale内部定义丢失函数,并运行优化器。

这种实现不仅效率低下,而且也不准确。

由于选择此实现的原因,您可以查看https://github.com/pytorch/audio/pull/366

建议采用L B优化器https://github.com/pytorch/audio/issues/2643

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74447735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档