ADAC: компиляция differentiable audio graphs в real-time DSP
ADAC закрывает неприятный разрыв между differentiable audio research и настоящими real-time эффектами. Обычно reverbs, filters, DDSP-like processors и другие differentiable audio graphs удобно обучать в ML-фреймворке, но для плагина их приходится вручную переписывать на DSP-язык, заново проверять и поддерживать две версии одной идеи. Авторы предлагают компилятор, который опускает trained model в framework-agnostic IR и генерирует FAUST-код.
Почему это интересно
Для speech/audio production это не просто “экспорт модели”. Differentiable processor часто содержит feedback paths, delay lines, direct paths и параметры, где маленькая ошибка меняет устойчивость или импульсную характеристику. ADAC фокусируется на feedback delay network (FDN), но по сути демонстрирует workflow: обучили аудиограф градиентным спуском, услышали обновление в running plugin после каждого gradient step, затем экспортировали working plugin.
Что делает компилятор
- Сохраняет структуру FDN: feedback matrix, delays, input/output mixing и direct path.
- Генерирует FAUST-код, который можно дальше собирать обычной FAUST toolchain.
- Проверяет stability certificate по shipped parameters до сборки plugin.
- Добавляет macro-controls, которые безопаснее сырых trained parameters: reverberation time, dry/wet balance и pre-delay.
Эквивалентность и скорость
Авторы проверяют compiled FAUST против исходной FLAMO-модели по impulse response. Для stereo FDN и mono FDN с direct path расхождение остается в пределах 7e-5 от peak без alignment, то есть на уровне single-precision arithmetic, а не структурной ошибки. Реализация покрыта 201 unit tests и end-to-end integration suite.
По производительности результаты выглядят практично: на одном ядре Apple M2 при 48 kHz 32-line FDN, типичный размер для reverberator-а, работает примерно в 90 раз быстрее real time; 64-line FDN — примерно в 14 раз быстрее real time. Это важный сигнал: generated DSP не просто “правильный”, он остается пригодным для интерактивного аудио.
Практический вывод
ADAC полезен как направление для productionization аудиоисследований. Если обучаемый reverb, room simulator, effect chain или neural-assisted DSP каждый раз нужно переписывать руками, feedback loop между research и продуктом слишком длинный. Компиляция trained graph в проверяемый real-time DSP делает differentiable audio ближе к нормальному deployment path.
Фишка из статьи. ADAC интересен как compiler paper: он не просто экспортирует neural audio effect в FAUST, а сохраняет transfer function FDN-модели через разложение Neumann/path-sum и перенос параметров A, m, B, C, D. То есть предмет статьи - не только звучание, но и корректность эквивалентного DSP-представления.
| Аспект | Что проверяется | Число из статьи |
|---|---|---|
| Численная корректность | импульсные отклики compiled FAUST против исходной модели | расхождение до 7e-5 от peak |
| Уровень ошибки | разница в импульсном отклике | на уровне или ниже -80 dB от peak |
| Тестовый набор | unit + integration checks | 201 unit tests |
| Сложность dense FDN | N линий задержки, S SOS на линию | O(N² + NS + NinN + NoutN) |
| Сложность sparse FDN | разреженная матрица feedback | зависит от nnz(A) |
| Runtime benchmark | faust2bench, Apple M2, 48 kHz | 32-line FDN около 90x realtime, 64-line около 14x |
Практичная мысль: обученные raw-параметры плохо подходят как пользовательские ручки. Поэтому авторы отдельно обсуждают macro controls - более безопасный слой управления эффектом поверх точной DSP-компиляции.