midi2audio/FluidSynth: [WinError 2] 系统找不到文件
midi2audio/FluidSynth: [WinError 2] The system cannot find the file
我在尝试调用 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
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'
编辑
我在我的 PC 上试过 (windows 10),我得到了同样的错误。我的文档中没有发现任何关于 OS 的提及,但显然有一些 linux 命令。
在 Linux OS
上试试这个
EDIT2
我也试了一下Linux
1) 错误相同 - 找不到文件
2) 我发现你必须将文件夹放在路径上的某个地方-command: $PATH
- 我把它放到/usr/local/bin/fluidsynth
3) 新错误:权限被拒绝(即使是 root 也无法通过)
4) 我发现我没有安装 fluidsynth
命令:apt 安装 fluidsynth
5) 你的脚本有效(有点,output.wav 生成)
可能的解决方案
我相信这个问题 - 在 linux 上安装 fluidsynth 后 - 在 windows.
上安装 fluidsynth 后你的 Windows 解决方案将得到解决
我在尝试调用 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
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'
编辑
我在我的 PC 上试过 (windows 10),我得到了同样的错误。我的文档中没有发现任何关于 OS 的提及,但显然有一些 linux 命令。
在 Linux OS
上试试这个EDIT2
我也试了一下Linux
1) 错误相同 - 找不到文件
2) 我发现你必须将文件夹放在路径上的某个地方-command: $PATH
- 我把它放到/usr/local/bin/fluidsynth
3) 新错误:权限被拒绝(即使是 root 也无法通过)
4) 我发现我没有安装 fluidsynth
命令:apt 安装 fluidsynth
5) 你的脚本有效(有点,output.wav 生成)
可能的解决方案
我相信这个问题 - 在 linux 上安装 fluidsynth 后 - 在 windows.
上安装 fluidsynth 后你的 Windows 解决方案将得到解决