Violin_midi_pro / app.py
Hygee's picture
Upload 2 files
e717139 verified
raw
history blame
1.51 kB
import streamlit as st
import torch
from unidecode import unidecode
from musc.model import PretrainedModel
from unidecode import unidecode
import os
import sys
import torch
import json
#from yt_dlp import YoutubeDL
sys.path.append('MUSC_violin')
from MUSC_violin import musc
# Function to transcribe the WAV file and generate the MIDI file
def transcribe_and_generate_midi(wav_file_path, model, batch_size=32, postprocessing='spotify'):
midi, _, title = model.transcribe_wav(wav_file_path, batch_size=batch_size, postprocessing=postprocessing)
# Write the MIDI file
midi_file_name = unidecode(title) + '.mid'
midi.write(midi_file_name)
return midi_file_name, title
# Set up the Pretrained Model
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = PretrainedModel(instrument='violin').to(device)
# Streamlit UI
st.title("Violin to MIDI Converter")
uploaded_file = st.file_uploader("Upload your WAV file", type=["wav"])
if uploaded_file is not None:
st.write("File Uploaded Successfully!")
st.audio(uploaded_file, format='audio/wav')
if st.button("Convert to MIDI"):
try:
midi_file_name, title = transcribe_and_generate_midi(uploaded_file, model)
st.success(f"MIDI file generated successfully: {midi_file_name}")
st.audio(midi_file_name, format='audio/midi', label='Download MIDI')
except Exception as e:
st.error(f"Error: {str(e)}")
else:
st.info("Please upload a WAV file to convert to MIDI.")