Spaces:
Running
Running
forked from huggingface demucs
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .DS_Store +0 -0
- CODE_OF_CONDUCT.md +76 -0
- CONTRIBUTING.md +23 -0
- Demucs.ipynb +115 -0
- LICENSE +21 -0
- MANIFEST.in +6 -0
- Makefile +19 -0
- README.md +379 -13
- baselines/.DS_Store +0 -0
- baselines/IRM2/test/AM Contra - Heart Peripheral.json.gz +3 -0
- baselines/IRM2/test/Al James - Schoolboy Facination.json.gz +3 -0
- baselines/IRM2/test/Angels In Amplifiers - I'm Alright.json.gz +3 -0
- baselines/IRM2/test/Arise - Run Run Run.json.gz +3 -0
- baselines/IRM2/test/BKS - Bulldozer.json.gz +3 -0
- baselines/IRM2/test/BKS - Too Much.json.gz +3 -0
- baselines/IRM2/test/Ben Carrigan - We'll Talk About It All Tonight.json.gz +3 -0
- baselines/IRM2/test/Bobby Nobody - Stitch Up.json.gz +3 -0
- baselines/IRM2/test/Buitraker - Revo X.json.gz +3 -0
- baselines/IRM2/test/Carlos Gonzalez - A Place For Us.json.gz +3 -0
- baselines/IRM2/test/Cristina Vane - So Easy.json.gz +3 -0
- baselines/IRM2/test/Detsky Sad - Walkie Talkie.json.gz +3 -0
- baselines/IRM2/test/Enda Reilly - Cur An Long Ag Seol.json.gz +3 -0
- baselines/IRM2/test/Forkupines - Semantics.json.gz +3 -0
- baselines/IRM2/test/Georgia Wonder - Siren.json.gz +3 -0
- baselines/IRM2/test/Girls Under Glass - We Feel Alright.json.gz +3 -0
- baselines/IRM2/test/Hollow Ground - Ill Fate.json.gz +3 -0
- baselines/IRM2/test/James Elder & Mark M Thompson - The English Actor.json.gz +3 -0
- baselines/IRM2/test/Juliet's Rescue - Heartbeats.json.gz +3 -0
- baselines/IRM2/test/Little Chicago's Finest - My Own.json.gz +3 -0
- baselines/IRM2/test/Louis Cressy Band - Good Time.json.gz +3 -0
- baselines/IRM2/test/Lyndsey Ollard - Catching Up.json.gz +3 -0
- baselines/IRM2/test/M.E.R.C. Music - Knockout.json.gz +3 -0
- baselines/IRM2/test/Moosmusic - Big Dummy Shake.json.gz +3 -0
- baselines/IRM2/test/Motor Tapes - Shore.json.gz +3 -0
- baselines/IRM2/test/Mu - Too Bright.json.gz +3 -0
- baselines/IRM2/test/Nerve 9 - Pray For The Rain.json.gz +3 -0
- baselines/IRM2/test/PR - Happy Daze.json.gz +3 -0
- baselines/IRM2/test/PR - Oh No.json.gz +3 -0
- baselines/IRM2/test/Punkdisco - Oral Hygiene.json.gz +3 -0
- baselines/IRM2/test/Raft Monk - Tiring.json.gz +3 -0
- baselines/IRM2/test/Sambasevam Shanmugam - Kaathaadi.json.gz +3 -0
- baselines/IRM2/test/Secretariat - Borderline.json.gz +3 -0
- baselines/IRM2/test/Secretariat - Over The Top.json.gz +3 -0
- baselines/IRM2/test/Side Effects Project - Sing With Me.json.gz +3 -0
- baselines/IRM2/test/Signe Jakobsen - What Have You Done To Me.json.gz +3 -0
- baselines/IRM2/test/Skelpolu - Resurrection.json.gz +3 -0
- baselines/IRM2/test/Speak Softly - Broken Man.json.gz +3 -0
- baselines/IRM2/test/Speak Softly - Like Horses.json.gz +3 -0
- baselines/IRM2/test/The Doppler Shift - Atrophy.json.gz +3 -0
- baselines/IRM2/test/The Easton Ellises (Baumi) - SDRNR.json.gz +3 -0
.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Code of Conduct
|
| 2 |
+
|
| 3 |
+
## Our Pledge
|
| 4 |
+
|
| 5 |
+
In the interest of fostering an open and welcoming environment, we as
|
| 6 |
+
contributors and maintainers pledge to make participation in our project and
|
| 7 |
+
our community a harassment-free experience for everyone, regardless of age, body
|
| 8 |
+
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
| 9 |
+
level of experience, education, socio-economic status, nationality, personal
|
| 10 |
+
appearance, race, religion, or sexual identity and orientation.
|
| 11 |
+
|
| 12 |
+
## Our Standards
|
| 13 |
+
|
| 14 |
+
Examples of behavior that contributes to creating a positive environment
|
| 15 |
+
include:
|
| 16 |
+
|
| 17 |
+
* Using welcoming and inclusive language
|
| 18 |
+
* Being respectful of differing viewpoints and experiences
|
| 19 |
+
* Gracefully accepting constructive criticism
|
| 20 |
+
* Focusing on what is best for the community
|
| 21 |
+
* Showing empathy towards other community members
|
| 22 |
+
|
| 23 |
+
Examples of unacceptable behavior by participants include:
|
| 24 |
+
|
| 25 |
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
| 26 |
+
advances
|
| 27 |
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
| 28 |
+
* Public or private harassment
|
| 29 |
+
* Publishing others' private information, such as a physical or electronic
|
| 30 |
+
address, without explicit permission
|
| 31 |
+
* Other conduct which could reasonably be considered inappropriate in a
|
| 32 |
+
professional setting
|
| 33 |
+
|
| 34 |
+
## Our Responsibilities
|
| 35 |
+
|
| 36 |
+
Project maintainers are responsible for clarifying the standards of acceptable
|
| 37 |
+
behavior and are expected to take appropriate and fair corrective action in
|
| 38 |
+
response to any instances of unacceptable behavior.
|
| 39 |
+
|
| 40 |
+
Project maintainers have the right and responsibility to remove, edit, or
|
| 41 |
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
| 42 |
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
| 43 |
+
permanently any contributor for other behaviors that they deem inappropriate,
|
| 44 |
+
threatening, offensive, or harmful.
|
| 45 |
+
|
| 46 |
+
## Scope
|
| 47 |
+
|
| 48 |
+
This Code of Conduct applies within all project spaces, and it also applies when
|
| 49 |
+
an individual is representing the project or its community in public spaces.
|
| 50 |
+
Examples of representing a project or community include using an official
|
| 51 |
+
project e-mail address, posting via an official social media account, or acting
|
| 52 |
+
as an appointed representative at an online or offline event. Representation of
|
| 53 |
+
a project may be further defined and clarified by project maintainers.
|
| 54 |
+
|
| 55 |
+
## Enforcement
|
| 56 |
+
|
| 57 |
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
| 58 |
+
reported by contacting the project team at <opensource-conduct@fb.com>. All
|
| 59 |
+
complaints will be reviewed and investigated and will result in a response that
|
| 60 |
+
is deemed necessary and appropriate to the circumstances. The project team is
|
| 61 |
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
| 62 |
+
Further details of specific enforcement policies may be posted separately.
|
| 63 |
+
|
| 64 |
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
| 65 |
+
faith may face temporary or permanent repercussions as determined by other
|
| 66 |
+
members of the project's leadership.
|
| 67 |
+
|
| 68 |
+
## Attribution
|
| 69 |
+
|
| 70 |
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
| 71 |
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
| 72 |
+
|
| 73 |
+
[homepage]: https://www.contributor-covenant.org
|
| 74 |
+
|
| 75 |
+
For answers to common questions about this code of conduct, see
|
| 76 |
+
https://www.contributor-covenant.org/faq
|
CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Contributing to Demucs
|
| 2 |
+
|
| 3 |
+
## Pull Requests
|
| 4 |
+
|
| 5 |
+
In order to accept your pull request, we need you to submit a CLA. You only need
|
| 6 |
+
to do this once to work on any of Facebook's open source projects.
|
| 7 |
+
|
| 8 |
+
Complete your CLA here: <https://code.facebook.com/cla>
|
| 9 |
+
|
| 10 |
+
Demucs is the implementation of a research paper.
|
| 11 |
+
Therefore, we do not plan on accepting many pull requests for new features.
|
| 12 |
+
We certainly welcome them for bug fixes.
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
## Issues
|
| 16 |
+
|
| 17 |
+
We use GitHub issues to track public bugs. Please ensure your description is
|
| 18 |
+
clear and has sufficient instructions to be able to reproduce the issue.
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
## License
|
| 22 |
+
By contributing to this repository, you agree that your contributions will be licensed
|
| 23 |
+
under the LICENSE file in the root directory of this source tree.
|
Demucs.ipynb
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {
|
| 6 |
+
"colab_type": "text",
|
| 7 |
+
"id": "Be9yoh-ILfRr"
|
| 8 |
+
},
|
| 9 |
+
"source": [
|
| 10 |
+
"# [*Colab code for Demucs*](https://github.com/facebookresearch/demucs/)\n",
|
| 11 |
+
"\n",
|
| 12 |
+
"Original version by marlluslustosa **https://github.com/marlluslustosa/demucs/blob/master/Demucs.ipynb**\n",
|
| 13 |
+
"\n",
|
| 14 |
+
"However, now things are much simpler with Demucs v2, so this might not be so useful. There is now a Colab version:\n",
|
| 15 |
+
"https://colab.research.google.com/drive/1jCegIzLIuqqcM85uVs3WCeAJiSoYq3oh?usp=sharing"
|
| 16 |
+
]
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"cell_type": "code",
|
| 20 |
+
"execution_count": null,
|
| 21 |
+
"metadata": {
|
| 22 |
+
"colab": {
|
| 23 |
+
"base_uri": "https://localhost:8080/",
|
| 24 |
+
"height": 139
|
| 25 |
+
},
|
| 26 |
+
"colab_type": "code",
|
| 27 |
+
"executionInfo": {
|
| 28 |
+
"elapsed": 12277,
|
| 29 |
+
"status": "ok",
|
| 30 |
+
"timestamp": 1583778134659,
|
| 31 |
+
"user": {
|
| 32 |
+
"displayName": "Marllus Lustosa",
|
| 33 |
+
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgLl2RbW64ZyWz3Y8IBku0zhHCMnt7fz7fEl0LTdA=s64",
|
| 34 |
+
"userId": "14811735256675200480"
|
| 35 |
+
},
|
| 36 |
+
"user_tz": 180
|
| 37 |
+
},
|
| 38 |
+
"id": "kOjIPLlzhPfn",
|
| 39 |
+
"outputId": "c75f17ec-b576-4105-bc5b-c2ac9c1018a3"
|
| 40 |
+
},
|
| 41 |
+
"outputs": [],
|
| 42 |
+
"source": [
|
| 43 |
+
"!pip install demucs"
|
| 44 |
+
]
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"cell_type": "markdown",
|
| 48 |
+
"metadata": {
|
| 49 |
+
"colab_type": "text",
|
| 50 |
+
"id": "Y1BdlzOQi3y7"
|
| 51 |
+
},
|
| 52 |
+
"source": [
|
| 53 |
+
"\n",
|
| 54 |
+
"\n",
|
| 55 |
+
"---\n",
|
| 56 |
+
"\n",
|
| 57 |
+
"\n",
|
| 58 |
+
"# **Here begins the code for separating the audio source (model pretrained)**\n",
|
| 59 |
+
"###**- Upload your song to demucs/ folder and edit YOUR-SONG-PATH.mp3**\n",
|
| 60 |
+
"\n",
|
| 61 |
+
"\n",
|
| 62 |
+
"---\n",
|
| 63 |
+
"\n"
|
| 64 |
+
]
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"cell_type": "code",
|
| 68 |
+
"execution_count": null,
|
| 69 |
+
"metadata": {
|
| 70 |
+
"colab": {},
|
| 71 |
+
"colab_type": "code",
|
| 72 |
+
"id": "5lYOzKKCKAbJ"
|
| 73 |
+
},
|
| 74 |
+
"outputs": [],
|
| 75 |
+
"source": [
|
| 76 |
+
"!python3 -m demucs.separate test.mp3"
|
| 77 |
+
]
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"cell_type": "code",
|
| 81 |
+
"execution_count": null,
|
| 82 |
+
"metadata": {},
|
| 83 |
+
"outputs": [],
|
| 84 |
+
"source": []
|
| 85 |
+
}
|
| 86 |
+
],
|
| 87 |
+
"metadata": {
|
| 88 |
+
"accelerator": "GPU",
|
| 89 |
+
"colab": {
|
| 90 |
+
"authorship_tag": "ABX9TyM9xpVr1M86NRcjtQ7g9tCx",
|
| 91 |
+
"collapsed_sections": [],
|
| 92 |
+
"name": "Demucs.ipynb",
|
| 93 |
+
"provenance": []
|
| 94 |
+
},
|
| 95 |
+
"kernelspec": {
|
| 96 |
+
"display_name": "Python 3",
|
| 97 |
+
"language": "python",
|
| 98 |
+
"name": "python3"
|
| 99 |
+
},
|
| 100 |
+
"language_info": {
|
| 101 |
+
"codemirror_mode": {
|
| 102 |
+
"name": "ipython",
|
| 103 |
+
"version": 3
|
| 104 |
+
},
|
| 105 |
+
"file_extension": ".py",
|
| 106 |
+
"mimetype": "text/x-python",
|
| 107 |
+
"name": "python",
|
| 108 |
+
"nbconvert_exporter": "python",
|
| 109 |
+
"pygments_lexer": "ipython3",
|
| 110 |
+
"version": "3.8.3"
|
| 111 |
+
}
|
| 112 |
+
},
|
| 113 |
+
"nbformat": 4,
|
| 114 |
+
"nbformat_minor": 1
|
| 115 |
+
}
|
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) Facebook, Inc. and its affiliates.
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
MANIFEST.in
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
include *.md
|
| 2 |
+
include LICENSE
|
| 3 |
+
include setup.cfg
|
| 4 |
+
incude demucs.png
|
| 5 |
+
include requirements.txt
|
| 6 |
+
recursive-include docs *.md
|
Makefile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
default: tests
|
| 2 |
+
|
| 3 |
+
all: linter tests docs dist
|
| 4 |
+
|
| 5 |
+
linter:
|
| 6 |
+
flake8 demucs
|
| 7 |
+
|
| 8 |
+
tests:
|
| 9 |
+
python3 -m demucs.separate -n demucs_unittest test.mp3
|
| 10 |
+
python3 -m demucs.separate -n demucs_unittest --mp3 test.mp3
|
| 11 |
+
|
| 12 |
+
dist:
|
| 13 |
+
python3 setup.py sdist
|
| 14 |
+
|
| 15 |
+
clean:
|
| 16 |
+
rm -r dist build *.egg-info
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
.PHONY: linter tests dist
|
README.md
CHANGED
|
@@ -1,13 +1,379 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Music Source Separation in the Waveform Domain
|
| 2 |
+
|
| 3 |
+

|
| 4 |
+

|
| 5 |
+
|
| 6 |
+
**Branch was rename to main**: Run `git pull && git checkout main` to switch to the new branch.
|
| 7 |
+
|
| 8 |
+
**Demucs was just updated!**: much better SDR, smaller models, more data augmentation and PyPI support.
|
| 9 |
+
|
| 10 |
+
**For the initial version of Demucs:** [Go this commit][original_demucs].
|
| 11 |
+
If you are experiencing issues and want the old Demucs back, please fill an issue, and then you can get back to the v1 with
|
| 12 |
+
`git checkout v1`.
|
| 13 |
+
|
| 14 |
+
We provide an implementation of Demucs and Conv-Tasnet for music source separation on the [MusDB][musdb] dataset.
|
| 15 |
+
They can separate drums, bass and vocals from the rest with state-of-the-art results, surpassing previous waveform or spectrogram based methods.
|
| 16 |
+
The architecture and results obtained are detailed in our paper
|
| 17 |
+
[Music Source Separation in the waveform domain][demucs_arxiv].
|
| 18 |
+
|
| 19 |
+
Demucs is based on U-Net convolutional architecture inspired by [Wave-U-Net][waveunet] and
|
| 20 |
+
[SING][sing], with GLUs, a BiLSTM between the encoder and decoder, specific initialization of weights
|
| 21 |
+
and transposed convolutions in the decoder.
|
| 22 |
+
|
| 23 |
+
[Conv-Tasnet](https://arxiv.org/abs/1809.07454)
|
| 24 |
+
is a separation model developed for speech which predicts a mask on a learnt over-complete linear representation
|
| 25 |
+
using a purely convolutional model with stride of 1 and dilated convolutional blocks.
|
| 26 |
+
We reused the code from the [kaituoxu/Conv-TasNet][tasnet]
|
| 27 |
+
repository and added support for multiple audio channels.
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
Demucs achieves a state-of-the-art SDR performance of 6.3 when trained only on MusDB.
|
| 31 |
+
Conv-Tasnet achieves an SDR of 5.7, to be compared with the best performing spectrogram domain model [D3Net][d3net]
|
| 32 |
+
with an average SDR of 6.
|
| 33 |
+
Unlike Conv-Tasnet, Demucs reacts positively to pitch/tempo shift augmentation (+0.5 SDR). However, Demucs
|
| 34 |
+
still suffers from leakage from other sources, in particular between the vocals and other sources, which is less of a problem
|
| 35 |
+
for Conv-Tasnet. When trained with 150 extra tracks, Demucs reaches an SDR of 6.8, and even surpasses the IRM oracle
|
| 36 |
+
for the bass source (7.6 against 7.1 for the oracle).
|
| 37 |
+
See [our paper][demucs_arxiv] Section 6 for more details or listen to our
|
| 38 |
+
[audio samples][audio] .
|
| 39 |
+
|
| 40 |
+
<p align="center">
|
| 41 |
+
<img src="./demucs.png" alt="Schema representing the structure of Demucs,
|
| 42 |
+
with a convolutional encoder, a BiLSTM, and a decoder based on transposed convolutions."
|
| 43 |
+
width="800px"></p>
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
## Important news if you are already using Demucs
|
| 47 |
+
|
| 48 |
+
See the [release notes](./docs/release.md) for more details.
|
| 49 |
+
|
| 50 |
+
- 11/05/2021: Adding support for MusDB-HQ and arbitrary wav set, for the MDX challenge. For more information
|
| 51 |
+
on joining the challenge with Demucs see [the Demucs MDX instructions](docs/mdx.md)
|
| 52 |
+
- 28/04/2021: **Demucs v2**, with extra augmentation and DiffQ based quantization.
|
| 53 |
+
**EVERYTHING WILL BREAK**, please restart from scratch following the instructions hereafter.
|
| 54 |
+
This version also adds overlap between prediction frames, with linear transition from one to the next,
|
| 55 |
+
which should prevent sudden changes at frame boundaries. Also, Demucs is now on PyPI, so for separation
|
| 56 |
+
only, installation is as easy as `pip install demucs` :)
|
| 57 |
+
- 13/04/2020: **Demucs released under MIT**: We are happy to release Demucs under the MIT licence.
|
| 58 |
+
We hope that this will broaden the impact of this research to new applications.
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
## Comparison with other models
|
| 62 |
+
|
| 63 |
+
An audio comparison of Demucs and Conv-Tasnet with other state-of-the-art methods such as [Wave-U-Net][waveunet], [OpenUnmix][openunmix] or
|
| 64 |
+
[MMDenseLSTM][mmdenselstm] is available on [the audio comparison page][audio].
|
| 65 |
+
We provide hereafter a summary of the different metrics presented in the paper.
|
| 66 |
+
You can also compare [Spleeter][spleeter], Open-Unmix, Demucs and Conv-Tasnet on one of my favorite
|
| 67 |
+
songs on our [soundcloud playlist][soundcloud].
|
| 68 |
+
|
| 69 |
+
### Comparison of accuracy
|
| 70 |
+
|
| 71 |
+
`Overall SDR` is the mean of the SDR for each of the 4 sources, `MOS Quality` is a rating from 1 to 5
|
| 72 |
+
of the naturalness and absence of artifacts given by human listeners (5 = no artifacts), `MOS Contamination`
|
| 73 |
+
is a rating from 1 to 5 with 5 being zero contamination by other sources. We refer the reader to our [paper][demucs_arxiv], Section 5 and 6,
|
| 74 |
+
for more details.
|
| 75 |
+
|
| 76 |
+
| Model | Domain | Extra data? | Overall SDR | MOS Quality | MOS Contamination |
|
| 77 |
+
| ------------- |-------------| -----:|------:|----:|----:|
|
| 78 |
+
| [Open-Unmix][openunmix] | spectrogram | no | 5.3 | 3.0 | 3.3 |
|
| 79 |
+
| [D3Net][d3net] | spectrogram | no | 6.0 | - | - |
|
| 80 |
+
| [Wave-U-Net][waveunet] | waveform | no | 3.2 | - | - |
|
| 81 |
+
| Demucs (this) | waveform | no | **6.3** | **3.2** | 3.3 |
|
| 82 |
+
| Conv-Tasnet (this) | waveform | no | 5.7 | 2.9 | **3.4** |
|
| 83 |
+
| Demucs (this) | waveform | 150 songs | **6.8** | - | - |
|
| 84 |
+
| Conv-Tasnet (this) | waveform | 150 songs | 6.3 | - | - |
|
| 85 |
+
| [MMDenseLSTM][mmdenselstm] | spectrogram | 804 songs | 6.0 | - | - |
|
| 86 |
+
| [D3Net][d3net] | spectrogram | 1.5k songs | 6.7 | - | - |
|
| 87 |
+
| [Spleeter][spleeter] | spectrogram | 25k songs | 5.9 | - | - |
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
## Requirements
|
| 92 |
+
|
| 93 |
+
You will need at least Python 3.7. See `requirements.txt` for requirements for separation only,
|
| 94 |
+
and `environment-[cpu|cuda].yml` if you want to train a new model.
|
| 95 |
+
|
| 96 |
+
### For Windows users
|
| 97 |
+
|
| 98 |
+
Everytime you see `python3`, replace it with `python.exe`. You should always run commands from the
|
| 99 |
+
Anaconda console.
|
| 100 |
+
|
| 101 |
+
### For musicians
|
| 102 |
+
|
| 103 |
+
If you just want to use Demucs to separate tracks, you can install it with
|
| 104 |
+
|
| 105 |
+
python3 -m pip -U install demucs
|
| 106 |
+
|
| 107 |
+
Advanced OS support are provided on the following page, **you must read the page for your OS before posting an issues**:
|
| 108 |
+
- **If you are using Windows:** [Windows support](docs/windows.md).
|
| 109 |
+
- **If you are using MAC OS X:** [Mac OS X support](docs/mac.md).
|
| 110 |
+
- **If you are using Linux:** [Linux support](docs/linux.md).
|
| 111 |
+
|
| 112 |
+
### For machine learning scientists
|
| 113 |
+
|
| 114 |
+
If you have anaconda installed, you can run from the root of this repository:
|
| 115 |
+
|
| 116 |
+
conda env update -f environment-cpu.yml # if you don't have GPUs
|
| 117 |
+
conda env update -f environment-cuda.yml # if you have GPUs
|
| 118 |
+
conda activate demucs
|
| 119 |
+
pip install -e .
|
| 120 |
+
|
| 121 |
+
This will create a `demucs` environment with all the dependencies installed.
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
You will also need to install [soundstretch/soundtouch](https://www.surina.net/soundtouch/soundstretch.html): on Mac OSX you can do `brew install sound-touch`,
|
| 125 |
+
and on Ubuntu `sudo apt-get install soundstretch`. This is used for the
|
| 126 |
+
pitch/tempo augmentation.
|
| 127 |
+
|
| 128 |
+
### Running in Docker
|
| 129 |
+
|
| 130 |
+
Thanks to @xserrat, there is now a Docker image definition ready for using Demucs. This can ensure all libraries are correctly installed without interfering with the host OS. See his repo [Docker Facebook Demucs](https://github.com/xserrat/docker-facebook-demucs) for more information.
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
### Running from Colab
|
| 134 |
+
|
| 135 |
+
I made a Colab to easily separate track with Demucs. Note that
|
| 136 |
+
transfer speeds with Colab are a bit slow for large media files,
|
| 137 |
+
but it will allow you to use Demucs without installing anything.
|
| 138 |
+
|
| 139 |
+
[Demucs on Google Colab](https://colab.research.google.com/drive/1jCegIzLIuqqcM85uVs3WCeAJiSoYq3oh?usp=sharing)
|
| 140 |
+
|
| 141 |
+
## Separating tracks
|
| 142 |
+
|
| 143 |
+
In order to try Demucs or Conv-Tasnet on your tracks, simply run from the root of this repository
|
| 144 |
+
|
| 145 |
+
```bash
|
| 146 |
+
python3 -m demucs.separate PATH_TO_AUDIO_FILE_1 [PATH_TO_AUDIO_FILE_2 ...] # for Demucs
|
| 147 |
+
python3 -m demucs.separate --mp3 PATH_TO_AUDIO_FILE_1 --mp3-bitrate BITRATE # output files saved as MP3
|
| 148 |
+
python3 -m demucs.separate -n tasnet PATH_TO_AUDIO_FILE_1 ... # for Conv-Tasnet
|
| 149 |
+
```
|
| 150 |
+
|
| 151 |
+
If you have a GPU, but you run out of memory, please add `-d cpu` to the command line. See the section hereafter for more details on the memory requirements for GPU acceleration.
|
| 152 |
+
|
| 153 |
+
Separated tracks are stored in the `separated/MODEL_NAME/TRACK_NAME` folder. There you will find four stereo wav files sampled at 44.1 kHz: `drums.wav`, `bass.wav`,
|
| 154 |
+
`other.wav`, `vocals.wav` (or `.mp3` if you used the `--mp3` option).
|
| 155 |
+
|
| 156 |
+
All audio formats supported by `torchaudio` can be processed (i.e. wav, mp3, flac, ogg/vorbis etc.).
|
| 157 |
+
Audio is resampled on the fly if necessary.
|
| 158 |
+
The output will be a wave file, either in int16 format or float32 (if `--float32` is passed).
|
| 159 |
+
You can pass `--mp3` to save as mp3 instead, and set the bitrate with `--mp3-bitrate` (default is 320kbps).
|
| 160 |
+
|
| 161 |
+
Other pre-trained models can be selected with the `-n` flag.
|
| 162 |
+
The list of pre-trained models is:
|
| 163 |
+
- `demucs`: Demucs trained on MusDB,
|
| 164 |
+
- `demucs_quantized`: Quantized Demucs with [diffq](https://github.com/facebookresearch/diffq),
|
| 165 |
+
this is much smaller (150MB instead of 1GB) and quality should be exactly the same. Let me know if you disagree.
|
| 166 |
+
As a result, this is the one used by default.
|
| 167 |
+
- `demucs_extra`: Demucs trained with extra training data,
|
| 168 |
+
- `demucs48_hq`: Demucs with 48 initial hidden channels, trained on [MusDB-HQ](https://zenodo.org/record/3338373),
|
| 169 |
+
used as a baseline for the [Music Demixing Challenge 2021](https://www.aicrowd.com/challenges/music-demixing-challenge-ismir-2021),
|
| 170 |
+
- `tasnet`: Conv-Tasnet trained on MusDB,
|
| 171 |
+
- `tasnet_extra`: Conv-Tasnet trained with extra training data.
|
| 172 |
+
|
| 173 |
+
|
| 174 |
+
The `--shifts=SHIFTS` performs multiple predictions with random shifts (a.k.a the *shift trick*) of the input and average them. This makes prediction `SHIFTS` times
|
| 175 |
+
slower but improves the accuracy of Demucs by 0.2 points of SDR.
|
| 176 |
+
It has limited impact on Conv-Tasnet as the model is by nature almost time equivariant.
|
| 177 |
+
The value of 10 was used on the original paper, although 5 yields mostly the same gain.
|
| 178 |
+
It is deactivated by default but it does make vocals a bit smoother.
|
| 179 |
+
|
| 180 |
+
The `--overlap` option controls the amount of overlap between prediction windows (for Demucs one window is 10 seconds).
|
| 181 |
+
Default is 0.25 (i.e. 25%) which is probably fine.
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
### Memory requirements for GPU acceleration
|
| 185 |
+
|
| 186 |
+
If you want to use GPU acceleration, you will need at least 8GB of RAM on your GPU for `demucs` and 4GB for `tasnet`. Sorry, the code for demucs is not super optimized for memory! If you do not have enough memory on your GPU, simply add `-d cpu` to the command line to use the CPU. With Demucs, processing time should be roughly equal to the duration of the track.
|
| 187 |
+
|
| 188 |
+
|
| 189 |
+
## Examining the results from the paper experiments
|
| 190 |
+
|
| 191 |
+
The metrics for our experiments are stored in the `results` folder. In particular
|
| 192 |
+
`museval` json evaluations are stored in `results/evals/EXPERIMENT NAME/results`.
|
| 193 |
+
You can aggregate and display the results using
|
| 194 |
+
```bash
|
| 195 |
+
python3 valid_table.py -p # show valid loss, aggregated with multiple random seeds
|
| 196 |
+
python3 result_table.py -p # show SDR on test set, aggregated with multiple random seeds
|
| 197 |
+
python3 result_table.py -p SIR # also SAR, ISR, show other metrics
|
| 198 |
+
```
|
| 199 |
+
The `std` column shows the standard deviation divided by the square root of the number of runs.
|
| 200 |
+
|
| 201 |
+
## Training Demucs and evaluating on the MusDB dataset
|
| 202 |
+
|
| 203 |
+
If you want to train Demucs from scratch, you will need a copy of the MusDB dataset.
|
| 204 |
+
It can be obtained on the [MusDB website][musdb].
|
| 205 |
+
To start training on a single GPU or CPU, use:
|
| 206 |
+
```bash
|
| 207 |
+
python3 -m demucs -b 4 --musdb MUSDB_PATH # Demucs
|
| 208 |
+
python3 -m demucs -b 4 --musdb MUSDB_PATH --tasnet --samples=80000 --split_valid # Conv-Tasnet
|
| 209 |
+
```
|
| 210 |
+
The `-b 4` flag will set the batch size to 4. The default is 4 and will crash on a single GPU.
|
| 211 |
+
Demucs was trained on 8 V100 with 32GB of RAM.
|
| 212 |
+
The default parameters (batch size, number of channels etc)
|
| 213 |
+
might not be suitable for 16GB GPUs.
|
| 214 |
+
To train on all available GPUs, use:
|
| 215 |
+
```bash
|
| 216 |
+
python3 run.py --musdb MUSDB_PATH [EXTRA_FLAGS]
|
| 217 |
+
```
|
| 218 |
+
|
| 219 |
+
This will launch one process per GPU and report the output of the first one. When interrupting
|
| 220 |
+
such a run, it is possible some of the children processes are not killed properly, be mindful of that.
|
| 221 |
+
If you want to use only some of the available GPUs, export the `CUDA_VISIBLE_DEVICES` variable to
|
| 222 |
+
select those.
|
| 223 |
+
|
| 224 |
+
To see all the possible options, use `python3 -m demucs --help`.
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
### MusDB HQ
|
| 228 |
+
|
| 229 |
+
To train on MusDB HQ, use the following flags:
|
| 230 |
+
|
| 231 |
+
```bash
|
| 232 |
+
python3 -m demucs -b 4 --musdb MUSDB_HQ_PATH --is_wav [...]
|
| 233 |
+
```
|
| 234 |
+
|
| 235 |
+
### Custom wav dataset
|
| 236 |
+
|
| 237 |
+
You can trained on a custom wav dataset using the following command.
|
| 238 |
+
At the moment, you still need to pass the MusDB path for evaluation, and the model
|
| 239 |
+
must use the standard sources (bass, drums, other, vocals). However, it should be relatively
|
| 240 |
+
easy to fork the code to support different patterns.
|
| 241 |
+
|
| 242 |
+
```bash
|
| 243 |
+
python3 -m demucs -b 4 --wav PATH_TO_WAV_DATASET [...]
|
| 244 |
+
```
|
| 245 |
+
|
| 246 |
+
The folder `PATH_TO_WAV_DATASET` should contain two sub-directories : `train` and `valid`. Each of those
|
| 247 |
+
should contain one folder per track. Each track folder must contain one file for each source (`drums.wav`, `bass.wav`, `other.wav`, `vocals.wav`) and one file for the mixture (`mixture.wav`).
|
| 248 |
+
|
| 249 |
+
By default, the custom wav dataset will replace MusDB. To concatenate it with MusDB, pass `--concat` (if you are using musdbhq, dont forget to pass `--is_wav`).
|
| 250 |
+
|
| 251 |
+
### Fine tuning
|
| 252 |
+
|
| 253 |
+
You can fine tune from one of the pre-trained models listed in the [Separating tracks Section](#separating-tracks)
|
| 254 |
+
by passing the `--init=PRETRAINED_NAME`, i.e. for Demucs or ConvTasnet:
|
| 255 |
+
|
| 256 |
+
```bash
|
| 257 |
+
python3 -m demucs -b 4 --musdb MUSDB_PATH --init demucs # Demucs
|
| 258 |
+
python3 -m demucs -b 4 --musdb MUSDB_PATH --tasnet --samples=80000 --split_valid --init tasnet # Conv-Tasnet
|
| 259 |
+
```
|
| 260 |
+
|
| 261 |
+
### About checkpointing
|
| 262 |
+
|
| 263 |
+
Demucs will automatically generate an experiment name from the command line flags you provided.
|
| 264 |
+
It will checkpoint after every epoch. If a checkpoint already exist for the combination of flags
|
| 265 |
+
you provided, it will be automatically used. In order to ignore/delete a previous checkpoint,
|
| 266 |
+
run with the `-R` flag.
|
| 267 |
+
The optimizer state, the latest model and the best model on valid are stored. At the end of each
|
| 268 |
+
epoch, the checkpoint will erase the one from the previous epoch.
|
| 269 |
+
By default, checkpoints are stored in the `./checkpoints` folder. This can be changed using the
|
| 270 |
+
`--checkpoints CHECKPOINT_FOLDER` flag.
|
| 271 |
+
|
| 272 |
+
Not all options will impact the name of the experiment. For instance `--workers` is not
|
| 273 |
+
shown in the name, therefore, changing this parameter will not impact the checkpoint file
|
| 274 |
+
used. Refer to [parser.py](demucs/parser.py) for more details.
|
| 275 |
+
|
| 276 |
+
|
| 277 |
+
### Test set evaluations
|
| 278 |
+
|
| 279 |
+
Test set evaluations computed with [museval][museval] will be stored under
|
| 280 |
+
`evals/EXPERIMENT NAME/results`. The experiment name
|
| 281 |
+
is the first thing printed when running `python3 run.py` or `python3 -m demucs`. If you used
|
| 282 |
+
the flag `--save`, there will also be a folder `evals/EXPERIMENT NAME/wavs` containing
|
| 283 |
+
all the extracted waveforms.
|
| 284 |
+
|
| 285 |
+
|
| 286 |
+
#### Running on a cluster
|
| 287 |
+
|
| 288 |
+
If you have a cluster available with Slurm, you can set the `run_slurm.py` as the target of a
|
| 289 |
+
slurm job, using as many nodes as you want and a single task per node. `run_slurm.py` will
|
| 290 |
+
create one process per GPU and run in a distributed manner. Multinode training is supported.
|
| 291 |
+
|
| 292 |
+
### Extracting Raw audio for faster loading
|
| 293 |
+
|
| 294 |
+
We observed that loading from compressed mp4 audio lead to unreliable speed, sometimes reducing by
|
| 295 |
+
a factor of 2 the number of iterations per second. It is possible to extract all data
|
| 296 |
+
to raw PCM f32e format. If you wish to store the raw data under `RAW_PATH`, run the following
|
| 297 |
+
command first:
|
| 298 |
+
|
| 299 |
+
```bash
|
| 300 |
+
python3 -m demucs.raw [--workers=10] MUSDB_PATH RAW_PATH
|
| 301 |
+
```
|
| 302 |
+
|
| 303 |
+
You can then train using the `--raw RAW_PATH` flag, for instance:
|
| 304 |
+
```bash
|
| 305 |
+
python3 run.py --raw RAW_PATH --musdb MUSDB_PATH
|
| 306 |
+
```
|
| 307 |
+
You still need to provide the path to the MusDB dataset as we always load the test set
|
| 308 |
+
from the original MusDB.
|
| 309 |
+
|
| 310 |
+
|
| 311 |
+
### Results reproduction
|
| 312 |
+
To reproduce the performance of the main Demucs model in our paper:
|
| 313 |
+
```bash
|
| 314 |
+
# Extract raw waveforms. This is optional
|
| 315 |
+
python3 -m demucs.data MUSDB_PATH RAW_PATH
|
| 316 |
+
export DEMUCS_RAW=RAW_PATH
|
| 317 |
+
# Train models with default parameters and multiple seeds
|
| 318 |
+
python3 run.py --seed 42 # for Demucs
|
| 319 |
+
python3 run.py --seed 42 --tasnet --X=10 --samples=80000 --epochs=180 --split_valid # for Conv-Tasnet
|
| 320 |
+
# Repeat for --seed = 43, 44, 45 and 46
|
| 321 |
+
```
|
| 322 |
+
|
| 323 |
+
You can visualize the results aggregated on multiple seeds using
|
| 324 |
+
```bash
|
| 325 |
+
python3 valid_table.py # compare validation losses
|
| 326 |
+
python3 result_table.py # compare test SDR
|
| 327 |
+
python3 result_table.py SIR # compare test SIR, also available ISR, and SAR
|
| 328 |
+
```
|
| 329 |
+
|
| 330 |
+
You can look at our exploration file [dora.py](dora.py) to see the exact flags
|
| 331 |
+
for all experiments (grid search and ablation study). If you have a Slurm cluster,
|
| 332 |
+
you can also try adapting it to run on your own.
|
| 333 |
+
|
| 334 |
+
|
| 335 |
+
### Environment variables
|
| 336 |
+
|
| 337 |
+
If you do not want to always specify the path to MUSDB, you can export the following variables:
|
| 338 |
+
```bash
|
| 339 |
+
export DEMUCS_MUSDB=PATH TO MUSDB
|
| 340 |
+
# Optionally, if you extracted raw pcm data
|
| 341 |
+
# export DEMUCS_RAW=PATH TO RAW PCM
|
| 342 |
+
```
|
| 343 |
+
|
| 344 |
+
## How to cite
|
| 345 |
+
|
| 346 |
+
```
|
| 347 |
+
@article{defossez2019music,
|
| 348 |
+
title={Music Source Separation in the Waveform Domain},
|
| 349 |
+
author={D{\'e}fossez, Alexandre and Usunier, Nicolas and Bottou, L{\'e}on and Bach, Francis},
|
| 350 |
+
journal={arXiv preprint arXiv:1911.13254},
|
| 351 |
+
year={2019}
|
| 352 |
+
}
|
| 353 |
+
```
|
| 354 |
+
|
| 355 |
+
## License
|
| 356 |
+
|
| 357 |
+
Demucs is released under the MIT license as found in the [LICENSE](LICENSE) file.
|
| 358 |
+
|
| 359 |
+
The file `demucs/tasnet.py` is adapted from the [kaituoxu/Conv-TasNet][tasnet] repository.
|
| 360 |
+
It was originally released under the MIT License updated to support multiple audio channels.
|
| 361 |
+
|
| 362 |
+
|
| 363 |
+
[nsynth]: https://magenta.tensorflow.org/datasets/nsynth
|
| 364 |
+
[sing_nips]: https://research.fb.com/publications/sing-symbol-to-instrument-neural-generator
|
| 365 |
+
[sing]: https://github.com/facebookresearch/SING
|
| 366 |
+
[waveunet]: https://github.com/f90/Wave-U-Net
|
| 367 |
+
[musdb]: https://sigsep.github.io/datasets/musdb.html
|
| 368 |
+
[museval]: https://github.com/sigsep/sigsep-mus-eval/
|
| 369 |
+
[openunmix]: https://github.com/sigsep/open-unmix-pytorch
|
| 370 |
+
[mmdenselstm]: https://arxiv.org/abs/1805.02410
|
| 371 |
+
[demucs_arxiv]: https://hal.archives-ouvertes.fr/hal-02379796/document
|
| 372 |
+
[musevalpth]: museval_torch.py
|
| 373 |
+
[tasnet]: https://github.com/kaituoxu/Conv-TasNet
|
| 374 |
+
[audio]: https://ai.honu.io/papers/demucs/index.html
|
| 375 |
+
[spleeter]: https://github.com/deezer/spleeter
|
| 376 |
+
[soundcloud]: https://soundcloud.com/voyageri/sets/source-separation-in-the-waveform-domain
|
| 377 |
+
[original_demucs]: https://github.com/facebookresearch/demucs/tree/dcee007a350467abc3295dfe267034460f9ffa4e
|
| 378 |
+
[diffq]: https://github.com/facebookresearch/diffq
|
| 379 |
+
[d3net]: https://arxiv.org/abs/2010.01733
|
baselines/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
baselines/IRM2/test/AM Contra - Heart Peripheral.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7a1e79ff415009526e480beba3666e14b163fe33c23dab4040e2077e25c61bbe
|
| 3 |
+
size 26828
|
baselines/IRM2/test/Al James - Schoolboy Facination.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8caae5351b7dd0bc7fce2ee4cc915e291ed4636709dfbaf19962aee0f0a618ab
|
| 3 |
+
size 24865
|
baselines/IRM2/test/Angels In Amplifiers - I'm Alright.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ed9d8a341ceb370fa8e8b7cc6f336def7efa00941edac1cb834f573fd5c82253
|
| 3 |
+
size 23052
|
baselines/IRM2/test/Arise - Run Run Run.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9066cfe82dc69614fae9338dcfdef5a65f7e2ebdb7dadadb6d27df321d6c3005
|
| 3 |
+
size 25900
|
baselines/IRM2/test/BKS - Bulldozer.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9a54943bbd84ca3474a1bf2985d5c34796b1eebe8291f9d84807b1b81695cf24
|
| 3 |
+
size 42911
|
baselines/IRM2/test/BKS - Too Much.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:57c5c90e3cbb955ce0210cc6d5aaad3af84ff23493aea10e6c30f189fc364c87
|
| 3 |
+
size 21123
|
baselines/IRM2/test/Ben Carrigan - We'll Talk About It All Tonight.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ed5db465dd93085a257b3044c55c2381ffd60845067ed47f0d6ad6d9b1061d10
|
| 3 |
+
size 20579
|
baselines/IRM2/test/Bobby Nobody - Stitch Up.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:74f77a2bf52249b78c23a9be577de79d9168d95cf00fb3a674468ec35342f5ba
|
| 3 |
+
size 23353
|
baselines/IRM2/test/Buitraker - Revo X.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:feee80b8fa70d36eb2ef8a7de45c087db7cec4b6b0145218d14a4be99ed9f785
|
| 3 |
+
size 28203
|
baselines/IRM2/test/Carlos Gonzalez - A Place For Us.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3aaadf03103b92715015653ec7d5af59db586dc8d45c4ced2b2ef5e4db4f8e83
|
| 3 |
+
size 31961
|
baselines/IRM2/test/Cristina Vane - So Easy.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8470eebddeb221bf2702c162cc7f19c2d5e7f8eb14d6520ad1e060165c7773b6
|
| 3 |
+
size 28275
|
baselines/IRM2/test/Detsky Sad - Walkie Talkie.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bf8778f15c4ad7bb3fa30428ca2d780be40b22f3268227d01e5ae803afda180c
|
| 3 |
+
size 11024
|
baselines/IRM2/test/Enda Reilly - Cur An Long Ag Seol.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:14e7d069a2840224a8876fdc7f328ca52a865e6540a2939c3c2aef0ccd6fe7df
|
| 3 |
+
size 21139
|
baselines/IRM2/test/Forkupines - Semantics.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ba47a499b526cde808fbb10ca2858886c4606f1bccee921ae54721091573a80f
|
| 3 |
+
size 21237
|
baselines/IRM2/test/Georgia Wonder - Siren.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cca85c851447e94539bfdefe0b00a6fcb4746e34197058b2dc8b4feb46b193a1
|
| 3 |
+
size 36791
|
baselines/IRM2/test/Girls Under Glass - We Feel Alright.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9a7e24e0628f44ee1cc774e2c454ac4cea0a9c63064348af6e33225505c2f1d2
|
| 3 |
+
size 21935
|
baselines/IRM2/test/Hollow Ground - Ill Fate.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8f37c5bc36becaed3d9649b36e6d68b8f4a86960b4103fcc2f5710fa772dae37
|
| 3 |
+
size 12330
|
baselines/IRM2/test/James Elder & Mark M Thompson - The English Actor.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:09faaffbfd9825a3104c935ac27da722700c895f1c5c095b6f9570ed551a189a
|
| 3 |
+
size 20687
|
baselines/IRM2/test/Juliet's Rescue - Heartbeats.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a5ec942c2019fabba64dbbcad131b7ac986f126d87fdb9ebbd3c8d139217d158
|
| 3 |
+
size 27498
|
baselines/IRM2/test/Little Chicago's Finest - My Own.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fdaf06d216ad224f0c78ca9163f190311157718618e17e462bd781d1b36c3e25
|
| 3 |
+
size 31610
|
baselines/IRM2/test/Louis Cressy Band - Good Time.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f7191c053ebc148d9ca86e6583cb0ecafaa773e4e0107a5d7c0915bab034c03e
|
| 3 |
+
size 21264
|
baselines/IRM2/test/Lyndsey Ollard - Catching Up.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a54bda98c9b061c4c994b173df4b1c895de56475484cb29973e2a86c5133699b
|
| 3 |
+
size 25709
|
baselines/IRM2/test/M.E.R.C. Music - Knockout.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1e81ed157dec77de057bbb712ad78bf574305d8d2ef4d24e84f2a8ca69ce88ee
|
| 3 |
+
size 26605
|
baselines/IRM2/test/Moosmusic - Big Dummy Shake.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:164e3f93976f698750757c21dd5c77e932c90b7f5cbccae6c44a976abc86ff86
|
| 3 |
+
size 22563
|
baselines/IRM2/test/Motor Tapes - Shore.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1938098d0212e9afdff2a0371887b66842718fdca141ce9c017ceadc9e2ef822
|
| 3 |
+
size 25089
|
baselines/IRM2/test/Mu - Too Bright.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68ca54ac8985fbad1c47137ced2e302831bb9c5b35ddb2c6c45ec4f8848ea3bf
|
| 3 |
+
size 22522
|
baselines/IRM2/test/Nerve 9 - Pray For The Rain.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:829f8efcda9469b277961892dff22d4b569a3e57f7cc29bc773e686d9a23455b
|
| 3 |
+
size 32881
|
baselines/IRM2/test/PR - Happy Daze.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e0d41b2eb0aff25e1e1ba1e884a50257bfb1e87905bc396a2cd2cf6eda0f5e7d
|
| 3 |
+
size 21052
|
baselines/IRM2/test/PR - Oh No.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cd6a60a64165c2f4f427f041c6955a18776858201afc293c9eb50f92b82369bf
|
| 3 |
+
size 9804
|
baselines/IRM2/test/Punkdisco - Oral Hygiene.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4186d9e9b295ffc6ef41e39534d1109d19b0182cb92288b7a7abdca8afb1aaff
|
| 3 |
+
size 19114
|
baselines/IRM2/test/Raft Monk - Tiring.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:535a886ce8cdf756f489fc36cf7d73298d09839e241121f5039046c96be1d20b
|
| 3 |
+
size 23263
|
baselines/IRM2/test/Sambasevam Shanmugam - Kaathaadi.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:648a338396f76e002c61f3bd10323cebc155a7675e630ac6dbee8335fcdf2828
|
| 3 |
+
size 23183
|
baselines/IRM2/test/Secretariat - Borderline.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ac1a105faf4ee9bb3ec09273d21aeadf5de7752cb0eb0ca292f673210d77bfd3
|
| 3 |
+
size 27299
|
baselines/IRM2/test/Secretariat - Over The Top.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2e1a432abaa8b5e5bf6fdc6df892706e047dc5bd96e2e2da874dca5f14684441
|
| 3 |
+
size 21642
|
baselines/IRM2/test/Side Effects Project - Sing With Me.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:594dc701ab7ce759ff1006e8947688f1609e9bc87a18aba638b83432d9e2d32e
|
| 3 |
+
size 28539
|
baselines/IRM2/test/Signe Jakobsen - What Have You Done To Me.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c9347bd26e385f06a0f7350534a7f205245765e6d3eb145922cdb4cf3de4f0f7
|
| 3 |
+
size 22512
|
baselines/IRM2/test/Skelpolu - Resurrection.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:494b2d48e6d33b2167f542cc1b63c45377514f126245fd634d270f34495f8251
|
| 3 |
+
size 14837
|
baselines/IRM2/test/Speak Softly - Broken Man.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8e049a84e184aed110458ca26ac929ddc79caef637dfa8decdcb4d438afb4232
|
| 3 |
+
size 25457
|
baselines/IRM2/test/Speak Softly - Like Horses.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a29311792a22e9e15c970d8e9a84932e54ed969d0efc2dcd8ba188e409924a08
|
| 3 |
+
size 27657
|
baselines/IRM2/test/The Doppler Shift - Atrophy.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3beaba378e7e0c92d1204fcd7712aeecc09c8ee63c3e56b45e9357d64ae426a1
|
| 3 |
+
size 42460
|
baselines/IRM2/test/The Easton Ellises (Baumi) - SDRNR.json.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d6b5f83f1984d9440a4e5ceb5c68d80dc84d887861da24a9dc96017aa2a399f5
|
| 3 |
+
size 29888
|