HiFi-стриминг Звук решил задачу по автоматическому извлечению и анализу текстов песен. Это важно как с точки зрения фильтрации контента, так и для выдачи рекомендаций пользователям. В чем уникальность проекта, как идет его реализация и каковы первые достигнутые результаты, – рассказывает Дмитрий Берестнев, Chief Data Scientist HiFi-стриминга «Звук» и номинант на премию Data Award.
– Что побудило вас к разработке решения для автоматического извлечения и анализа текстов песен?
Многие пользователи «Звука» любят подпевать любимым трекам, а кто-то даже учит с их помощью иностранные языки, поэтому тексты песен важны. Как и необходимы тексты самому музыкальному стримингу для качественной работы с аудиоконтентом.
С помощью текстов автоматизируются процессы классификации музыки по тематикам и смыслу, происходит фильтрация детского контента и поиск «взрослого» контента. Кроме того, данные, получаемые из текстов, активно используются в рекомендациях. Однако у большей части музыкальных треков нет текстов песен – по статистике, это 60-70%. Причина проста: лейблы и музыканты просто не загружают лирику в стриминги. Поэтому команда «Звука» решила разработать собственное ML-решение для автоматизации извлечения и анализа текстов.
– В чем его уникальность?
На текущий момент на рынке нет готовых открытых решений категории speech2text для распознавания текста из песен. Все, что есть, относительно неплохо работает только с обычной речью. В рамках нашего ML-пайплайна были адаптированы и модернизированы существующие open source решения для работы с музыкой.
– В чем проблемы? Каковы сложности?
Прежде всего, для полноценного ML-обучения недостаточно просто текстов песен (лирики). Требуются точные таймкоды слов – то есть нужна качественная разметка данных. Чаще всего с этим возникает проблема. Кроме того, мы столкнулись с тем, что в открытом доступе нет больших качественных наборов данных (датасетов), на основании которых можно было бы обучить ML-модель. Наконец, нет готовых ML-моделей для распознавания вокала. Причина банальна – нет запроса на такую задачу и, как следствие, низка заинтересованность сообщества, занимающегося вопросами распознавания речи.
– Какой подход вы выбрали для решения задачи?
Мы ориентировались на open source решения OpenAl (разные версии Whisper, построенные на базе архитектуры нейросетей типа Transformer) и Nvidia (NeMo на основе архитектуры Conformer). Они тестировались в рамках серии экспериментов, в которых подбирались гиперпараметры для достижения наилучшего качества транскрибации, измеренного с помощью прокси-метрики WER (Word Error Rate – процент неправильно распознанных слов) на размеченном датасете. В итоге, мы выбрали Whisper V3 c установленным набором гиперпараметров. Также дополнительно исследовалось использование предварительной обработки исходных аудиоданных через детекторы активности голоса (Voice Activity Detectors, VAD) и модели выделения голоса (DEMUGS). Это было необходимо для того, чтобы адаптированный очищенный аудиофайл подавался на вход модели транскрибации для улучшения ее качества работы. После получения результатов в виде распознанного текста тестировалось применение «опечаточников» на основании моделей (типа Т5) и регулярных выражений.
– Какие требования предъявлялись к создаваемому решению?
Нам требовался пайплайн последовательной обработки большого числа аудиофайлов (пакетный режим) с последующим сохранением во внутренние хранилища данных. При этом решение должно хорошо работать и с русским, и с английским языком.
Что касается точности модели, то целевой метрикой являлась экспертная оценка MOS (Mean Opinion Score). Качества получаемой разметки должно быть достаточно для понимания смысла песни.
Кроме того, для оценки качества работы системы мы использовали метрику WER, которая не должна была превышать 30%. Идеальным показателем в распознавании речи на русском языке считается 7,1, но это сильно зависит от датасета. В последнем соревновании по автоматическому распознаванию текста лучшие результаты WER на английском языке составляли от 11,5 до 24,3 для различных датасетов. Исходя из этого, нами был выбран порог успеха в 30%.
Целевая скорость работы модели должна составлять не более 8 секунд на трек.
– Какие данные и платформы были использованы?
Инструментами разработки выступили Python/Pytorch, Airflow, CUDA, ML-flow и Triton Inference Server.
В базе Звука более 70 млн музыкальных треков, из них около половины с вокалом. Порядка 30% уже размечены, однако каждую неделю в базу добавляются еще примерно 150 тыс. треков. Таким образом, обработке подлежат не менее 22 млн треков.
– Что собой представляет созданное решение?
Готовый пайплайн — это полноценный ML-сервис, развернутый в нашем внутреннем кластере Kubernetes. Он в режиме batch-обработки поданного на вход музыкального файла извлекает из него текст и выгружает во внутреннее хранилище данных.
– Какие результаты достигнуты и ожидаются?
На основе экспериментов с 5 тыс. песен в разных жанрах (это 2 тыс. часов песен), мы уже знаем, что лучше всего распознаются слова песен в жанрах Folk, World, Country, Non-music и Jazz. Сложнее – в Metal и Classical.
При этом достигнуты важные показатели: точность распознавания характеризуется метриками WER = 24,5, MOS = 3,665, а скорость работы составляет 3,8 секунды на трек.
– Реально ли оценить финансовый эффект от реализации проекта – например, влияние более качественных рекомендаций?
В ближайшей перспективе мы сможем проверить порядка 22 млн треков на наличие explicit-контента, что повысит разнообразие наших рекомендаций для разных категорий пользователей. Мы рассчитываем на то, что более разнообразный контент положительно скажется на росте клиентской базы и общего времени использования нашего музыкального сервиса (zvuk.com).
– Какую роль играет созданное решение для бизнеса компании?
Проект позволит решить проблему отсутствия текстов песен и их качественной разметки для последующей модерации и фильтрации контента, а это важно для рекомендаций. Кроме того, понимая текст, можно уберечь детей от «взрослого» аудиоконтента.
– В каких направлениях будет развиваться проект?
Мы планируем оптимизировать процесс в части увеличения скорости работы, а также повысить качество распознавания лирики для наиболее сложных категорий музыкального контента – например, музыки в категории Metal. Кроме того, благодаря дополнительно собранным текстам мы будем уточнять и перестраивать наши рекомендательные алгоритмы для повышения их качества. В «Звуке» более 20 различных музыкальных сервисов персональных рекомендаций. Это рекомендации плейлистов дня, новинок, артистов, бесконечные последовательные рекомендации в режиме реального времени, реагирующие на пользовательскую активность и обратную связь для выбора наиболее релевантного музыкального трека («Сила Звука»), бесконечные проигрывания по треку и артисту и многие другие. Дополнительно извлеченная лирика поможет вывести перечисленные сервисы на новый уровень.