Spaces:
Runtime error
Runtime error
File size: 2,026 Bytes
95addfe 4d6b66b 3d0ab7b d94feec 95addfe f04af8f 4d6b66b 95addfe 3d0ab7b 95addfe 4d6b66b 95addfe |
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 |
import streamlit as st
import numpy as np
import pretty_midi
from accompaniment_generator.generator.base import Generator
import os
import uuid
import time
from midi2audio import FluidSynth
from scipy.io import wavfile
def inference(audio, num_epoch):
generator = Generator()
output_midi_data = generator(audio, num_epoch=int(num_epoch))
name = uuid.uuid4()
output_midi_data.write(f'{name}.mid')
fs = FluidSynth("font.sf2")
fs.midi_to_audio(f'{name}.mid', f'{name}.wav')
fs.midi_to_audio(audio, f'{name}-init.wav')
# time.sleep(2)
print([f'{name}-init.wav', f'{name}.wav'])
return f'{name}-init.wav', f'{name}.wav'
st.title("Accompaniment Generator")
st.description = "Gradio demo for MIDI-DDSP: Detailed Control of Musical Performance via Hierarchical Modeling. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below."
article = "<p style='text-align: center'>" \
"<a href='https://github.com/AlekseyKorshuk/accompaniment-generator' target='_blank'>Github Repo</a>" \
"</p>"
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir("./examples") if isfile(join("./examples", f))]
model_name = st.selectbox(
'Select example MIDI file:',
onlyfiles
)
uploaded_file = st.file_uploader(
'Upload MIDI file:'
)
num_epoch = st.number_input("Number of epochs:",
min_value=1,
max_value=1000,
step=1,
value=10,
)
generate_image_button = st.button("Generate")
if generate_image_button:
input_file = f"./examples/{model_name}"
if uploaded_file is not None:
input_file = uploaded_file.name
with st.spinner(text=f"Generating, this may take some time..."):
before, after = inference(input_file, num_epoch)
st.markdown("Before:")
st.audio(before)
st.markdown("After:")
st.audio(after)
|