FastWave.AXERA
AX650 上的通用音频超分(6–48 kHz → 48 kHz),单模型 3.8 MB,纯 NPU 推理,即取即用。
FastWave 是 1.3 M 参数的扩散式音频超分模型(EDM preconditioning + NU-Wave 2 骨干, 论文)。本仓库提供 AX650 NPU 版:
models/fastwave_nfe.axmodel:量化后的单次 NFE 图(11.9 MB,U16 激活 / S8 权重),板端 8 步采样python/:完整流水线 SDK(分块 + overlap-add + EDM 采样),只依赖numpy+axenginesamples/:8 k / 16 k 输入与 48 k 输出示例reports/:精度与性能报告GitHub(源码 + 复现流程):https://github.com/ZY-2012/FastWave.AXERA
快速开始(AX650 板端)
# 需要:python3 + numpy + axengine(AX650 BSP 镜像自带)
bash run_ax650.sh samples/listen/8k/OSR_us_000_0010_input_8k.wav output.wav
bash run_ax650.sh samples/listen/16k/speech_2_input_16k.wav output.wav --steps 4
输出固定 48 kHz。--steps 4 速度更快、质量略降;--overlap 0.5(默认)可改拼接重叠率。
结果
频谱对比:OSR_us_000_0010 · OSR_cn_000_0072 · speech_2
性能(AX650 NPU3,chunk 0.68 s)
| 配置 | 单次 NFE | 端到端 RTF |
|---|---|---|
| 8 步 + 50% overlap(默认) | 499.8 ms | 10.0 |
4 步 + 50% overlap(--steps 4) |
499.8 ms | 5.0 |
精度
量化配置:Pulsar2 8.0,U16 激活 / S8 权重 / U16 输出(DEFAULT 全图),MinMax 标定
(真实 48 kHz 语音,8/12/16/24 kHz 退化输入,8 个采样步全覆盖,64 个样本),compiler.check=2。
AXMODEL 与浮点 ONNX 的单步 NFE 余弦相似度见 reports/accuracy.md(最低 TBD)。
实现要点
- 模型内部每层都有 STFT/iSTFT(FFC 全局分支)。AX NPU 不支持 FFT/复数算子,这里把
torch.stft/istft等价改写为 32×32 Cooley-Tukey 矩阵乘 FFT(reflect padding、hann 窗、 overlap-add、窗包络归一化全部保留),与 torch 误差 < 1e-7,图上只有 MatMul/Add/Mul/Reshape。 - EDM 的
c_skip/c_in/c_out与正弦扩散 embedding 只依赖 sigma,host 端预计算后作为图输入, 图上没有 log/sqrt/sin/cos/OneHot。 - 输入采样率通过 band one-hot 输入,一个模型覆盖 6–48 kHz。
License
Apache-2.0(本仓库代码与量化模型)。上游 FastWave 模型为 MIT License。
Paper for HY-2012/FastWave.AXERA
Paper • 2603.04122 • Published