语音修复 — Sidon

使用 Sidon 将带噪、混响或受限带宽的语音修复为干净的 48 kHz 音频——单个模型即可同时完成降噪、去混响和带宽扩展。它完全在设备端运行(Apple Silicon 上使用 CoreML,其他平台使用 ONNX Runtime)。由于它从已学习的表示中重建语音,而不仅仅是掩蔽噪声,因此特别适合用来准备声音克隆参考音频:它在清理录音的同时保留说话人的身份特征。

何时使用 Sidon,何时使用 DeepFilterNet3

语音增强(DeepFilterNet3)是一个极小的实时噪声抑制器。Sidon 则是更重的生成式修复模型:它还会去除混响,并将高频细节重建到 48 kHz。实时去噪请用 DeepFilterNet3,离线清理参考音频与存档录音请用 Sidon。

架构

Sidon 是一个两阶段流水线:自监督特征预测器净化语音表示,然后由神经声码器从中重新合成出干净的波形。

阶段细节
前端w2v-BERT 2.0 SeamlessM4T log-mel 特征(16 kHz → 160 维)
预测器w2v-BERT 2.0(8 层),配合 LoRA 微调的净化头 → 净化后的特征
声码器DAC 解码器从净化后的特征重新合成 48 kHz 音频

该流水线为 16 kHz audio → features → predictor → DAC decoder → 48 kHz audio。总计约 246M 参数(193.6M 预测器 + 52.4M 声码器)。

处理流水线

  1. 特征提取 — 从 16 kHz 输入计算 w2v-BERT 2.0 log-mel 特征(Apple 上使用 Accelerate/vDSP,其他平台使用 C++)
  2. 预测器 — 经 LoRA 适配的 w2v-BERT 编码器将带噪/混响特征映射为干净特征
  3. 声码器 — DAC 解码器从净化后的特征重建干净的 48 kHz 波形
  4. 分块 — 较长音频以固定窗口(约 10 秒)处理,并在 48 kHz 时间轴上拼接

质量

在一段带混响的参考片段上,修复在保持说话人身份不变的同时提升了感知质量(无参考 MOS):

音频DNSMOS OVRLUTMOS说话人余弦相似度
输入(带混响)2.902.99
Sidon 修复后3.293.400.79

最大的提升来自背景分数(混响被去除)。说话人相似度得以保留,这正是在清理克隆参考音频时最重要的。

模型变体

量化会压缩预测器;DAC 声码器保持较高精度(音频质量)。在 Apple 上,int8 使用 k-means 调色板量化;在 ONNX 上,int8 为逐通道仅权重量化。

格式精度包大小
CoreMLint8(预测器)+ FP16(声码器)~407 MB
CoreMLFP16~713 MB
ONNXint8(预测器)+ FP16(声码器)~286 MB
ONNXFP16~470 MB
ONNXFP32~939 MB

CLI 使用

# Restore audio (denoise + dereverb) to clean 48 kHz
.build/release/speech restore noisy.wav -o clean.wav

# Clean a voice-cloning reference before TTS
.build/release/speech speak "Hello world" --voice-sample ref.wav --clean-reference
重要

无论输入采样率如何,Sidon 都会输出 48 kHz 音频(它会上采样并修复带宽)。它是一个离线修复模型——比 DeepFilterNet3 更重——最适合对文件而非实时流运行。

模型下载

模型格式HuggingFace
Sidon (CoreML)fp16 + int8aufklarer/Sidon-CoreML
Sidon (ONNX)int8 + fp16 + fp32soniqo/Sidon-ONNX

与其他模型组合

Sidon 作为前处理步骤最为有用:

Swift API

import SpeechRestoration

let restorer = try await SpeechRestorer.fromPretrained()
let cleanAudio = try restorer.restore(audio: noisySamples, sampleRate: 16000)

也可在 Android、Linux 与 Windows 上通过 Speech Core(ONNX Runtime)使用。基于 Sidon(MIT)构建。