GithubHelp home page GithubHelp logo

manoskary / vocsep_ijcai2023 Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 0.0 133 KB

Code for the paper Musical Voice Separation as Link Prediction: Modeling a Musical Perception Task as a Multi-Trajectory Tracking Problem

License: MIT License

Python 100.00%
machine-learning music-information-retrieval symbolic-music voice-separation

vocsep_ijcai2023's Introduction

Voice Separation as Link Prediction - IJCAI 2023

This repository contains the code for the paper : Musical Voice Separation as Link Prediction: Modeling a Musical Perception Task as a Multi-Trajectory Tracking Problem

Abstract

This paper targets the perceptual task of separating the different interacting voices, i.e., monophonic melodic streams, in a polyphonic musical piece. We target symbolic music, where notes are explicitly encoded, and model this task as a Multi-Trajectory Tracking (MTT) problem from discrete observations, i.e., notes in a pitch-time space. Our approach builds a graph from a musical piece, by creating one node for every note, and separates the melodic trajectories by predicting a link between two notes if they are consecutive in the same voice/stream. This kind of local, greedy prediction is made possible by node embeddings created by a heterogeneous graph neural network that can capture inter- and intra-trajectory information. Furthermore, we propose a new regularization loss that encourages the output to respect the MTT premise of at most one incoming and one outgoing link for every node, favouring monophonic (voice) trajectories; this loss function might also be useful in other general MTT scenarios. Our approach does not use domain-specific heuristics, is scalable to longer sequences and a higher number of voices, and can handle complex cases such as voice inversions and overlaps. We reach new state-of-the-art results for the voice separation task in classical music of different styles.

Install and Run

It is suggested to create an environment using conda or miniconda more information here. If you have conda then do:

conda create -n vocsep python=3.8
conda activate vocsep

The suggested version of python is 3.8 or later. To install requirements and run just do:

pip install -r requirements.txt

The requirements installs the cpu version of Pytorch and Pytorch-Scatter If you want to run the code with CUDA please install the corresponding version of Pytorch and Pytorch-Scatter to your system (follow links for more information).

To run the code just do:

python -m main.py

For more information about the configuration you can add execute with the flag -h.

This project depends on WANDB therfore you will need an account to run the code.

Results

McLeod GMTT GMMT+LA
Datasets P R F1 P R F1 P R F1
Inventions 0.992 0.991 0.992 0.989 0.997 0.995 0.996 0.995 0.997
Sinfonias 0.982 0.982 0.982 0.987 0.989 0.978 0.987 0.982 0.985
WTC I 0.964 0.964 0.964 0.949 0.983 0.967 0.980 0.973 0.976
WTC II 0.964 0.964 0.964 0.945 0.979 0.962 0.976 0.968 0.972
Haydn 0.781 0.781 0.781 0.787 0.929 0.850 0.883 0.860 0.872

For all results and model visit our logs at WANDB.

vocsep_ijcai2023's People

Contributors

manoskary avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vocsep_ijcai2023's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.