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

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

Архитектура

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 — Восстановить чистое аудио из улучшенного спектра

Варианты модели

ВариантРазмерТочность
INT8 (по умолчанию)~2.2 МБ8-бит квантизация
FP32~4.3 МБПолная точность

В модели примерно 2.1M параметров. Вариант INT8 используется по умолчанию и обеспечивает эквивалентное качество при вдвое меньшем размере.

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

# Удалить шум (вывод в _denoised.wav)
.build/release/audio denoise noisy.wav

# Указать выходной файл
.build/release/audio denoise noisy.wav -o clean.wav

# Использовать вариант модели FP32
.build/release/audio denoise noisy.wav --model fp32

Опции

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

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

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

МодельРазмерHuggingFace
DeepFilterNet3 (CoreML FP16)~4.2 МБaufklarer/DeepFilterNet3-CoreML

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

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

# Удалить шум, затем транскрибировать
.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")

Также доступно на Android и Linux через ONNX Runtime.