Музыка и технологии: как пианист стал распознавать речь в Яндексе
Ты достиг больших успехов как пианист, а как всё начиналось?
Мои родители были инженерами-радиоэлектронщиками, а не профессиональными музыкантами, но всегда любили походы, бардовские песни, играли на гитаре и баяне. Так что с музыкой я был знаком с раннего детства: сначала подбирал на слух мелодии, которые слышал по телевизору. Потом у меня появилось игрушечное пианино — на нём было удобнее это делать, никого не отвлекая (например, баян поднимать тяжело). Я освоил азы нотной грамоты и даже в детском саду говорил, что хочу стать композитором. Отчасти эта мечта исполнилась, сейчас я иногда что-то сочиняю.
Позже родители узнали о музыкальном колледже при консерватории в Минске (сейчас — Белорусская государственная академия музыки), и я попал на подготовительное отделение перед поступлением в первый класс гимназии-колледжа. А дальше — 12 лет учёбы по классу фортепиано, 5 лет в Академии музыки, год в магистратуре, участие в международных конкурсах, концертная деятельность, работа концертмейстером и преподавателем.
В какой момент произошёл переход от музыки к технологиям?
Кроме музыки в моём детстве была математика. От родителей я часто слышал странные слова вроде «функция», «интеграл» и «синусоида». Мне было интересно разобраться, что они означают, и отцу не удавалось уклониться от моих вопросов. В итоге они купили мне книгу по университетской математике на тысячу страниц. Всё казалось непонятным, но от этого ещё более захватывающим.
После такого опыта школьная математика уже не представлялась мне чем-то увлекательным — я постоянно решал задачки за себя и своих соседей. Преподаватели придумывали для меня отдельные задания, а иногда и вовсе отпускали с уроков. Это оставляло мне время на более профильные занятия вроде сольфеджио и игры на инструменте.
Позже у меня появился компьютер. Я хотел научиться программировать, быстро освоил школьные алгоритмы и легко решал задачи базового курса информатики. Музыка всё ещё была со мной, и я её любил (и сейчас люблю), но ясного процесса, который бы конвертировал мои усилия во что-то конкретное, не было. Это, кстати, проблема музыкальной индустрии в целом: учишься, что-то делаешь, но гарантии востребованности твоих навыков нет.
Какое-то время я был программистом-самоучкой: установил Linux как открытую систему, писал bash-скрипты для повседневных задач, изучал по книгам более сложные языки вроде C и Haskell. Это было хобби в свободное от учёбы время.
Но однажды, во время подготовки к поступлению на кафедру математики, моя младшая сестра увидела объявление о наборе в ШАД. Мне стало интересно, я собрал все свои математические знания и сдал экзамены.
Так начался новый период в моей жизни. Я погрузился в среду математиков и программистов, да ещё и в такой современной области, как data science. Это место дало мне всё необходимое: фундаментальные знания, инструменты из промышленного программирования и возможность пройти стажировку и работать в Яндексе.
И как ты попал в команду Яндекса?
С командой тоже получилось интересно: меня собеседовал мой будущий руководитель и бывший преподаватель по алгоритмам в ШАДе Алексей Колесов. Когда я узнал, что его команда занимается голосовыми технологиями, понял, что это мне ближе всего в Яндексе. Всё-таки это связано со звуком, а у меня, как у музыканта, есть понимание акустики — отчасти интуитивное, но, возможно, это даже плюс.
Сейчас я занимаюсь задачами голосовой активации — детектированием в звуке определённых ключевых фраз, например обращения пользователя к голосовому ассистенту Алисе. Задача интересная, особенно с учётом таких факторов, как шум в помещении, активация устройства от телевизора и необходимость выбирать подходящее устройство из нескольких для продолжения диалога.
И правда, интересно! А как ты думаешь, есть ли что-то общее между игрой на инструментах и программированием?
С одной стороны, программирование — такой же творческий процесс, как игра на пианино. Никто не указывает, какой именно код писать или как исполнить музыкальную фразу на инструменте. Руководствуешься тем, решает ли это задачу, своим чувством прекрасного, удобного или понятного, а также знаниями и навыками. С другой стороны, и в классической музыке, и в программировании существуют определённые рамки и рутина, которые нужно уметь преодолевать.
Также и в программировании, и в музыке важно умение декомпозировать задачу на подзадачи и выстраивать последовательность действий для их решения. Занятия на фортепиано часто выглядят так: есть сложное музыкальное произведение — и нужно разобрать его на фрагменты, понять, что делать в каждом из них, сколько времени на это уйдёт и как каждая подзадача в итоге улучшит целое. Дальше ты решаешь каждую подзадачу почти автономно, что-то может пойти не по плану и не сразу получиться. Но важно уметь различать: это просто сложная задача или же ты застрял и нужно менять подход. Здесь музыка и программирование действительно схожи.
Как твой «музыкальный» подход помогает решать технические задачи?
В моей работе есть особенность: это акустика и понимание того, как человек воспринимает звук. Даже если речь идёт об использовании стандартного пайплайна обработки звука (преобразование Фурье, фильтры и так далее), полезно не воспринимать его как абстрактный «чёрный ящик», а понимать, что делает каждый элемент. Это позволяет мне нестандартно комбинировать их для решения необычных задач.
Например, у Яндекса есть патент на метод обработки звука, который позволяет наносить на него метку, почти неразличимую человеческим ухом, но легко определяемую специальным алгоритмом. Это полезно, чтобы, например, распознать, что звук исходит от телевизора, и не активировать голосового ассистента. В разработке этой технологии мне помогли знания о том, какие изменения в спектрограмме остаются максимально незаметными для человека, но при этом достаточно устойчивыми, чтобы их можно было определить даже в шумной комнате и при проигрывании на динамиках низкого качества.
Ещё один пример — задача по определению щелчков определённого типа, которые сигнализируют о поломке устройства. Знания в области обработки звука позволили мне быстро найти и реализовать алгоритм, который с высокой точностью решает эту задачу. Благодаря этому удалось оценить, сколько устройств действительно сломано и насколько эффективно удалось устранить проблему.
А как твои технические навыки помогают в музыкальной карьере?
Мы с учениками часто записываем выступления — аудио и видео отдельно, и у меня есть Python-скрипт, который автоматически сводит их. Ноты я обычно набираю в LilyPond — это что-то вроде LaTeX, но для нот, и там иногда требуется немного программирования.
У меня также были идеи создания ML-инструментов для сочинения музыки — скорее как средства расширения возможностей композитора, а не кнопки, которая делает всё сама (обычно это быстрее, но хуже). Например, в области рисования уже появились AI-инструменты, которые позволяют управлять процессом, а не создают всё без участия художника. С музыкой сложнее: нотный текст — это нечто символьное, его не оценишь «на глаз», как картинку. Интересно, можно ли что-то придумать в этом направлении, но пока это лишь мои мысли.
Кроме того, работа программистом даёт большую свободу. Я могу планировать своё время так, чтобы его хватало на творчество, а не только на выживание, что, к сожалению, сложно для многих моих знакомых музыкантов.
Никогда не думал, что нужно выбрать что-то одно — либо музыку, либо технологии?
Моё отношение к этому такое. Есть рабочие задачи, которые нужно выполнять, чтобы быть хорошим работником. Ты либо делаешь их полноценно, либо решаешь проблему, почему это не получается. Но это не значит, что нужно заниматься чем-то 24/7, чтобы справляться со своими обязанностями. Так и в музыке, и в программировании.
В программировании важен режим и отдых, чтобы не сгореть за пару месяцев. В музыке можно перегореть ещё быстрее, если сидеть за инструментом по восемь часов в день. Некоторые успешные концертирующие пианисты рекомендуют заниматься около трёх часов в день. Это похоже на спорт, прогресс приходит не во время тренировок, а между ними: в спорте — рост мышц, а в музыке — развитие нервной системы (хотя, конечно, нужны и сильные пальцы). У большинства же людей и трёх часов для фортепиано не найдётся, так как много времени отнимает преподавательская работа и прочая деятельность.
Мне бывало непросто. Особенно сложно было учиться в ШАДе и делать домашние задания в перерывах между музыкальными уроками, где я аккомпанировал на фортепиано. Получалось, что я просто записывал на листе формулы и обдумывал задачи по дороге домой, а вечером набирал решения в LaTeX. Но после таких переключений с одной задачи на другую всё остальное казалось уже намного проще.
То есть, несмотря на все трудности, сейчас у тебя успешно получается совмещать два вида деятельности?
Да, сейчас мне хватает времени и на работу в Яндексе, и на занятия музыкой. Правда, на что-то другое его почти не остаётся, но пару раз в неделю я нахожу время на спорт и прогулки.
Со временем я отрегулировал расписание и оставил только самое полезное и совместимое друг с другом. Сейчас у меня несколько учеников и концерты, на которые, кстати, стало уходить даже больше времени, когда я частично освободился от преподавания и концертмейстерства.
Музыка и программирование — идеальное для меня сочетание. Оба направления приносят радость. Я готов заниматься ими долго даже без непосредственной выгоды — что уже и происходило в моей жизни. В обоих направлениях я чувствую себя полезным.
Есть понятие «развлечение», когда ты поработал (сделал что-то полезное) и потом переключился на просмотр фильма или игру. Но редко это действие имеет какую-то ценность кроме факта переключения.
Здесь ситуация иная: в музыке можно отдыхать от программирования, а в программировании — от музыки. Так что я рассматриваю это как постоянный отдых и занятие любимым делом — и при этом у меня есть стабильность, зарплата и ощущение ценности.