Spaces:
Runtime error
Runtime error
File size: 1,633 Bytes
a931541 ff647b0 1de73a8 789718b ff647b0 e49932c 3f41985 a973402 3f41985 a973402 f19aeec e49932c 776a79b e49932c 50efdde e49932c a1f6dfc a9764fc ff647b0 1de73a8 e49932c c7cb9a5 ff647b0 c7cb9a5 a931541 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import gradio as gr
from musicautobot.utils.setup_musescore import play_wav
from music21.midi.translate import midiFileToStream
from pathlib import Path
from midi2audio import FluidSynth
from musicautobot.numpy_encode import *
from musicautobot.config import *
from musicautobot.music_transformer import *
from musicautobot.utils.midifile import *
from musicautobot.utils.file_processing import process_all
import pickle
import subprocess
import os
print(os.getcwd())
# Load the stored data. This is needed to generate the vocab.
data_dir = Path('data/')
data = load_data(data_dir, 'data.pkl')
# Default config options
config = default_config()
config['encode_position'] = True
# Load our fine-tuned model
learner = music_model_learner(
data,
config=config.copy(),
pretrained_path='model.pth'
)
def process_midi(midi_file):
name = Path(midi_file.name)
# create the model input object
item = MusicItem.from_file(name, data.vocab);
# full is the prediction appended to the input
pred, full = learn.predict(item, n_words=100)
# convert to stream and then MIDI file
stream = full.to_stream()
out = music21.midi.translate.streamToMidiFile(stream)
# save MIDI file
out.open('result.midi', 'wb')
out.write()
out.close()
# use fluidsynth to convert MIDI to WAV so the user can hear the output
sound_font = "/usr/share/sounds/sf2/FluidR3_GM.sf2"
FluidSynth(sound_font).midi_to_audio('result.midi', 'result.wav')
return 'result.wav'
iface = gr.Interface(
fn=process_midi,
inputs="file",
outputs="audio"
)
iface.launch() |