Clojure bindings for PyTorch implementation of Open-Unmix, a deep neural network reference implementation for music source separation, applicable for researchers, audio engineers and artists.
- utilizes great JNA libpython bindings library.
- implementation based on related python implementation.
-
install python 3.6, pip
-
install python dependencies
pip3 install -r requirements.txt
- add dependency to the project.clj
[dragoon000320/open-unmix-pytorch-clj "0.1.4-ALPHA"]
A little demo how to use it
;; require namespaces
(require '[open-unmix-pytorch-clj.core :refer :all])
(require '[open-unmix-pytorch-clj.io :refer :all])
(require '[open-unmix-pytorch-clj.convert :refer :all])
(-> "your-audio-file.wav"
;; reads audio file
soundfile-read
;; converts audio data to 2 channel one
->2-channels
;; separates audio data into required audio sources
(separate ["vocals" "drums" "other" "bass"]
:device "cpu"
;; or if you have cuda enabled uncomment line below
;; :device "cuda"
)
;; writes estimates for each audio source to the output directory
(write-estimates "out-dir"))
The library is in alpha at the moment, current state of library is described below:
- for now only separation of audio source implemented
- so there is no implementation of model training
- performance must be further improved
- a lot more to do...
It is an open-source project so contributions are welcomed (pull-requests, issue reports).
Copyright © 2020
Distributed under the Eclipse Public License 2.0