Человек без труда воспринимает речь на фоне тихой музыки и звуков окружающей среды. Более того, прямо во время разговора он может мысленно подпевать и реагировать на звуки. До недавнего времени нейросети так не умели. Одни были заточены на распознавание речи, другие — на обработку музыки, а третьи — на анализ различных звуковых событий. Всё изменилось с появлением работы китайских исследователей, создавших единую мультимодальную модель SALMONN. Это нейронная сеть с открытым исходным кодом, предназначенная для обработки аудиоданных любого типа: речи, музыки и различных звуков.
В этой статье мы рассказываем об особенностях SALMONN на основе научной публикации его разработчиков. Адаптировать материал помогли наши эксперты в области обработки и синтеза речи. Перевод и разбор препринта о SALMONN выполнен исследователем лаборатории больших данных и статистики компании «Криптонит» Анной Холькиной.
Ключевой идеей проекта SALMONN стала интеграция большой языковой модели (LLM) с двумя энкодерами: одним из модели Whisper для восприятия речи и другим (BEATs) для остальных звуков. В качестве предобученной LLM используется Vicuna, созданная на основе модели LLaMA с 13 миллиардами параметров и обученная на данных лучших диалогов с ChatGPT (также авторы SALMONN выпустили версию своей модели на основе Vicuna с 7 миллиардами параметров).
В свою очередь, источниками данных для LLaMA выступили оцифрованные книги из проекта «Гутенберг», Википедия на 20 языках, исходный код и комментарии к нему с GitHub, препринты научных статей с ArXiv, а также свыше 5 млн. вопросов и ответов на сайтах сети Stack Exchange. Между собой аудиоэнкодеры и LLM объединяются через Querying Transformer (Q-Former). Такое сочетание позволяет SALMONN выполнять широкий спектр задач интеллектуальной обработки аудио, начиная с распознавания речи и заканчивая генерацией историй на основе услышанных звуков. Ниже показаны несколько примеров.
![](https://habrastorage.org/getpro/habr/upload_files/512/945/469/512945469f068dc2572b51342be6657c.png)
В этом примере человек спрашивает: «Можешь угадать, где я сейчас нахожусь?». При этом даётся описание фоновых звуков: слышны взрывы и выстрелы. Пользователь просит распознать и транскрибировать речь, игнорируя остальное, что SALMONN и делает.
Второй пример гораздо сложнее. Теперь на основе доносящихся звуков SALMONN должен
придумать историю, насыщенную деталями и логически связанную с услышанными
звуками.
![](https://habrastorage.org/getpro/habr/upload_files/53c/f5a/fb6/53cf5afb626c03beebf0658a502d968e.png)
Нейросеть генерирует три абзаца про утку, необычно крякающую в пруду и привлекающую этим внимание как других уток, так и прогуливавшегося около пруда человека.
Обратите внимание на то, что SALMONN поддерживает русский язык! Если вы хотите получить ответ на русском, просто напишите свой запрос по-русски. Правда, пока что качество генерации текста на русском оставляет желать лучшего. Также можно явно указать язык, на котором требуется дать ответ.
![](https://habrastorage.org/getpro/habr/upload_files/29e/2fd/018/29e2fd018f410bde6977575b022b4bbd.png)
Архитектура модели
Рассмотрим архитектуру SALMONN подробнее.
Аудиоэнкодеры. На первом шаге аудиосигнал проходит через два взаимно дополняющих друг друга предобученных аудиоэнкодера: Whisper и BEATs. Модель Whisper (оригинальная статья «Robust Speech Recognition via Large-Scale Weak Supervision») обучена распознаванию и транскрибации речи на большом количестве слабо контролируемых данных. Выходные признаки её энкодера подходят для моделирования речи, а также включают в себя информацию о фоновых шумах. BEATs обучен извлекать высокоуровневую неречевую информацию из аудио. При его обучении входной звуковой сигнал сначала токенизируется, а затем маскируется и далее прогнозируется при обучении. Целью обучения модели BEATs является построение как можно меньшего словаря аудиотокенов, который бы мог описывать аудио с минимальной потерей семантически значимой информации. При этом процесс обучения осуществляется путем итеративного обновления модели токенайзера при помощи дистилляции (более подробно в оригинальной статье «BEATs: Audio Pre-Training with Acoustic Tokenizers»). На конечном этапе обработки полученные от этих двух аудиоэнкодеров признаки объединяются (конкатенируются), поэтому результат (Z) содержит в себе как речевую, так и неречевую информацию:
![](https://habrastorage.org/getpro/habr/upload_files/7e7/968/23a/7e796823ae0d2c4fca3db9e80afaa7ab.png)
«Авторы получают качественные признаки от предобученных энкодеров, которые содержат в себе информацию о речи и звуках обстановки. Далее они «склеиваются» и получается, что в первой половине матрицы мы имеем информацию о том, что было сказано, а во второй – звуки обстановки. Это позволит модели понимать, на какую часть матрицы обратить внимание в зависимости от решаемой задачи», — пояснила Анна Холькина, эксперт компании «Криптонит» в области обработки речи.
Q-Former. Это связующее звено, которое представляет аудиоданные в таком виде, в котором LLM сможет их обработать. Q-Former (оригинальная статья «BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models») служит для преобразования выходного сигнала аудиоэнкодеров в фиксированное количество входных текстовых токенов для LLM. Сама по себе модель Q-Former очень похожа на архитектуру Transformer, но имеет два отличия: использование в первом блоке статичной матрицы весов запросов Q и отсутствие причинных масок (causal masks) в слоях self-attention, которые разрешают слоям self-attention смотреть только на текущий и предыдущие элементы. Таким образом, Q-Former позволяет токенам в матрице запросов Q ссылаться друг на друга — сначала используя слой self-attention, а затем взаимодействовать с извлеченными аудиоэнкодерами признаками (Z), используя слои cross-attention. Изначально Q-Former создавался для обработки изображений. Поскольку аудио, в отличие от картинок, может иметь разный размер, авторы статьи адаптируют входную последовательность для Q-Former путем сегментации вывода аудиоэнкодеров на окна заданного размера. Последнее окно при необходимости дополняется нулями.
LLM. В качестве LLM у SALMONN используется модель Vicuna (описание модели). Для её обучения авторы применили LoRA — широко используемый метод тонкой настройки и адаптации LLM под новые задачи. Он позволяет обновлять только выборочные слои модели, в то время как остальные слои остаются без изменений («замороженными»).
![Архитектура модели SALMONN Архитектура модели SALMONN](https://habrastorage.org/getpro/habr/upload_files/754/701/83e/75470183e58a720e0da43ac0b647e6b9.png)
Обучение
SALMONN обучали в три этапа:
1. Pre-training. На этом этапе авторы «сглаживают» разрыв между предварительно обученными параметрами (LLM и аудиоэнкодеры) и случайно инициализированными параметрами (Q-Former и LoRA). На этом этапе использовались 960 часов записей речи из датасета LibriSpeech и 1000 часов из набора GigaSpeech, содержащего размеченные аудиозаписи и транскрибированные аудиоданные. Также на этапе предварительного обучения SALMONN использовалось порядка 2800 часов аудиозаписей с описаниями к ним из наборов данных WavCaps, AudioCaps и Clotho.
2. Instruction Tuning. На этом этапе модель училась решать такие задачи, как автоматическое распознавание речи (ASR), автоматический перевод речи (AST), автоматическое создание субтитров (AAC), распознавание телефонных звонков (PR), распознавание эмоций (ER), автоматическое создание субтитров для музыки (MC), распознавание речи с наложением (OSR), автоматическая атрибуция фраз и голосовая верификация собеседника (SV), распознавание пола по голосу (GR), ответ на вопрос о речи (SQA), ответ на вопрос о звуках (AQA), ответ на вопрос о музыке (MQA). В сумме обучающий набор содержал около 4 400 часов аудио. При этом задачи подразделялись на два уровня сложности. К первому уровню (лёгкий) отнесли задачи: ASR, AAC, PR, ER, MC, OSR, SV и перевод с английского на китайский (En2Zh). Ко второму уровню (сложный) отнесли задачи, которые модель не обучали решать (данных для этих задач не было в обучающем наборе): извлечение ключевых слов (KE), ответы на вопросы на основе речевых запросов (SQQA), заполнение пустых слотов (SF), перевод с английского на немецкий (En2De) и перевод с английского на японский (En2Ja).
3. Activation Tuning. Авторы решили не ограничиваться списком задач, представленных во втором пункте, и обучили модель генерировать разнообразные и длинные ответы. Например, они научили SALMONN не просто развёрнуто отвечать на голосовые запросы, но и учитывать при ответе фоновые звуки или музыку (SAC). Более того, SALMONN научили сочинять рассказы на основе всей совокупности услышанной аудиоинформации (Story). Для этого они понизили значение scaling factor у LoRA и обучили модель на 12 историях, транскрибированных с аудиозаписей.
Изначальное значение scaling factor равнялось четырём. Понизив его до двух, авторы модели добились появления у неё способности генерировать длинные и насыщенные деталями ответы. При этом авторы отметили, что после данной модификации ухудшились метрики качества на некоторых представленных выше задачах.
Дополнительные задачи, решаемые на этапе Activation Tuning, отнесли к третьему уровню (очень сложные). В итоге авторы собрали следующий набор данных:
![Таблица 1. Обучающие наборы данных Таблица 1. Обучающие наборы данных](https://habrastorage.org/getpro/habr/upload_files/ec9/996/2c1/ec99962c10af09eb7edcce6f3bfbeebd.png)
Ниже представлены таблицы с метриками, которые используют для оценки различных моделей, и их итоговые значения у SALMONN после обучения. В крайнем правом столбце указаны эталонные значения на выбранных датасетах у других моделей (reference value).
![Таблица 2. Тестовые наборы данных, метрики и источники эталонных значений Таблица 2. Тестовые наборы данных, метрики и источники эталонных значений](https://habrastorage.org/getpro/habr/upload_files/cb8/9e1/35a/cb89e135a220b706007bdd0e10bd32f3.png)
![Таблица 3. Метрики SALMONN на тестовых данных Таблица 3. Метрики SALMONN на тестовых данных](https://habrastorage.org/getpro/habr/upload_files/27f/281/03c/27f28103c96560457cf06e4ead07f7f2.png)
Можно заметить, что после этапа Instruction Tuning (w/o Activation в таблице) метрики SALMONN стали лучше эталонных значений в задачах ASR, частично AAC и MC, En2Zh, En2De и En2Ja. После этапа Activation Tuning (w/ Activation в таблице) метрики стали лучше эталонных только в задачах En2Ja и KE. При этом после «активации» модель повысила метрики качества сильнее, чем после этапа Instruction Tuning, в задачах SV, Story и SAC, для которых эталонные метрики не приведены.
Выводы
В статье китайских исследователей подробно разбирается, как с помощью одной мультимодальной модели SALMONN можно выполнять интеллектуальный анализ аудиоданных трёх типов: речи, музыки и звуков. Авторы приводят примеры использования своей модели для решения 15 типов задач обработки аудио с помощью методов машинного обучения.
Однако пока не удаётся сделать SALMONN настолько универсальной, чтобы она побеждала набор узкоспециализированных моделей, каждая из которых анализирует только свой тип аудиоданных. Если за счёт настроек и дообучения мы достигнем более точных результатов SALMONN на одних задачах, то с задачами другого типа она неизбежно будет справляться хуже.
Поскольку модель открытая, её можно разворачивать и использовать на своих машинах. На практике это потребует существенных затрат. Для варианта модели с 13 млрд параметров (13B) нужна видеокарта с объёмом памяти от 80 ГБ (например, Nvidia TESLA A100). Для модели с семью миллиардами параметров (7B) нужно от 40 ГБ графической памяти (как у младших Nvidia L40 или RTX A6000). Однако если к модели 7B применить квантование и ужать её до 24 ГБ, то запустить SALMONN получится даже на непрофессиональных ускорителях (например, на игровой видеокарте GeForce RTX 4090). Кроме того, на текущий момент разработчики не выложили код для дообучения модели, так что придётся подождать, либо попытаться реализовать этот этап самостоятельно.
Ссылки: