audiosronnx-flowhigh
ONNX exports of FLowHigh (Yun et al.,
ICASSP 2025, MIT) for the flowhigh engine in
audiosronnx, together with the
BigVGAN 48 kHz vocoder it decodes through
(NVIDIA, MIT).
FLowHigh upscales speech to 48 kHz with conditional flow matching: instead of denoising over tens of diffusion steps it learns a velocity field and integrates it over four Euler steps, which makes a generative super-resolution model practical on CPU.
| File | Shape | Size |
|---|---|---|
flowfield.onnx |
x[1,T,256], times[1], cond[1,T,256] -> velocity[1,T,256] |
141.9 MB |
bigvgan.onnx |
mel[1,256,T] -> waveform[1,1,480*T] |
57.3 MB |
The log-mel front-end, the Euler loop and the spectral merge all run in numpy inside audiosronnx, so inference is onnxruntime-only.
Validated against the upstream pipeline: mel front-end corr 0.99999999, the ODE loop plus vocoder corr 1.00000000 (max abs err 6.7e-06), and the full pipeline corr 0.99999993. Both graphs verified length-independent.
Export notes
Two tracing obstacles, each fixed by a rewrite that is bit-for-bit equivalent to the original:
- BigVGAN's alias-free resamplers build their depthwise kernel at call time via
filter.expand(C, -1, -1), so the tracer sees a convolution of unknown kernel shape. The channel count is fixed per layer, so all 182 expanded kernels are materialised as buffers. - Rotary positions were derived from
seq_len, which under tracing arrives as a 0-dim tensor and skipsRotaryEmbedding'sarangebranch. Positions are built explicitly, which is correct eagerly and stays dynamic when traced.
Neither is an architectural limitation.
Usage
from audiosronnx import load_sr
sr = load_sr("flowhigh")
sr.upscale_file("narrowband.wav", "wide_48k.wav")
load_sr("flowhigh", steps=8) # more Euler steps: more compute, more fidelity
load_sr("flowhigh", seed=None) # upstream's non-reproducible sampling
Sampling starts from mel(cond) + eps. Upstream draws eps freshly each run, so its output
is not reproducible; the adapter seeds it by default.
License
MIT — FLowHigh and NVIDIA BigVGAN are both MIT.