Как это работает

Каждый результат делает отдельный инструмент: нейросеть или алгоритм, запущенные на нашем сервере. Если инструмент не сработал, результат помечается «недоступно» — ничего не дорисовывается и не берётся из интернета или памяти. Все времена отсчитываются от начала загруженного файла, поэтому аккорды, слова и ноты совпадают с минусом.

Этапы

  1. Проверка и подготовка. ffmpeg проверяет, что файл декодируется, его длительность, частоту и каналы, и делает рабочую копию 44,1 кГц. Исходник не меняется и удаляется сразу после обработки.
  2. Минус. Demucs v4 (htdemucs) делит запись на вокал, ударные, бас и остальное. Минус — сумма ударных, баса и остального: длительность и темп не меняются. Потом модель PANNs слушает минус на остатки голоса; если находит — минус помечен «нужна проверка» с указанием времени.
  3. Ритм. beat_this находит доли и первые доли тактов. Размер считается по числу долей между первыми долями, а не по общему числу долей; если такты разной длины — размер «не определён» с вариантами. Темп даётся с двойным и половинным прочтением (например, 70 или 140 BPM). Свинг и триоли — по положению атак ударных внутри доли.
  4. Тональность и аккорды. Хрома по сопровождению без ударных и вокала, профили Крумхансла для тональности (с альтернативами и местными отклонениями), шаблоны шести типов аккордов со сглаживанием Витерби. Бас и обращения (C/E) — по бас-дорожке. N.C. — гармонии нет, «?» — аккорд не определён. Хроматические аккорды не подгоняются под тональность.
  5. Гитара. Аппликатуры в стандартном строе без каподастра; каждая проверена программно: звучащие ноты совпадают с нотами аккорда, нижняя — основной тон. Для начального уровня 7-е аккорды упрощаются до трезвучий.
  6. Инструменты. PANNs (AudioSet, 527 классов) по всему миксу и по дорожке «остальное», покадрово — с интервалами звучания и оценкой модели. «Своя дорожка» есть только у вокала, ударных и баса: остальные инструменты звучат вместе.
  7. Слова. faster-whisper (large-v3-turbo) по выделенному вокалу, с временем каждого слова. Неуверенные слова — [неразборчиво], вероятные «галлюцинации» на проигрышах отбрасываются. Текст не ищется в интернете и не восстанавливается по названию.
  8. Ноты. Мелодия — pYIN по вокальной дорожке, ритм привязан к найденным долям. Аранжировка: правая рука — мелодия (перенесена на октаву в удобный регистр), левая — сопровождение по аккордам: бас и квинта, «бас-аккорд» или ломаный аккорд в зависимости от сложности. Расшифровка: модель ByteDance для фортепиано по дорожке «остальное», только если фортепиано обнаружено.
  9. Экспорт. Одна нотная модель → MusicXML и MIDI (music21) → PDF (Verovio). Каждое событие в модели помечено: recognized — распознано, adapted — перенесено или упрощено, generated — создано для аранжировки.

Что проверяется автоматически

  • файлы открываются; длина минуса и дорожек равна исходнику до сэмпла; нет клиппинга;
  • MusicXML читается, в нём два стана; длительность каждого такта равна размеру; лиги продления не разорваны; ноты в диапазоне фортепиано; аккорд в одной руке не шире растяжки;
  • MIDI содержит те же ноты и в те же моменты, что MusicXML; в PDF отрисованы все такты;
  • сопровождение состоит из нот своего аккорда; все временные метки внутри записи.

Человек результат не слушает и не смотрит. «Готово» значит «файл создан и прошёл проверки», а не «распознано без ошибок».

Где ошибается

  • Мелодия: быстрые украшения, мелизмы и речитатив дают лишние или пропущенные ноты; длительности округляются до восьмых или шестнадцатых.
  • Аккорды: распознаются мажор, минор, 7, maj7, m7 и уменьшённый; sus, add9, 6, 9 сводятся к ближайшему.
  • Песни со сменой размера, рубато или без ударных: тактовая сетка может быть неверной — такие ноты помечены «нужна проверка».
  • Слова: хорошо на чётком вокале, хуже — на скриминге, хоре, сильной обработке голоса. Смешение языков в одной песне передаётся неточно.
  • Свинг и триоли определяются, но в нотах записываются ровными долями.

Отчёт для разработчиков

К каждому разбору прилагается report.json: общий статус (complete, partial, failed), статус каждого файла (ready, needs_review, unavailable, failed, not_applicable), тональность, темп, размеры, инструменты, выполненные и непройденные проверки, предупреждения с временем и ошибки по этапам. В analysis.json — доли, карта темпа, аккорды, ноты с происхождением и все проверки.

Разобрать песню