| --- |
| license: mit |
| library_name: onnx |
| pipeline_tag: audio-to-audio |
| tags: |
| - onnx |
| - onnxruntime-web |
| - source-separation |
| - music-source-separation |
| - open-unmix |
| --- |
| |
| # Open-Unmix UMX-HQ (ONNX) |
|
|
| An ONNX export of the **vocals** stem of **UMX-HQ**, the |
| [Open-Unmix](https://github.com/sigsep/open-unmix-pytorch) music source |
| separation models trained on MUSDB18-HQ. |
|
|
| | | | |
| | --- | --- | |
| | File | `vocals.onnx` | |
| | Size | 17,820,856 bytes (17.0 MiB) | |
| | SHA-256 | `3d05709ff7197bbd4a33aee759e4e82002acb491f41c94770227ab57507b6ccb` | |
|
|
| Open-Unmix has one independent graph per stem (vocals / drums / bass / other); |
| only vocals is published here. The other three can be exported from the same |
| upstream weights with the same procedure β see the signal parameters below. |
|
|
| This is an export of the published UMX-HQ PyTorch weights |
| ([Zenodo record 3370489](https://zenodo.org/records/3370489)) β the **spectrogram |
| model only**. The STFT, the mask application and the ISTFT are deliberately left |
| outside the graph so a host can implement them in whatever environment it runs |
| in; the parameters are given below. |
|
|
| ## Tensor contract |
|
|
| The graph maps a magnitude spectrogram to an estimated magnitude spectrogram for |
| its stem. Read input/output names off the graph rather than hardcoding them. |
|
|
| - **Input** β `float32[1, 2, 2049, frames]`: STFT magnitudes as |
| `(batch, channels, bins, frames)` β batch 1, 2 channels (stereo), |
| `nb_bins = 2049`. |
| - **Output** β the same shape, the vocals estimate. |
|
|
| Every Open-Unmix stem graph takes the **same** mixture tensor, so a caller running |
| more than one builds the spectrogram once and reuses it across sessions. |
|
|
| ## Signal parameters |
|
|
| These must match or the output is wrong: |
|
|
| | | | |
| | --- | --- | |
| | Sample rate | 44,100 Hz, **stereo** | |
| | FFT size | 4096 | |
| | Hop | 1024 | |
| | Window | Hann (periodic), centred (reflect-padded by `n_fft / 2`) | |
| | Bins | 2049 (`n_fft / 2 + 1`) | |
|
|
| To reconstruct audio, apply the estimated magnitudes as a ratio mask over the |
| **mixture's phase** and inverse-STFT. That is Open-Unmix's `niter=0` path β no |
| Wiener/EM refinement β which is what this export is validated against. |
|
|
| ## Why UMX-HQ rather than UMX-L |
|
|
| UMX-HQ is the same architecture at half the LSTM width (`hidden_size` 512 vs |
| 1024). It separates slightly less cleanly than UMX-L, and it is **MIT-licensed**, |
| whereas the UMX-L weights are CC BY-NC-SA 4.0 (non-commercial). |
|
|
| > An MIT licence on the *model* grants no rights over the audio you run through |
| > it. Separating a copyrighted recording still needs its own clearance. |
|
|
| ## Licence and credit |
|
|
| Weights are **MIT**, from [sigsep/open-unmix-pytorch](https://github.com/sigsep/open-unmix-pytorch). |
| Please cite: |
|
|
| ```bibtex |
| @article{stoter19, |
| author = {St\"oter, Fabian-Robert and Uhlich, Stefan and Liutkus, Antoine and Mitsufuji, Yuki}, |
| title = {Open-Unmix - A Reference Implementation for Music Source Separation}, |
| journal = {Journal of Open Source Software}, |
| year = 2019, |
| doi = {10.21105/joss.01667} |
| } |
| ``` |
|
|