通过python将MP3转换为midi(TypeError:加载插件失败:mtg-melodia:melodia)

Posted

技术标签:

【中文标题】通过python将MP3转换为midi(TypeError:加载插件失败:mtg-melodia:melodia)【英文标题】:MP3 to midi converting by python (TypeError: Failed to load plugin: mtg-melodia:melodia) 【发布时间】:2021-03-11 13:46:23 【问题描述】:

我正在尝试在 colab 主页面中编写一些代码来将 MP3 文件转换为 midi。

所以我记得创建 mp3 格式的 midi 文件是一个大项目,我可能无法将个人歌曲或音频文件导入该项目。 (音频转MIDI,有些地方是用人工智能完成的(比如PolyphonicPianoTranscription),(AudiotoMIDI conversion projects的列表)。

所以我尝试通过这个函数将 MP3 转换为 WAV:

def MP3_to_WAV(MP3_file):
   from pydub import Audiosegment
   sound = AudioSegment.from_mp3(MP3_file)
   filename = os.path.basename(MP3_file)
   wav_file_name=output_path+filename.split('.')[0]+'.wav'
   sound.export(wav_file_name, format="wav")
   return wav_file_name

并尝试通过this指令和这个函数将WAV转换为MIDI:

def wav_to_midi(wav_f_n):
   filename2 = os.path.basename(wav_f_n)
   midi_file_name=output_path+filename2.split('.')[0]+'.midi'
   run_comand("python /content/audio_to_midi_melodia/audio_to_midi_melodia.py "+wav_file+' '+ midi_file_name+" 120")
   return midi_file_name
 

但在我的 colab 页面 (link) 的 WAV 到 Midi 块代码中,我收到此错误:



Vamp::HostExt::PluginLoader: No library found in Vamp path for plugin "mtg-melodia:melodia"
Loading audio...
Extracting melody f0 with MELODIA...
Traceback (most recent call last):
  File "/content/audio_to_midi_melodia/audio_to_midi_melodia.py", line 225, in <module>
    savejams=args.jams)
  File "/content/audio_to_midi_melodia/audio_to_midi_melodia.py", line 174, in audio_to_midi_melodia
    parameters="voicing": 0.2)
  File "/usr/local/lib/python3.7/dist-packages/vamp/collect.py", line 166, in collect
    plugin, step_size, block_size = vamp.load.load_and_configure(data, sample_rate, plugin_key, parameters, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/vamp/load.py", line 83, in load_and_configure
    vampyhost.ADAPT_CHANNEL_COUNT)
TypeError: Failed to load plugin: mtg-melodia:melodia
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-35-c99e6fb96073> in <module>()
     84     print('\n'+files+'\n')
     85     wav_file=MP3_to_WAV(files)
---> 86     midi_file=wav_to_midi(wav_file)
     87 
     88 

2 frames
<ipython-input-35-c99e6fb96073> in execute(command)
     55         return output
     56     else:
---> 57         raise ProcessException(command, exitCode, output)
     58 
     59 

TypeError: __init__() takes 2 positional arguments but 4 were given

我猜肯定是python版本不匹配造成的,但是在这里问了。

感谢您的关注。

【问题讨论】:

【参考方案1】:

看起来根本问题是Vamp::HostExt::PluginLoader: No library found in Vamp path for plugin "mtg-melodia:melodia"

所以要么需要将 mtg-melodia:melodia 的路径添加到 Vamp 路径中,要么需要安装和配置 mtg-melodia:melodia。

您似乎正在使用以下网址中的说明来设置 mtg-melodia。您能否重新检查一下 mtg-melodia 的安装和配置详细信息,您可能错过了一个步骤。https://ourcodeworld.com/articles/read/983/how-to-extract-the-melody-from-an-audio-file-and-export-it-to-midi-generate-quantized-midi-using-python-in-ubuntu-18-04

【讨论】:

以上是关于通过python将MP3转换为midi(TypeError:加载插件失败:mtg-melodia:melodia)的主要内容,如果未能解决你的问题,请参考以下文章

将 MIDI 转换为 mp3

我需要一些帮助,使用 VLC(或任何其他软件)将 midis 批量转换为 mp3 及其各自的声音库 [关闭]

Python:从 type 0 转换为 type 1 midi

使用python将任何音频文件转换为mp3

通过 Python 在 Midi 的特定时间写笔记

将 midi 时间转换为小节和节拍