Loading…
Loading…
alibabasglab/FRCRN_SE_16KFRCRN_SE_16K with complex convolution weights written as real block matrices, batch normalization folded into the convolutions, and weights stored in bf16. The tensor layout is suitable for TT-NN implementations. No additional training.
model.safetensors contains the two UNets' real tensors. Every stored tensor is bf16.
config.json records each convolution's stride and padding and each FSMN memory's axis and order.
| Tensor | Layout |
|---|---|
| Encoder convolution | [output, input, kernel frequency, kernel time] |
| Transposed decoder convolution | [input, output, kernel frequency, kernel time] |
| FSMN linear projection | [output, input, 1, 1] |
| Complex channels | real channels followed by imaginary channels |
A complex convolution uses the real block matrix [[Wr, -Wi], [Wi, Wr]]. The following batch
normalization is folded into its output channels. Decoder skip-input channels follow the order
recorded in config.json. Tensor names begin with u1 or u2, followed by the module name.
The input is a normalized complex spectrum [1, 2, 321, 51] for 16 kHz audio, a 640-point FFT and
320-sample hop. The output is the complex mask tanh(u1) + tanh(u2) in the same real/imaginary layout.
The consuming implementation supplies framing, normalization, mask application and synthesis.
Read one tensor with safetensors:
from safetensors import safe_open
with safe_open("model.safetensors", framework="pt", device="cpu") as f:
weight = f.get_tensor("u1.enc.0.weight")
Reproduce the conversion with the original checkpoint and the frcrn_se source package from
ClearerVoice-Studio / clearvoice 0.1.2:
python convert_frcrn.py last_best_checkpoint.pt output \
--source-dir ClearerVoice-Studio/clearvoice/clearvoice/models/frcrn_se \
--revision 3766e6a64b0d8cb58f08d913d617bf129f11ed53
Conversion needs torch, numpy and safetensors. The script also runs a deterministic CPU comparison
against the original model on eight synthetic spectra. --validation-npz accepts an optional private
set of normalized spectra; input data is never copied into the output directory.
The source checkpoint matches the original repository at
3766e6a64b0d8cb58f08d913d617bf129f11ed53,
SHA256 b22256adbb91b68cf5a3db8f6657a4fb17066eecd5f069803e59c186c1cf3ebb.
CPU comparisons use float32 operations. The bf16 rows reload the actual serialized weights into
float32 modules, isolating weight-conversion error from arithmetic precision. Each set contains
eight windows of 51 frames. SNR is 10 log10(sum(reference²) / sum(error²)).
| Set | Float32 transformation, mask SNR | Stored bf16, mask SNR | Stored bf16, enhanced-spectrum SNR |
|---|---|---|---|
| Held-out normalized spectra | 77.97 dB | 27.87 dB | 39.12 dB |
| Synthetic spectra, seed 20261112 | 96.55 dB | 17.46 dB | 17.66 dB |
equivalence.json contains the measurements. Synthetic spectra are independent random values and
are not an audio-quality benchmark. The held-out data is not distributed. These checks measure
agreement with the original CPU model; they do not measure task quality or device speed.
Apache-2.0. The original checkpoint card declares Apache-2.0 and has no LICENSE file; LICENSE
contains the canonical agreement. NOTICE identifies the original repository, revision and changes.
convert_frcrn.py is by Xylolabs under Apache-2.0. Not affiliated with or endorsed by Tenstorrent.