pyFDN: инструменты Python для проектирования, анализа и оптимизации сетей задержек с обратной связью
pyFDN объединяет проектирование искусственной реверберации, анализ её мод и дифференцируемую настройку в одном наборе представлений. Работа полезна не новой метрикой качества, а возможностью передать одну и ту же сеть задержек из численного эксперимента в обучение, затем в блочное воспроизведение без повторного восстановления параметров.
Метод. Сеть задаётся матрицами обратной связи, входов, выходов и прямого пути, длинами задержек и дополнительными фильтрами. NumPy и SciPy обслуживают численный анализ, FLAMO и PyTorch — частотное дифференцируемое моделирование. Поддержаны ортогональные и Householder-матрицы, параунитарные FIR-конструкции, анализ полюсов и вычетов, оценка плотности эха и полосного времени затухания. Обучение может менять матрицы и усиления, сохраняя длины задержек фиксированными.
Результаты. Статья описывает версию 0.5.0 и фиксирует ревизию исходного кода 3732d6b0d334. Авторы сообщают о тестах согласованности временного, частотного и пространственно-состоянийного представлений, но не приводят сравнительных PESQ, MOS, RTF или результатов слушательской оценки. Поэтому результат следует понимать как воспроизводимый программный инструмент, а не доказательство превосходства нового ревербератора.
Ограничения. Сохранение в JSON охватывает статические матрицы и SOS-фильтры, а не любые динамические графы. Частотный синтез требует контроля циклического наложения: снятие временной огибающей может усиливать ошибки округления. Ортогональная матрица даёт без потерь только прототип; устойчивость всей системы зависит также от фильтров и ограничений. Лицензия MIT на код не отменяет отдельных условий для включённых акустических ресурсов.
Фишка из статьи. Инженерно важна граница между состоянием обработки и сохранённым численным проектом. В разделах 2–5 явно перечислены ограничения, которые легко пропустить при переносе обученного ревербератора.
| Операция | Конкретное свойство или ограничение |
|---|---|
| process_fdn / process_dss | При каждом вызове создают новый граф |
| build_to_td / dss_to_td | Сохраняют состояние между блоками |
| Обычная форма пространства состояний | Один вход, один выход; каждая задержка не короче 3 отсчётов |
| Обучение загруженных SOS | Коэффициенты по умолчанию фиксированы |
Как это читать: корректный отклик отдельного блока ещё не означает непрерывного воспроизведения: для него нужен сохраняющий состояние граф. Воспроизводить эксперимент следует по сохранённой сети, ревизии, точности, длине преобразования и настройкам подавления циклического наложения, а не только по начальному генератору случайных чисел.
Источник. Оригинальное название: pyFDN: A Python Toolbox for Feedback Delay Network Design, Analysis, and Optimization. arXiv:2610.27217; полный текст PDF.