Skip to content
ModelListedExternal
Browse files

Sidon ONNX

Cross-platform speech restoration (denoise + dereverberation + bandwidth restoration) exported to ONNX, for ONNX Runtime on Linux / Windows / Android / macOS. Turns a noisy/reverberant clip into studio-quality 48 kHz...

KindOtherBase modelsarulab-speech/sidon-v0.1VersionRevision a6dce24Bgrade

Model source

Kind
Other
File size
100–739 MB
Base model
sarulab-speech/sidon-v0.1
Version
vRevision a6dce24
Updated
Oct 25, 2026
Downloads
71
Source
Hugging Face

Source description

Sidon — ONNX (speech restoration / dereverberation)

Cross-platform speech restoration (denoise + dereverberation + bandwidth restoration) exported to ONNX, for ONNX Runtime on Linux / Windows / Android / macOS. Turns a noisy/reverberant clip into studio-quality 48 kHz speech — ideal for cleaning a voice-cloning reference before TTS (it preserves speaker identity).

Two-stage pipeline:

16 kHz audio → [w2v-BERT log-mel front-end] → predictor (w2v-BERT 2.0, 8 layers)
            → cleansed features [1, T, 1024] → DAC decoder → 48 kHz audio

Variants

variantprecisionsizeparity vs FP32RTF (CPU)
int8weight-only int8, per-channel (activations FP)286 MBcos 0.96, speaker 0.791 ≈ FP32 0.795~4×
fp16FP16 (attention kept FP32)470 MBcos 0.999, SI-SDR 28 dB (near-lossless)~4.2×
fp32FP32939 MBbit-exact~4.6×

Total 246 M params (predictor 193.6 M + DAC vocoder 52.4 M). Output 48 kHz. FP16 uses ORT's transformer-aware converter (attention stays FP32).

int8 is weight-only, per-channel (weights stored int8 + DequantizeLinear; activations stay FP) — predictor 186 MB + FP16 vocoder. This preserves quality (waveform cos 0.96, speaker 0.791 ≈ FP32's 0.795). The key is to never quantize activations on this SSL encoder: activation-quantizing int8 (dynamic / static QDQ), and uniform-per-tensor / 4-bit weight quant, all corrupt it (cos 0.26–0.59) because the CNN/attention activations have outliers the DAC vocoder amplifies. (ORT has no native palette/LUT op; a Gather-codebook can reproduce CoreML's exact k-means weights but ORT constant-folds it to dense at load → disk-only, and per-tensor k-means scored 0.76 here — worse than per-channel int8, so it isn't worth it.)

Files

pathdescription
int8/sidon-predictor.onnxpredictor, weight-only int8 per-channel (DequantizeLinear)
int8/sidon-vocoder.onnxDAC decoder (FP16)
fp16/sidon-predictor.onnxw2v-BERT 2.0 (8L) + merged LoRA → features (FP16)
fp16/sidon-vocoder.onnxDAC decoder → 48 kHz audio (FP16)
fp32/sidon-predictor.onnxpredictor (FP32, bit-exact)
fp32/sidon-vocoder.onnxDAC decoder (FP32)

Quality (no-reference MOS)

FP32 is bit-exact to the PyTorch reference; FP16 is near-lossless (waveform cos 0.999).

audioDNSMOS OVRLUTMOSspeaker cos
input (reverberant)2.902.99—
restored (FP32 ≈ FP16)3.293.400.795

Restoration lifts OVRL 2.90 → 3.29, driven by BAK 3.40 → 4.11 (reverb removed).

Front-end

The graphs take input_features [1, T, 160] from the w2v-BERT 2.0 SeamlessM4T feature extractor (16 kHz). The ONNX graphs use a dynamic time axis (chunk in the runtime). Front-end + chunking are handled by the consuming engine (speech-core).

Usage

import onnxruntime as ort, numpy as np
pred = ort.InferenceSession("fp16/sidon-predictor.onnx")
voc  = ort.InferenceSession("fp16/sidon-vocoder.onnx")
# input_features [1, T, 160] from the w2v-BERT 2.0 feature extractor (16 kHz)
feats = pred.run(None, {"input_features": input_features})[0]
audio = voc.run(None, {"features": feats})[0]   # [1, M] @ 48 kHz

Source

Exported from Sidon (sarulab-speech), checkpoint sidon-v0.1; paper arXiv:2509.17052. Base SSL encoder: facebook/w2v-bert-2.0; vocoder: DAC (descript-audio-codec). All components are MIT-licensed.

Links

Sources

1 source
Hugging FacePrimaryVersion a6dce244cbcd0361ef79c030e246e6f9671770c1
huggingface.co/soniqo/Sidon-ONNX/tree/a6dce244cbcd0361ef79c030e246e6f9671770c1

Verified Oct 25

Download files

Model artifacts

6 artifacts

fp16/sidon-predictor.onnx

onnx · 370 MB · SHA-256 bbfebb1ea059…d0da · Hugging Face

Download file

fp16/sidon-vocoder.onnx

onnx · 100 MB · SHA-256 b2598f7fae89…3644 · Hugging Face

Download file

fp32/sidon-predictor.onnx

onnx · 739 MB · SHA-256 4311e64704b6…29e7 · Hugging Face

Download file

fp32/sidon-vocoder.onnx

onnx · 200 MB · SHA-256 9d672758a4b9…a178 · Hugging Face

Download file

int8/sidon-predictor.onnx

onnx · 186 MB · SHA-256 ff50dc41f309…10c7 · Hugging Face

Download file

int8/sidon-vocoder.onnx

onnx · 100 MB · SHA-256 b2598f7fae89…3644 · Hugging Face

Download file

Source excerpts

3 excerpts

--- license: mit language: - multilingual tags: - speech-restoration - dereverberation - speech-enhancement - voice-cloning - onnx - on-device base_model: sarulab-speech/sidon-v0.1 library_name: onnx pipeline_tag: audio-to-audio --- # Sidon — ONNX (speech restoration / dereverberation) Cross-platform **speech restoration** (denoise + dereverberation + bandwidth restoration) exported to ONNX, for ONNX Runtime on Linux / Windows / Android / macOS. Turns a noisy/reverberant clip into studio-quality **48 kHz** speech — ideal for cleaning a **voice-cloning reference** before TTS (it preserves speaker identity). Two-stage pipeline: ``` 16 kHz audio → [w2v-BERT log-mel front-end] → predictor (w2v-BERT 2.0, 8 layers) → cleansed features [1, T, 1024] → DAC decoder → 48 kHz audio ``` ## Variants | variant | precision | size | parity vs FP32 | RTF (CPU) | | ------- | --------- | ---- | -------------- | --------- | | **int8** | weight-only int8, per-channel (activations FP) | **286 MB** | cos 0.96, speaker 0.791 ≈ FP32 0.795 | ~4× | | **fp16** | FP16 (attention kept FP32) | 470 MB | cos 0.999, SI-SDR 28 dB (near-lossless) | ~4.2× | | **fp32** | FP32 | 939 MB | bit-exact | ~4.6× | Total 246 M params (predictor 193.6 M + DAC vocoder 52.4 M). Output 48 kHz. FP16 uses ORT's transformer-aware converter (attention stays FP32). **int8 is weight-only, per-channel** (weights stored int8 + `DequantizeLinear`; activations stay FP) — predictor 186 MB + FP16 vocoder. This preserves quality (waveform cos 0.96, speaker 0.791 ≈ FP32's 0.795). The key is to **never quantize activations** on this SSL encoder: *activation*-quantizing int8 (dynamic / static QDQ), and uniform-per-tensor / 4-bit weight quant, all corrupt it (cos 0.26–0.59) because the CNN/attention activations have outliers the DAC vocoder amplifies. (ORT has no native palette/LUT op; a `Gather`-codebook can reproduce CoreML's exact k-means weights but ORT constant-folds it to dense at load → disk-only, and per-tensor k-means scored 0.76 here — worse than per-channel int8, so it isn't worth it.) ## Files | path | description | | ---- | ----------- | | `int8/sidon-predictor.onnx` | predictor, weight-only int8 per-channel (DequantizeLinear) | | `int8/sidon-vocoder.onnx` | DAC decoder (FP16) | | `fp16/sidon-predictor.onnx` | w2v-BERT 2.0 (8L) + merged LoRA → features (FP16) | | `fp16/sidon-vocoder.onnx` | DAC deco...

Source context: 71 downloads · 3 likes · Pipeline audio-to-audio · Library onnx · Repo soniqo/Sidon-ONNX

Source context: 13 downloads · 2 likes · Pipeline audio-to-audio · Library onnx · Repo soniqo/Sidon-ONNX