Улучшение речи — DeepFilterNet3

Удаление фонового шума из речевых записей с помощью DeepFilterNet3. Модель работает на Neural Engine через CoreML для эффективного инференса, а вся обработка сигналов (STFT, ERB-фильтрбанк, deep filtering) выполняется на CPU через Accelerate/vDSP.

Соответствие официальному DF3

Весь DSP-тракт следует libdf: масштаб анализа 1/960, alpha нормализации 0.99, нулевое дополнение граничных отводов deep filter и корректный порядок матриц NumPy C/Fortran. На фиксированной выборке из 20 записей VoiceBank-DEMAND Swift получил PESQ 3,097, STOI 0,964 и SI-SDR 19,12 дБ против 3,029, 0,962 и 18,31 дБ у официального Python DF3.

Пример до/после

Зашумленный речевой клип обработан DeepFilterNet3, чтобы можно было услышать CoreML-denoiser перед локальным запуском.

Зашумленный входMP3, 48 kHz
Выход DeepFilterNet3MP3, 48 kHz

Архитектура

DeepFilterNet3 использует архитектуру с двумя декодерами, разделяющую улучшение спектральной огибающей от восстановления мелких спектральных деталей.

ЭтапДетали
STFTКратковременное преобразование Фурье через vDSP
Encoder4 слоя SepConv2d + SqueezedGRU
ERB DecoderSigmoid-маска, применяемая к частотным полосам ERB-шкалы
DF Decoder5-отводные комплексные коэффициенты фильтрации
iSTFTОбратное STFT для восстановления сигнала во временной области

ERB Decoder оценивает маску усиления на шкале эквивалентной прямоугольной полосы пропускания (ERB), выполняя широкое спектральное формирование. DF Decoder предсказывает 5-отводные комплексные коэффициенты фильтрации для тонкой детализации, применяя обученные фильтры непосредственно в частотной области.

Пайплайн обработки

  1. STFT — Разложить зашумлённое аудио во время-частотное представление через vDSP
  2. ERB-признаки — Отобразить STFT-корзины на полосы частот ERB-шкалы
  3. Нейросеть — Encoder обрабатывает признаки на Neural Engine; ERB- и DF-декодеры предсказывают параметры улучшения
  4. ERB-маскирование — Применить sigmoid-маску усиления для подавления шума в спектральной огибающей
  5. Deep Filtering — Применить 5-отводные комплексные коэффициенты для восстановления мелких спектральных деталей
  6. iSTFT — Восстановить чистое аудио из улучшенного спектра

Модель

ВариантРазмерТочность
По умолчанию~2.2 МБ8-битные палеттизированные веса, вычисления FP16

Использование CLI

# Denoise audio (output to _denoised.wav)
.build/release/speech denoise noisy.wav

# Specify output file
.build/release/speech denoise noisy.wav -o clean.wav

# Use another compatible HuggingFace repository
.build/release/speech denoise noisy.wav --model owner/DeepFilterNet3-CoreML

Опции

ОпцияОписание
--output, -oПуть выходного файла (по умолчанию <input>_denoised.wav)
--modelID совместимого репозитория модели на HuggingFace (по умолчанию: aufklarer/DeepFilterNet3-CoreML)
Важно

DeepFilterNet3 работает на Neural Engine через CoreML, а не на GPU через MLX. Это означает, что он эффективно работает даже когда запущены другие GPU-модели (ASR, TTS). Компиляция metallib не требуется.

Загрузка моделей

МодельРазмерHuggingFace
DeepFilterNet3 (CoreML, 8-битная палеттизация)~2.2 МБaufklarer/DeepFilterNet3-CoreML

Сочетание с другими моделями

Улучшение речи особенно полезно как шаг предобработки перед другими моделями:

# Denoise then transcribe
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav

Swift API

import SpeechEnhancement

let model = try await SpeechEnhancer.fromPretrained()
let cleanAudio = try model.enhance(audio: noisySamples, sampleRate: 48000)

Также доступно на Android, а на Linux и Windows—через Speech Core (ONNX Runtime).