CoolFace
Apppublic

elaine10csy/music_score_generation

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
App README

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

  1. 1.Audio Transcription: Convert audio files to MIDI format using basic-pitch.
  2. 2.Four-Voice Separation: Automatically assign notes to four parts (Soprano, Alto, Tenor, Bass).
  3. 3.Staff Notation Generation: Output MusicXML and four-voice MIDI files.
  4. 4.Paginated Piano Roll: Convert four-voice MIDI into paginated images for browsing (with optional single-part view).
  5. 5.Optional Pitch Annotation: Support for displaying MIDI numbers or note+octave (e.g., C4) in diagrams.
  6. 6.Web Playback: Play uploaded original audio and generated synthesized audio within the web interface.
  7. 7.Music Generation (Simple Synthesis): Generate sine-wave audio from four_voice_score.mid or transcribed.mid for quick preview.
  8. 8.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 file
  • —process_song.py: Main processing script
  • —voice_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)

bash
streamlit run app.py