Восстановление речи — Sidon
Восстанавливайте зашумлённую, реверберирующую или ограниченную по полосе частот речь до чистого аудио 48 кГц с помощью Sidon — единой модели, объединяющей шумоподавление, дереверберацию и расширение полосы частот. Она работает полностью на устройстве (CoreML на Apple Silicon, ONNX Runtime на остальных платформах). Поскольку она восстанавливает речь из выученных представлений, а не просто маскирует шум, она особенно хорошо подходит для подготовки референса для клонирования голоса: модель очищает запись, сохраняя при этом идентичность диктора.
Улучшение речи (DeepFilterNet3) — это крошечный шумоподавитель реального времени. Sidon — более тяжёлая модель генеративного восстановления: она также убирает реверберацию и восстанавливает высокочастотную детализацию до 48 кГц. Используйте DeepFilterNet3 для удаления шума в реальном времени, а Sidon — для офлайн-очистки референсов и архивных записей.
Архитектура
Sidon — это двухэтапный пайплайн: самообучаемый предиктор признаков очищает речевое представление, а нейросетевой вокодер ресинтезирует из него чистый сигнал.
| Этап | Детали |
|---|---|
| Фронтенд | Лог-мел-признаки w2v-BERT 2.0 SeamlessM4T (16 кГц → 160 измерений) |
| Предиктор | w2v-BERT 2.0 (8 слоёв) с дообученной через LoRA головой очистки → очищенные признаки |
| Вокодер | Декодер DAC ресинтезирует аудио 48 кГц из очищенных признаков |
Пайплайн: 16 kHz audio → features → predictor → DAC decoder → 48 kHz audio. Всего ≈ 246M параметров (193.6M предиктор + 52.4M вокодер).
Пайплайн обработки
- Извлечение признаков — Вычислить лог-мел-признаки w2v-BERT 2.0 из входа 16 кГц (Accelerate/vDSP на Apple, C++ на других платформах)
- Предиктор — Адаптированный через LoRA энкодер w2v-BERT отображает зашумлённые/реверберирующие признаки в чистые
- Вокодер — Декодер DAC восстанавливает чистый сигнал 48 кГц из очищенных признаков
- Разбиение на блоки — Более длинное аудио обрабатывается фиксированными окнами (~10 с) и сшивается на временной шкале 48 кГц
Качество
На реверберирующем референсном фрагменте восстановление повышает воспринимаемое качество, сохраняя при этом идентичность диктора (MOS без референса):
| Аудио | DNSMOS OVRL | UTMOS | Косинус по диктору |
|---|---|---|---|
| Вход (реверберирующий) | 2.90 | 2.99 | — |
| Восстановлено Sidon | 3.29 | 3.40 | 0.79 |
Наибольший прирост приходится на фоновую составляющую (реверберация удалена). Сходство по диктору сохраняется, а именно это важно при очистке референса для клонирования.
Варианты модели
Квантизация сжимает предиктор; вокодер DAC остаётся на более высокой точности (качество аудио). На Apple int8 использует палитризацию методом k-средних; в ONNX int8 — только веса, поканально.
| Формат | Точность | Размер бандла |
|---|---|---|
| CoreML | int8 (предиктор) + FP16 (вокодер) | ~407 МБ |
| CoreML | FP16 | ~713 МБ |
| ONNX | int8 (предиктор) + FP16 (вокодер) | ~286 МБ |
| ONNX | FP16 | ~470 МБ |
| ONNX | FP32 | ~939 МБ |
Использование 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 кГц независимо от частоты дискретизации входа (он повышает частоту дискретизации и восстанавливает полосу частот). Это офлайн-модель восстановления — тяжелее, чем DeepFilterNet3 — и её лучше запускать на файле, а не на живом потоке.
Загрузка моделей
| Модель | Формат | HuggingFace |
|---|---|---|
| Sidon (CoreML) | fp16 + int8 | aufklarer/Sidon-CoreML |
| Sidon (ONNX) | int8 + fp16 + fp32 | soniqo/Sidon-ONNX |
Сочетание с другими моделями
Sidon наиболее полезен как шаг предобработки:
- Перед клонированием голоса — Очистите зашумлённый/реверберирующий референс, чтобы клон унаследовал голос, а не помещение
- Перед транскрипцией — Восстановите архивные или дальнопольные записи, чтобы повысить точность ASR
- Перед эмбеддингом спикера — Более чистое аудио даёт более надёжные эмбеддинги
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).