Sprachverbesserung

Entferne Hintergrundgeräusche aus Sprachaufnahmen mit DeepFilterNet3. Das Modell läuft für effiziente Inferenz auf der Neural Engine über CoreML, während die gesamte Signalverarbeitung (STFT, ERB-Filterbank, Deep Filtering) auf der CPU über Accelerate/vDSP läuft.

Architektur

DeepFilterNet3 verwendet eine Dual-Decoder-Architektur, die spektrale Hüllenverbesserung von der Wiederherstellung feiner spektraler Details trennt.

StufeDetails
STFTKurzzeit-Fourier-Transformation über vDSP
Encoder4 SepConv2d-Schichten + SqueezedGRU
ERB-DecoderSigmoid-Maske, angewendet auf ERB-Skalen-Frequenzbänder
DF-Decoder5-Tap-komplexwertige Filterkoeffizienten
iSTFTInverse STFT zur Rekonstruktion des Zeitbereich-Signals

Der ERB-Decoder schätzt eine Verstärkungsmaske auf der Equivalent-Rectangular-Bandwidth-Skala (ERB) und übernimmt die grobe spektrale Formung. Der DF-Decoder sagt 5-Tap-komplexwertige Filterkoeffizienten für feine Details voraus und wendet gelernte Filter direkt im Frequenzbereich an.

Verarbeitungs-Pipeline

  1. STFT — Zerlegt das verrauschte Audio über vDSP in eine Zeit-Frequenz-Darstellung
  2. ERB-Features — Bildet STFT-Bins auf ERB-Skalen-Frequenzbänder ab
  3. Neuronales Netzwerk — Der Encoder verarbeitet die Features auf der Neural Engine; ERB- und DF-Decoder sagen Verbesserungsparameter voraus
  4. ERB-Masking — Wendet die Sigmoid-Verstärkungsmaske zur Rauschunterdrückung in der spektralen Hülle an
  5. Deep Filtering — Wendet 5-Tap-komplexwertige Koeffizienten zur Wiederherstellung feiner spektraler Details an
  6. iSTFT — Rekonstruiert sauberes Audio aus dem verbesserten Spektrum

Modellvarianten

VarianteGrößePräzision
INT8 (Standard)~2,2 MB8-Bit-quantisiert
FP32~4,3 MBVolle Präzision

Das Modell hat etwa 2,1M Parameter. Die INT8-Variante wird standardmäßig verwendet und bietet gleichwertige Qualität bei halber Größe.

CLI-Verwendung

# Audio entrauschen (Ausgabe nach _denoised.wav)
.build/release/audio denoise noisy.wav

# Ausgabedatei angeben
.build/release/audio denoise noisy.wav -o clean.wav

# FP32-Modellvariante verwenden
.build/release/audio denoise noisy.wav --model fp32

Optionen

OptionBeschreibung
--output, -oPfad der Ausgabedatei (standardmäßig <input>_denoised.wav)
--modelModellvariante: int8 (Standard) oder fp32
Wichtig

DeepFilterNet3 läuft auf der Neural Engine über CoreML, nicht auf der GPU über MLX. Das bedeutet, es funktioniert effizient, auch während andere GPU-basierte Modelle (ASR, TTS) laufen. Keine metallib-Kompilierung erforderlich.

Modell-Downloads

ModellGrößeHuggingFace
DeepFilterNet3 (CoreML FP16)~4,2 MBaufklarer/DeepFilterNet3-CoreML

Kombination mit anderen Modellen

Sprachverbesserung ist besonders nützlich als Vorverarbeitungsschritt vor anderen Modellen:

# Entrauschen, dann transkribieren
.build/release/audio denoise noisy.wav -o clean.wav
.build/release/audio transcribe clean.wav

Swift-API

import SpeechEnhancement

let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")

Auch verfügbar auf Android & Linux über ONNX Runtime.