File size: 3,017 Bytes
2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d 87f26a5 2ebbe9d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | ---
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}
}
```
|