Улучшение речи — DeepFilterNet3
Удаление фонового шума из речевых записей с помощью DeepFilterNet3. Модель работает на Neural Engine через CoreML для эффективного инференса, а вся обработка сигналов (STFT, ERB-фильтрбанк, deep filtering) выполняется на CPU через Accelerate/vDSP.
Весь 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 перед локальным запуском.
Архитектура
DeepFilterNet3 использует архитектуру с двумя декодерами, разделяющую улучшение спектральной огибающей от восстановления мелких спектральных деталей.
| Этап | Детали |
|---|---|
| STFT | Кратковременное преобразование Фурье через vDSP |
| Encoder | 4 слоя SepConv2d + SqueezedGRU |
| ERB Decoder | Sigmoid-маска, применяемая к частотным полосам ERB-шкалы |
| DF Decoder | 5-отводные комплексные коэффициенты фильтрации |
| iSTFT | Обратное STFT для восстановления сигнала во временной области |
ERB Decoder оценивает маску усиления на шкале эквивалентной прямоугольной полосы пропускания (ERB), выполняя широкое спектральное формирование. DF Decoder предсказывает 5-отводные комплексные коэффициенты фильтрации для тонкой детализации, применяя обученные фильтры непосредственно в частотной области.
Пайплайн обработки
- STFT — Разложить зашумлённое аудио во время-частотное представление через vDSP
- ERB-признаки — Отобразить STFT-корзины на полосы частот ERB-шкалы
- Нейросеть — Encoder обрабатывает признаки на Neural Engine; ERB- и DF-декодеры предсказывают параметры улучшения
- ERB-маскирование — Применить sigmoid-маску усиления для подавления шума в спектральной огибающей
- Deep Filtering — Применить 5-отводные комплексные коэффициенты для восстановления мелких спектральных деталей
- 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) |
--model | ID совместимого репозитория модели на HuggingFace (по умолчанию: aufklarer/DeepFilterNet3-CoreML) |
DeepFilterNet3 работает на Neural Engine через CoreML, а не на GPU через MLX. Это означает, что он эффективно работает даже когда запущены другие GPU-модели (ASR, TTS). Компиляция metallib не требуется.
Загрузка моделей
| Модель | Размер | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML, 8-битная палеттизация) | ~2.2 МБ | aufklarer/DeepFilterNet3-CoreML |
Сочетание с другими моделями
Улучшение речи особенно полезно как шаг предобработки перед другими моделями:
- Перед транскрипцией — Удалите шум перед ASR, чтобы улучшить word error rate на зашумлённых записях
- Перед эмбеддингом спикера — Более чистое аудио даёт более надёжные эмбеддинги спикеров
- Перед диаризацией — Удаление шума может улучшить точность сегментации
# 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).