Студент превратил исследовательский прототип IEEE в Android-приложение для коррекции высоты тона — с открытым исходным кодом и полной офлайн-работой
Разработчик из Бангладеш взял демку с конференции IEEE, реализовал алгоритм YIN на чистом Dart и собрал Android-приложение, которое в реальном времени показывает и корректирует высоту голоса — без отправки данных на сервер.
Примерно 1,5% людей страдают врождённой амузией — их мозг физически не способен различать высоту звука. Для них существовал лабораторный прототип, но он работал только в браузере на ноутбуке. Теперь он помещается в кармане.
Что такое амузия и почему это важно
Амузия (congenital amusia) — это нейрологическое нарушение, при котором человек не различает мелодические интервалы. Это не «нет слуха» в бытовом смысле: люди с амузией могут годами заниматься музыкой и не добиться прогресса в распознавании нот, потому что проблема на уровне обработки звука мозгом. Распространённость оценивается примерно в 1–2% населения — цифра немалая, хотя точные данные зависят от методологии диагностики.
Ранее группа исследователей опубликовала в IEEE прототип системы обратной связи в реальном времени: человек поёт, система анализирует высоту тона и визуально показывает отклонение от целевой ноты. Идея — дать обратную связь, которую мозг не может сформировать самостоятельно. Прототип работал на платформе Streamlit — то есть запускался в браузере на десктопе, требовал Python-сервер и интернет-соединение. Для людей, которым инструмент нужен ежедневно, это неудобно.
Что сделал разработчик
Рудронил Бардхан (Rudhronil Bardhan), старшеклассник из Дакки, перенёс эту идею в нативное Android-приложение. Основные технические решения:
Алгоритм YIN на чистом Dart. YIN — классический алгоритм определения высоты тона, описанный в исследовании Alain de Cheveigné и Hideki Kawahara (2002). Он работает на основе автокорреляции сигнала: вычисляет смещение между сдвинутыми копиями звуковой волны и находит период основного тона. Бардхан реализовал его целиком на Dart, без нативных библиотек (NDK/JNI), что упрощает сборку и переносимость, но ставит вопрос о производительности — об этом ниже.
Спектрограмма в реальном времени. Приложение показывает частотный спектр голоса в виде визуализации, позволяя пользователю видеть «дрейф» высоты тона в процессе пения. Это основной канал обратной связи для людей с амузией — им нужна визуальная, а не слуховая коррекция.
Слайдер коррекции. Пользователь выбирает тональность, и приложение «подтягивает» ближайшую ноту к правильной высоте. По сути, аналог авто-тюна, но с обратной связью: не просто подстраивает звук, а показывает разрыв между текущей и целевой нотой.
Полная офлайн-работа. Весь аудиопоток обрабатывается на устройстве, данные никуда не отправляются. С точки зрения приватности — важно, учитывая, что приложение работает с микрофоном.
Исходный код выложен на GitHub.
Критический разбор: что известно и чего не хватает
Здесь стоит остановиться и взглянуть на проект скептически.
Латентность. Главный параметр любого приложения для работы со звуком в реальном времени — задержка между входным сигналом и отображённой обратной связью. Если спектрограмма отстаёт на 200–300 мс, пользоваться инструментом крайне некомфортно. Для амузии, где критично именно мгновенное визуальное подкрепление, это делает или убивает продукт. В описании проекта нет ни слова о реальной латентности. YIN в чистом Dart на среднем Android-смартфоне — это не гарантированно быстрая история. Dart компилируется в нативный код, но всё-таки не C/C++, и алгоритм требует значительного объёма вычислений на каждый аудиофрейм.
Точность детекции. YIN хорош для чистых монофонических сигналов (один голос, один инструмент), но чувствителен к шуму. Типичная точность — ±1–2 цента при хорошем SNR (сигнал/шум). В реальных условиях — с фоновым шумом, встроенным микрофоном телефона, неакустически изолированном помещении — точность может заметно падать. Для людей с амузией, которые учатся петь, это критично: ошибка детекции может дать ложную обратную связь.
Нет валидации на целевой аудитории. Амузия — медицинский диагноз. Показать прототип на конференции — одно, проверить его эффективность на реальных пациентах с амузией — совсем другое. В публикации нет упоминаний клинических тестов, пользователей с подтверждённой амузией или партнёрств с исследовательскими группами. Это не баг проекта — это его текущее ограничение.
Автор — старшеклассник. Это нейтральный факт, но он объясняет, почему проект таков, каков он есть: учебная реализация на основе открытого исследования, а не коммерческий продукт с командой QA. GitHub-репозиторий, вероятно, не содержит подробной документации по архитектуре, тестов или бенчмарков.
Что это значит для обычного пользователя
Даже если вы не входите в те самые 1,5%, приложение может быть полезным:
- Развитие музыкального слуха. Визуальная обратная связь в реальном времени — один из эффективных способов тренировки интонации. Приложения типа Vocal Pitch Monitor делают нечто похожее, но не все из них open source и бесплатны.
- Настройка инструментов. Спектрограмма и детектор нот работают и для гитары, и для духовых.
- Образование. Для учителей музыки и логопедов — наглядный инструмент, не требующий лицензий и интернета.
При этом важно понимать: одно open-source-приложение от старшеклассника — не замена специализированному терапевтическому инструменту. Если у вас или вашего ребёнка диагностирована амузия, это дополнительный инструмент, но не лечение.
Итого
Проект Бардхана — хороший пример того, как академическая исследовательская работа может превратиться в доступный инструмент. IEEE-прототип сидел в Streamlit-демке и был бесполезен для тех, кому был адресован. Теперь он работает на смартфоне, не требует сервера и бесплатно доступен каждому.
Вопросы к латентности, точности и клинической эффективности остаются открытыми. Но для проекта, который начался как учебная работа — это достойная отправная точка, и open-source-лицензия позволяет кому угодно взять код и довести его до состояния, пригодного для реальной реабилитационной практики.