https://github.com/xserrat/docker-facebook-demucs
Dockerized Facebook Demucs library to make it easy its execution
https://github.com/xserrat/docker-facebook-demucs
demucs docker facebook facebook-demucs machine-learning music
Last synced: 5 months ago
JSON representation
Dockerized Facebook Demucs library to make it easy its execution
- Host: GitHub
- URL: https://github.com/xserrat/docker-facebook-demucs
- Owner: xserrat
- License: mit
- Created: 2021-01-24T19:51:18.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-11-24T18:41:07.000Z (over 1 year ago)
- Last Synced: 2024-11-24T19:34:02.824Z (over 1 year ago)
- Topics: demucs, docker, facebook, facebook-demucs, machine-learning, music
- Language: Makefile
- Homepage:
- Size: 33.2 KB
- Stars: 141
- Watchers: 9
- Forks: 41
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Docker Facebook Demucs
This repository dockerizes [Demucs](https://github.com/adefossez/demucs)
to split music tracks into different tracks (bass, drums, voice, others).
## Usage
### Clone this repository
```bash
git clone https://github.com/xserrat/docker-facebook-demucs.git demucs
```
### Split a music track
1. Copy the track you want to split into the `input` folder (e.g., `input/mysong.mp3`).
2. Execute `demucs` via the `run` job in the `Makefile`, specifying the `track` argument with only the name of the file:
```bash
make run track=mysong.mp3
```
This process will take some time the first time it is run, as the execution will:
* Download the Docker image that is setup to run the `facebook demucs` script.
* Download the pretrained models.
* Execute `demucs` to split the track.
Subsequent runs will not need to download the Docker image or download the models, unless the model specified has not yet been used.
#### Options
The following options are available when splitting music tracks with the `run` job:
Option | Default Value | Description
--- | --- | ---
`gpu` | `false` | Enable Nvidia CUDA support (requires an Nvidia GPU).
`model` | `demucs`| The model used for audio separation. See https://github.com/facebookresearch/demucs#separating-tracks for a list of available models to use.
`mp3output` | `false` | Output separated audio in `mp3` format instead of the default `wav` format.
`shifts` | `1` | Perform multiple predictions with random shifts (a.k.a the shift trick) of the input and average them. This makes prediction `SHIFTS` times slower. Don't use it unless you have a GPU.
`overlap` | `0.25` | Control the amount of overlap between prediction windows. Default is 0.25 (i.e. 25%) which is probably fine. It can probably be reduced to 0.1 to improve separation speed.
`jobs` | `1` | Specify the number of parallel jobs to run during separation. This will multiply the amount of RAM used by the same number, so be careful!
`splittrack` | | Individual track to split/separate from the others (e.g., you only want to separate drums). Valid options are `bass`, `drums`, `vocals` and `other`. Other values may be allowed if the model can separate additional track types.
Example commands:
```bash
# Use the "fine tuned" demucs model
make run track=mysong.mp3 model=htdemucs_ft
# Enable Nvidia CUDA support and output separated audio in mp3 format
make run track=mysong.mp3 gpu=true mp3output=true
```
### Run Interactively
To experiment with other `demucs` options on the command line, you can also run the Docker image interactively via the `run-interactive` job. Note that only the `gpu` option is applicable for this job.
Example:
```bash
make run-interactive gpu=true
```
## Building the Image
The Docker image can be built locally via the `build` job:
```bash
make build
```
## License
This repository is released under the MIT license as found in the [LICENSE](LICENSE) file.