BravoNota – опубликованное приложение для iOS и Android, которое распознаёт аккорды собственной нейросетью прямо на телефоне. Пользователь получает временную шкалу аккордов, может перейти к нужному фрагменту записи и продолжить работу с тюнером, метрономом, библиотекой и спектрограммой.
Самая важная часть истории находится не в выборе архитектуры модели. Сложнее всего было создать коммерчески чистый набор данных, точно разметить музыку по времени и превратить исследовательскую идею в понятный инструмент для обычного музыканта.
Всё началось с занятий дочери
Первой задачей был простой метроном. Многие приложения встречали ребёнка рекламой, регистрацией и платными экранами до того, как позволяли начать заниматься. Я сделал собственный инструмент без отвлекающего слоя.
Затем понадобился скрипичный тюнер. Позже появились строи для других инструментов, библиотека аккордов и спектрограмма. Так продукт рос не из списка модных функций, а из реальных музыкальных занятий.
Следующий вопрос был сложнее: можно ли загрузить запись и увидеть, какие аккорды звучат в каждый момент?
Почему нельзя было просто взять готовую модель
Публичные исследования доказали, что задача решаема. В частности, работа A Bi-directional Transformer for Musical Chord Recognition описывает модель, которая учитывает контекст до и после текущего фрагмента музыки.
Но исследовательский код и открытые музыкальные наборы не автоматически становятся основой коммерческого приложения. Нужно понимать происхождение записей, право на их использование, качество разметки и возможность развивать словарь аккордов.
Поэтому для BravoNota был создан собственный набор данных. Работа включала:
- подготовку допустимых музыкальных примеров;
- точную разметку начала и конца каждого аккорда;
- проверку слабых и противоречивых фрагментов;
- балансировку распространённых и редких классов;
- повторное обучение и сравнение версий;
- проверку на разных инструментах, темпах и стилях.
В разметке помогала семья. Это сохранило исходную связь продукта с теми, для кого он создавался.
Что получает музыкант
BravoNota распознаёт 170 классов аккордов. Результат – не просто список названий, а временная шкала. Для каждого отрезка видны аккорд, начало, длительность и показатель согласованности.
Пользователь может:
- выбрать запись на телефоне;
- получить последовательность аккордов;
- перейти к спорному фрагменту;
- прослушать оригинал вместе с гармонической подсказкой;
- сохранить простой список или подробную таблицу.
Показатель согласованности намеренно остаётся рядом с ответом. Музыкальная гармония не всегда имеет единственную бесспорную трактовку, а шумная запись не должна превращаться в ложную уверенность интерфейса.
Зачем нужен углублённый режим
В обычном режиме модель анализирует исходную запись. В углублённом она выполняет 18 проходов с небольшими изменениями высоты, темпа и частотного баланса. Затем результаты приводятся к одной временной шкале и голосуют.
Если ответ сохраняется при небольших изменениях сигнала, он устойчивее случайной особенности записи. Если варианты расходятся, пользователь видит это и может довериться слуху.
Такой подход не делает результат абсолютной истиной. Он превращает неопределённость в понятную часть продукта.
Нейросеть – только одна часть приложения
Музыканту нужен цельный инструмент, поэтому рядом с распознаванием работают:
- тюнер для разных инструментов и строев;
- метроном с настраиваемыми акцентами;
- библиотека аккордов для клавишных и гитары;
- живая спектрограмма;
- прослушивание и сохранение результатов.
Тюнер использует отдельный алгоритм определения высоты тона, а метроном планирует звук по аудиочасам устройства, чтобы визуальная задержка интерфейса не сбивала ритм.
Почему аудио не отправляется на сервер
Модель работает на устройстве: Core ML на iOS и TensorFlow Lite на Android. Импортированная запись декодируется локально, поток микрофона анализируется в памяти, а результаты остаются в области приложения.
Для основных функций не нужны учётная запись, рекламный профиль или аналитический модуль. Это не просто обещание в тексте: архитектура обработки описана в политике BravoNota, а модель поставляется вместе с приложением.
Такое решение даёт сразу несколько преимуществ:
- музыка не ждёт загрузки и ответа сервера;
- функция работает без устойчивого интернета;
- стоимость распознавания не растёт с каждым запуском;
- пользователь сохраняет контроль над своей записью.
Как опыт BravoNota переносится в бизнес
История полезна не только музыкальным стартапам. Она показывает полный цикл прикладного AI:
- сформулировать задачу пользователя;
- проверить исследовательскую основу;
- создать собственные допустимые данные;
- обучить и сравнить модели;
- встроить модель в реальный интерфейс;
- показать неопределённость результата;
- доставить вычисления туда, где находятся данные.
Для другого заказчика меняется предметная область, набор классов, формат результата и место запуска. Сам подход остаётся тем же: готовая модель становится продуктом только вместе с данными, проверкой, интерфейсом и эксплуатацией.
Техническим специалистам
Модель семейства BTC получает частотно-временное представление CQT и учитывает контекст по обе стороны текущего кадра. Кадровые ответы объединяются в устойчивые временные сегменты. Мобильные версии используют нативные форматы Core ML и TensorFlow Lite.
Отдельные цифровые сигнальные алгоритмы отвечают за тюнер и спектрограмму. Такое разделение важно: задачу, для которой существует точный специализированный метод, не нужно без причины отдавать большой нейросети.
Подробная история продукта, включая роль семьи и создание данных, опубликована на официальной странице BravoNota.
Итог
BravoNota выросла из маленькой семейной задачи в полноценный мобильный AI-продукт. Его ценность не сводится к архитектуре трансформера. Собственный набор данных, работа на устройстве, понятная неопределённость и набор повседневных музыкальных инструментов вместе сделали модель полезной для реального человека.