Skip to content
ModelVerifiedExternal
Browse files

Convfsenet

A causal, fully-convolutional speech enhancer trained on VoiceBank-DEMAND-16k. Source: See RESULTSCONVFSENET.md for the full results, architecture description, and the magnitude-compression trick that makes int8...

KindOtherVersionRevision e520674Publisher@claroche1Unratedgrade

Model source

Kind
Other
File size
814 KB–5.52 MB
Version
vRevision e520674
Updated
Oct 29, 2026
Publisher
@claroche1
Downloads
42
Source
Hugging Face

Source description

ConvFSENet

A causal, fully-convolutional speech enhancer trained on VoiceBank-DEMAND-16k. Source: https://github.com/LarocheC/eco8-neaixt. See RESULTS_CONVFSENET.md for the full results, architecture description, and the magnitude-compression trick that makes int8 deployment essentially loss-free.

This repo holds two channel-width variants:

variantlocationparamsFP32 PESQint8 PESQΔ (FP32→int8)int8 RTFint8 size
192/384 (deployed)repo root1.45 M2.9312.911+0.0200.0171.6 MiB
128/256 (compact)128-256/0.67 M2.8912.883+0.0080.0320.80 MiB

n_channels_res / n_channels_conv are the only differences — identical recipe (mag-compressed input, 200-epoch PESQ metric-GAN, cosine LR). The 128/256 variant is ~54% fewer params and half the int8 size for ~0.03 PESQ, with int8 PTQ again essentially loss-free (+0.008). PESQ is on the full 824-utterance VoiceBank-DEMAND test split; RTF is the int8 streaming session under onnxruntime CPU (single thread).

Files (per variant)

filewhat it is
g_bestPyTorch checkpoint ({"generator": state_dict})
g_best_fp32.onnxStreaming FP32 ONNX (per-frame inputs + FIFO state buffers)
g_best.onnxStatic int8 ONNX (QDQ, per-channel weights, MinMax calibration; compression prologue kept FP32)
config.jsonTraining config (architecture + STFT params)

The root files are the 192/384 model; the same four files under 128-256/ are the compact model.

Loading

PyTorch (set SUB = "" for the root 192/384 model, or "128-256/" for the compact one):

import json, torch
from huggingface_hub import hf_hub_download
from common.env import AttrDict
from convfsenet.model import build_causal_model

REPO, SUB = "claroche1/convfsenet", "128-256/"        # or SUB = "" for the deployed 192/384 model
cfg  = json.load(open(hf_hub_download(REPO, SUB + "config.json")))
ckpt = torch.load(hf_hub_download(REPO, SUB + "g_best"),
                  map_location="cuda", weights_only=False)
model = build_causal_model(AttrDict(cfg)).cuda().eval()
model.load_state_dict(ckpt["generator"])

ONNX (FP32 or int8):

import onnxruntime as ort
from huggingface_hub import hf_hub_download

REPO, SUB = "claroche1/convfsenet", "128-256/"        # or SUB = "" for the root model
sess = ort.InferenceSession(
    hf_hub_download(REPO, SUB + "g_best.onnx"),   # or SUB + "g_best_fp32.onnx"
    providers=["CPUExecutionProvider"],
)
# Streaming shape: feed one frame of magnitude STFT (B, n_freq) + the per-block
# FIFO state buffers per call. End-to-end RMS-norm + STFT + frame loop + iSTFT
# pipeline lives in convfsenet/inference_onnx.py in the source repo.

License

MIT. See the source repository for training code and full attribution.

Sources

1 source
Hugging FacePrimaryVersion e520674be2c50739c7a21ca3aa1c8dd9c49adf37
huggingface.co/claroche1/convfsenet/tree/e520674be2c50739c7a21ca3aa1c8dd9c49adf37

Verified Oct 29

Download files

Model artifacts

4 artifacts

128-256/g_best_fp32.onnx

onnx · 2.56 MB · SHA-256 d6938a3afb72…fca0 · Hugging Face

Download file

128-256/g_best.onnx

onnx · 814 KB · SHA-256 0cbfa71c29f6…12ce · Hugging Face

Download file

g_best_fp32.onnx

onnx · 5.52 MB · SHA-256 2bda7365a5af…b874 · Hugging Face

Download file

g_best.onnx

onnx · 1.57 MB · SHA-256 fea151b64fdb…a345 · Hugging Face

Download file

Source excerpts

3 excerpts

--- license: mit library_name: pytorch tags: - speech-enhancement - audio - denoising - onnx - causal - streaming datasets: - JacobLinCool/VoiceBank-DEMAND-16k --- # ConvFSENet A causal, fully-convolutional speech enhancer trained on VoiceBank-DEMAND-16k. Source: [https://github.com/LarocheC/eco8-neaixt](https://github.com/LarocheC/eco8-neaixt). See [RESULTS_CONVFSENET.md](https://github.com/LarocheC/sparse-nsnet2/blob/main/RESULTS_CONVFSENET.md) for the full results, architecture description, and the magnitude-compression trick that makes int8 deployment essentially loss-free. This repo holds **two channel-width variants**: | variant | location | params | FP32 PESQ | int8 PESQ | Δ (FP32→int8) | int8 RTF | int8 size | | ------- | -------- | -----: | --------: | --------: | ------------: | -------: | --------: | | **192/384** (deployed) | repo root | 1.45 M | **2.931** | **2.911** | +0.020 | 0.017 | 1.6 MiB | | **128/256** (compact) | [`128-256/`](./128-256) | 0.67 M | **2.891** | **2.883** | +0.008 | 0.032 | 0.80 MiB | `n_channels_res` / `n_channels_conv` are the only differences — identical recipe (mag-compressed input, 200-epoch PESQ metric-GAN, cosine LR). The 128/256 variant is ~54% fewer params and half the int8 size for ~0.03 PESQ, with int8 PTQ again essentially loss-free (+0.008). PESQ is on the full 824-utterance VoiceBank-DEMAND test split; RTF is the int8 streaming session under onnxruntime CPU (single thread). ## Files (per variant) | file | what it is | | ------------------- | --- | | `g_best` | PyTorch checkpoint (`{"generator": state_dict}`) | | `g_best_fp32.onnx` | Streaming FP32 ONNX (per-frame inputs + FIFO state buffers) | | `g_best.onnx` | Static int8 ONNX (QDQ, per-channel weights, MinMax calibration; compression prologue kept FP32) | | `config.json` | Training config (architecture + STFT params) | The root files are the 192/384 model; the same four files under `128-256/` are the compact model. ## Loading PyTorch (set `SUB = ""` for the root 192/384 model, or `"128-256/"` for the compact one): ```python import json, torch from huggingface_hub import hf_hub_download from common.env import AttrDict from convfsenet.model import build_causal_model REPO, SUB = "claroche1/convfsenet", "128-256/" # or SUB = "" for the deployed 192/384 model cfg = json.load(open(hf_hub_download(REPO, SUB + "config.json"))) ckpt = torch.load(hf_hub...

Source context: 42 downloads · 0 likes · Library pytorch · Repo claroche1/convfsenet

Source context: 4 downloads · 0 likes · Library pytorch · Repo claroche1/convfsenet