|
Download README.md from audiojs/tiger-dnr: direct link, hf CLI and curl.
- Browser
- Download file 5.35 kB
-
https://huggingface.co/audiojs/tiger-dnr/resolve/main/README.md
- Command line
-
hf download hf://audiojs/tiger-dnr/README.md
-
curl -L -o README.md https://huggingface.co/audiojs/tiger-dnr/resolve/main/README.md
5.35 kB
| license: apache-2.0 | |
| library_name: onnx | |
| pipeline_tag: audio-to-audio | |
| base_model: JusperLee/TIGER-DnR | |
| base_model_relation: quantized | |
| tags: | |
| - audio | |
| - source-separation | |
| - cinematic-audio-source-separation | |
| - onnx | |
| # TIGER for Divide and Remaster, ONNX (int8 weights) | |
| TIGER (Xu, Li, Chen, Hu, "TIGER: Time-frequency Interleaved Gain Extraction and Reconstruction for Efficient Speech | |
| Separation", ICLR 2025, [arXiv:2410.01469](https://arxiv.org/abs/2410.01469)), its Divide and Remaster model TIGERDNR: | |
| three band-split models of 1.4 M parameters (57 bands, multi-scale convolutions, frame and frequency attention), each | |
| separating three sources and keeping one. It splits a soundtrack into three stems: dialogue, music, effects. This is the | |
| three networks between their STFT and iSTFT as one graph, as | |
| [@audio/neural-separate](https://github.com/audiojs/neural/tree/main/packages/neural-separate) runs it (`model: 'tiger'`), | |
| converted from [JusperLee/TIGER-DnR](https://huggingface.co/JusperLee/TIGER-DnR). | |
| | File | Size | SHA-256 | | |
| |---|---|---| | |
| | `tiger.int8.onnx` | 7.3 MB (7,320,735 bytes) | `2189859ac7e89cf4d9d284c6f393e737aaa2b3233ed7ee424ad622012bce7bca` | | |
| The float32 export it is made from is 28.6 MB, of which 11.7 MB were node names; float16 weights would be 10.9 MB. | |
| ## Source | |
| - Code: [JusperLee/TIGER](https://github.com/JusperLee/TIGER) at `9f18d4a10a7137e1ce8052cfb62215179f1287b6`: | |
| `look2hear/models/tiger_dnr.py` and the layer modules it reads. | |
| - Weights: [JusperLee/TIGER-DnR](https://huggingface.co/JusperLee/TIGER-DnR) at revision | |
| `b7a59560bbca10febbcd46fb01600f868e587f57`, `model.safetensors` (SHA-256 | |
| `dd1c696e72f6adea0085ef1af640882a8260519ad666422835e387a5b4abdd2a`). | |
| ## Licence and attribution | |
| Apache License 2.0 ([LICENSE](LICENSE)): the weights' model card states `license: apache-2.0` (the code repository's | |
| LICENSE is MIT, its README badge Apache 2.0). Modified from the original weights: converted to ONNX with the three | |
| models in one graph; `F.adaptive_avg_pool1d` exported as a cumulative sum read at torch's windows, UConvBlock's global | |
| sum started at its first term and each GroupNorm's statistics reduced axis by axis (none changing the function); the | |
| weights stored in 8 bits (below). | |
| TIGER by Mohan Xu, Kai Li, Guo Chen and Xiaolin Hu (Tsinghua University); ONNX export and compaction by audiojs. Trained | |
| on Divide and Remaster v1, sourced as v2 is (FMA and FSD50K clips, each under its own licence). | |
| ```bibtex | |
| @inproceedings{xu2025tiger, | |
| title = {TIGER: Time-frequency Interleaved Gain Extraction and Reconstruction for Efficient Speech Separation}, | |
| author = {Xu, Mohan and Li, Kai and Chen, Guo and Hu, Xiaolin}, | |
| booktitle = {International Conference on Learning Representations (ICLR)}, | |
| year = {2025}, | |
| eprint = {2410.01469}, | |
| archivePrefix = {arXiv} | |
| } | |
| ``` | |
| ## Graph | |
| One mono 12 s segment (529,200 samples at 44.1 kHz, 1034 frames) per run, the three models in one graph: | |
| | | name | shape | | | |
| |---|---|---|---| | |
| | input | `mix_spec` | [1, 2, 1025, 1034] | STFT: n 2048, hop 512, Hann, unnormalized, centered with reflect padding; re, im | | |
| | output | `stems_spec` | [1, 6, 1025, 1034] | dialogue, music, effects, each re and im | | |
| Segments start every 4 s, unweighted, zero-padded past the ends, their sum divided by three | |
| (`TIGERDNR.wav_chunk_inference`). | |
| ```js | |
| import separate from '@audio/neural-separate' | |
| let { stems } = await separate([mono], { sampleRate: 48000, model: 'tiger' }) // stems.dialogue, .music, .effects | |
| ``` | |
| ## Export, compaction, verification | |
| `scripts/export-tiger.py --verify` exports the graph and compares it with the three `TIGER.forward` on one segment of | |
| tones and noise: max |diff| ≤ 4.2e-7 of max |y|; the package's pipeline matches `TIGERDNR.wav_chunk_inference` to | |
| 95–140 dB SNR per stem. `scripts/compact.py --model tiger --calibrate <a Divide and Remaster v3 tuning clip>` makes this | |
| file from it: | |
| - Weights: all 444 convolution weights of over 1024 values stored in int8 (symmetric, a scale per output channel): | |
| rounded together they move the output 41.4 dB under its power on the calibration clip, within the 40 dB the script | |
| allows before keeping any in float16. | |
| - Computed in float32 on every backend: each weight is Cast and multiplied by its scale in the graph, which onnxruntime | |
| folds at load (the session holds float32 weights). | |
| - Folded and named short, changing no value: with the input's shape fixed, every value computable from the weights and | |
| the shapes alone is stored as the graph computes it (56,652 nodes to 38,817); node and value names are base-36 | |
| counters (the graph without its weights 11.7 MB to 1.9 MB). | |
| - Against the export on the calibration clip: max |diff| 1.7e-2 of max |y|, SNR 41.4 dB. | |
| ## Quality | |
| The 30 test clips @audio/neural-separate measures TIGER on (Divide and Remaster v3's English test set, | |
| every 40th of its 1200 clips of 60 s; Watcharasupat, Wu, Orife, 2024, CC BY-SA 4.0): each stem against its reference | |
| over the whole clip, SNR, the median over clips, dB: | |
| | | dialogue | music | effects | | |
| |---|---|---|---| | |
| | export (float32) | 12.68 | 10.24 | 8.06 | | |
| | this file | 12.66 | 10.23 | 8.03 | | |
| | change per clip: median · the clip that lost most | +0.01 · −0.03 | −0.01 · −0.10 | −0.01 · −0.08 | | |
| MRX on the same clips: 10.92 · 5.17 · 5.72 dB (audiojs/mrx). | |