elaine10csy/music_score_generation
0
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
Four-Voice Separation and Web Application
This project converts pure vocal audio files into four-part staff notation and provides a Streamlit-based web application for browsing paginated piano roll diagrams, playing audio, generating synthesized audio from MIDI, and calculating melodic similarity between the original audio and generated audio.
Features
- Audio Transcription: Convert audio files to MIDI format using
basic-pitch. - Four-Voice Separation: Automatically assign notes to four parts (Soprano, Alto, Tenor, Bass).
- Staff Notation Generation: Output MusicXML and four-voice MIDI files.
- Paginated Piano Roll: Convert four-voice MIDI into paginated images for browsing (with optional single-part view).
- Optional Pitch Annotation: Support for displaying MIDI numbers or note+octave (e.g., C4) in diagrams.
- Web Playback: Play uploaded original audio and generated synthesized audio within the web interface.
- Music Generation (Simple Synthesis): Generate sine-wave audio from
four_voice_score.midortranscribed.midfor quick preview. - Melodic Similarity: Compute similarity between original and generated audio using
pyin+DTW, and display results as pie charts.
File Descriptions
song.mp3: Input pure vocal audio fileprocess_song.py: Main processing scriptvoice_separation.py: Complete command-line tool (supports custom parameters)app.py: Streamlit web application (two tabs: Upload & Browse, Music Generation & Similarity)output/streamlit_runs/<timestamp_filename>/: Output directory for each web run (includes copies of original audio, MIDI, MusicXML, paginated images,generated_from_midi.wav, etc.)
Usage
Method 1: Run the Web Application (Recommended)
streamlit run app.py