--- 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} } ```