0

尝试调用 midi2audio 时出现 FileNotFoundError 错误。我正在使用 Python 3.6 - Anaconda - Windows 10。我的 .py 文件与 .sf2 和 .mid 文件位于同一文件夹中。我的代码是:

from midiutil.MidiFile import MIDIFile

from midi2audio import FluidSynth
soundfont = 'C:\\Users\\matteo.stante\\Documents\\4_Python_Scripts\\experiments\\JR_sax.sf2'

filepath = 'C:\\Users\\matteo.stante\\Documents\\4_Python_Scripts\\experiments\\input.mid'

fs = FluidSynth(sound_font=soundfont, sample_rate=22050)

fs.midi_to_audio(filepath, 'output.wav')

我希望在我的文件夹中创建一个 .wav 文件。我得到了:

runfile('C:/Users/matteo.stante/Documents/4_Python_Scripts/experiments/AudioBello.py', wdir='C:/Users/matteo.stante/Documents/4_Python_Scripts/experiments')
Traceback (most recent call last):

  File "<ipython-input-43-cdda6b922219>", line 1, in <module>
    runfile('C:/Users/matteo.stante/Documents/4_Python_Scripts/experiments/AudioBello.py', wdir='C:/Users/matteo.stante/Documents/4_Python_Scripts/experiments')

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/matteo.stante/Documents/4_Python_Scripts/experiments/AudioBello.py", line 26, in <module>
    fs.midi_to_audio(filepath, 'output.wav')

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\site-packages\midi2audio.py", line 46, in midi_to_audio
    subprocess.call(['fluidsynth', '-ni', self.sound_font, midi_file, '-F', audio_file, '-r', str(self.sample_rate)])

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\subprocess.py", line 267, in call
    with Popen(*popenargs, **kwargs) as p:

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 210, in __init__
    super(SubprocessPopen, self).__init__(*args, **kwargs)

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)

  File "C:\Users\matteo.stante\AppData\Local\Continuum\anaconda3\lib\subprocess.py", line 997, in _execute_child
    startupinfo)

FileNotFoundError: [WinError 2] Impossibile trovare il file specificato
4

1 回答 1

0
soundfont = 'C:\\Users\\matteo.stante\\Documents\\4_Python_Scripts\\experiments\\JR_sax.sf2'

filepath = 'C:\\Users\\matteo.stante\\Documents\\4_Python_Scripts\\experiments\\input.mid'
  • Windows:\\ (为什么是 2?因为 \ 被像 \n \r 这样的格式使用...所以你需要 2)
  • Linux:/

如果文件在同一个文件夹中,则

soundfont = 'R_sax.sf2'

filepath = 'input.mid'

编辑

我在我的电脑(Windows 10)上试过了,我得到了同样的错误。我的文档我没有找到任何关于操作系统的提及,但显然有一些 linux 命令。

在 Linux 操作系统上试试这个


编辑2

我付出了一点努力,也在 Linux 上进行了尝试。

1)错误相同 - 找不到文件

2)我发现您必须将文件夹放在路径上的某个位置 -command: $PATH

  • 我把它放到 /usr/local/bin/fluidsynth

3)新错误:权限被拒绝(即使使用root也无法通过)

4)我发现我没有安装流体合成器

命令:apt install fluidsynth

5)你的脚本工作(种类,output.wav 生成)

在此处输入图像描述

可能的解决方案

我相信问题 - 在 linux 上安装流体合成器之后 - 在 Windows 上安装流体合成器之后,您的 Windows 解决方案将得到解决。

http://www.fluidsynth.org/

于 2019-02-04T12:28:45.633 回答