通过python将MP3转换为midi(类型错误:无法加载插件:mtg-melodia:melodia)

问题描述 投票:0回答:2

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

所以我记得创建 mp3 格式的 midi 文件是一个大项目,我可能在将个人歌曲或音频文件导入到这个项目中时遇到困难。 (音频格式转MIDI,有些地方是用人工智能完成的(比如PolyphonicPianoTranscription),(AudiotoMIDI转换项目列表)。

所以我尝试通过这个功能将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 页面的 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版本不匹配而发生的,但是在这里被问到了。

感谢您的关注。

python audio mp3 midi
2个回答
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


0
投票

要安装插件集,请将插件的库文件和任何提供的类别或 RDF 文件复制到您的系统或个人 Vamp 插件位置。

插件文件扩展名和复制到的位置取决于您使用的操作系统:

您的操作系统插件的文件扩展名放置插件文件的位置macOS
.dylib
在Mac上:
  • 放置供所有用户使用的插件
    /Library/Audio/Plug-Ins/Vamp
  • 仅放置当前的插件用户在
    $HOME/Library/Audio/Plug-Ins/Vamp
  • 中的
    Library
    文件夹默认是隐藏的;有关如何显示它们的详细信息,请参阅此处
64位Windows
.dll
使用64位版本的Windows时:
  • 将32位插件放入
    C:\Program Files (x86)\Vamp Plugins
  • 放入64位插件
    C:\Program Files\Vamp Plugins
  • 32位和64位插件都可以使用,只要你把它们放在上面正确的位置即可
  • 如果插件包没有描述为64位,那么它就是32位位插件。一些较旧的插件仅以 32 位形式发布。
32 位 Windows
.dll
使用 32 位版本的 Windows 时:
  • 将 32 位插件放入
    C:\Program Files\Vamp Plugins
  • 不能使用 64 32 位 Windows 上根本没有位插件
  • 如果插件包未描述为 64 位,则它是 32 位插件。一些较旧的插件仅以 32 位形式发布。
Linux、其他 Unix
.so
在 Linux、BSD 系统等上:
  • 放置供所有用户使用的插件
    /usr/local/lib/vamp
  • 仅放置插件
    $HOME/vamp
  • 中的当前用户只能使用具有正确架构的插件(32位系统上使用32位插件,64位系统上使用64位插件)。

您也可以设置

VAMP_PATH
环境变量来覆盖 Vamp 插件的搜索路径。
VAMP_PATH
应包含以分号分隔(在 Windows 上)或以冒号分隔(macOS、Linux)的目录位置列表。如果设置了,它将完全覆盖上面列出的标准位置。 (注意:在 64 位 Windows 上使用 32 位插件时,某些主机将检查
VAMP_PATH_32
环境变量而不是
VAMP_PATH
。)

来源来自这里

© www.soinside.com 2019 - 2024. All rights reserved.