Как мы научили GigaChat слышать: погружение в аудиомодальность
В конце прошлого года мы рассказывали про эксперименты с аудиомодальностью GigaChat, эксклюзивно показывали стенд на нашей конференции. Теперь аудиомодальность GigaChat доступна всем — в веб-интерфейсе giga.chat и Telegram-боте!
Сегодня мы расскажем, почему ушли от классической схемы ASR (Automatic Speech Recognition) + LLM и построили end-to-end модель, которая понимает речь; как устроена наша новая модель; на каких данных мы её обучали; и что из этого получилось.
От ASR + GigaChat к нативной поддержке аудио
Ранее речевые сценарии реализовывались связкой SaluteSpeech ASR и GigaChat Max. Несмотря на фундаментальные модели под капотом SaluteSpeech и регулярную адаптацию сервиса к запросам различной тематики, такой подход имел ряд ограничений:
Потеря информации: ошибки ASR неизбежно влияли на точность дальнейшей обработки текста. Например, запрос «чем Tensor Parallelism отличается от Sequence Parallelism» не распознавался корректно и приводил к неудовлетворительному ответу модели
Разрыв модальностей: GigaChat не получал дополнительной информации об эмоциях, интонациях и окружающем контексте, содержащейся в голосе.
Ограничение на длинные аудио: при распознавании длинных аудиозаписей речь нарезается на небольшие фрагменты, что приводит к потере аудио-контекста.
Ограниченные мультиязычные возможности: использование модели распознавания речи снижает возможность работы с языками, которые знает GigaChat, но не поддерживает SaluteSpeech ASR.
Эти проблемы подтолкнули нас к решению обучить модель, воспринимающую речь напрямую.
Архитектура и стадии обучения
Наша аудиомодель построена на основе следующей архитектуры (Рис. 1):
Audio Encoder GigaAM Max: основан на модели GigaAM-v2, которая использует архитектуру Conformer и предварительно обучена с применением HuBERT-подобного подхода. Основные отличия от open-source модели GigaAM-v2: масштабирование количества параметров модели в 2,5 раза, и обучающих данных — в 15 раз.
Modality Adapter — модуль для адаптации выходов Audio Encoder’а к внутреннему пространству GigaChat. Он состоит из двух компонентов:
Subsampler — parameter-free модуль, который сжимает длину последовательности акустических эмбеддингов в 4 раза путём конкатенации соседних векторов. Это позволяет экономить контекст LLM и эффективно обрабатывать длинные аудиозаписи.
Projector — модуль, который преобразует признаки после Subsampler’а и проецирует их в размерность LLM. Простая линейная проекция показала себя лучше сложных архитектур: основную работу выполняет энкодер.
Decoder: GigaChat 2 Max, с применением Low-Rank Adaptation (LoRA) на FFN-слои и матрицы проекций в Self-Attention.
Подробно про Pretrain, SFT и DPO базовой модели мы рассказывали в предыдущей статье «GigaChat 2.0 в API», а здесь сосредоточимся на обучении акустических модулей и совместном обучении GigaChat Audio.
Мы провели обучение в несколько этапов:
Audio Encoder Pre-training. Self-supervised Learning (SSL) на большом объёме неразмеченного аудио (≈700 тысяч часов). Здесь энкодер выучивает фундаментальные закономерности в аудиосигнале. После предобучения веса модели попадают в то состояние, из которого сходимость будет быстрой и к более качественным метрикам. Подробно про методы предобучения в аудио мы рассказывали в предыдущей статье: «GigaAM: класс открытых моделей для обработки звучащей речи».
Audio Encoder Fine-tuning на задачу распознавания речи (≈100 тысяч часов). Обучение распознавания речи на большом количестве данных позволяет сформировать семантические представления о контенте сигнала на последних слоях. Этот этап значительно ускоряет сходимость, а также позволяет достичь лучших показателей относительно обучения с SSL-энкодером.
Audio and Text Representations Alignment. Используя облегчённый декодер GigaChat Lite, мы проводим согласование представлений аудио-энкодера с латентным пространством языковой модели. Такой «тёплый старт» уменьшает число итераций, требуемых на следующем этапе, и оптимизирует расход GPU-времени.
Audio Supervised Fine-Tuning (SFT): на этом этапе модель адаптируется под форматы, обучается распознавать вызов функций и вести связный диалог на естественном языке.
Данные
Теперь, когда мы разобрались с архитектурой и стадиями обучения, давайте посмотрим, на каких данных обучали и как мы их подготавливали. Основную ценность представляют данные для последнего этапа обучения — Audio Supervised Fine-tuning. Здесь мы подробнее расскажем про их подготовку.
Мы подготовили корпус данных объёмом порядка 10 тысяч часов на русском, английском и других языках. При его формировании мы стремились охватить максимально широкий спектр речевых и аудиозадач: от классического распознавания речи до сложных мультимодальных сценариев.
В состав корпуса вошли:
Данные для распознавания речи и перевода в виде реальных аудиозаписей и надиктованных текстов. Изначально мы использовали большой объём production ASR-данных, на которых учим CTC-модели для сервисов SaluteSpeech. Это приводило к двум проблемам:
Смещение в сторону задачи распознавания. При сложном запросе (шумные условия; иностранный язык, которого было не так много в обучении) модель могла вместо ведения диалога транскрибировать последнюю реплику пользователя.
Не такая богатая нормализация и красота распознанного текста. Наши данные для распознавания речи были в формате, который заточен для обучения CTC-моделей: цифры и знаки (%, $, +, …) записаны словами. Аудиомодальность приобретала этот же стиль транскрибации.
Поэтому мы оставили на этапе Supervised Fine-Tuning только небольшое количество качественных текстов:
Распознавание диалогов с разбиением по спикерам.
«Красивый ASR» — распознавание речи с широким списком инструкций, которые учитывают пожелания пользователя: форматирование транскрипции в Markdown, добавление метки говорящего, определение его пола, добавление эмодзи, маскирование мата, запись слов-паразитов и многое другое.
После этих модификаций смещение в сторону задачи распознавания снизилось в десятки раз, а распознанный текст стал гораздо приятнее для восприятия пользователя.
Аудиоаннотации: датасеты с описанием происходящего на аудиофрагментах, с выделением объектов, событий и действий.
Вопросы по аудиоаннотациям: сбор пар аудио и текстовых аннотаций с последующей генерацией диалогов с помощью GigaChat. Вместо аудиофрагментов мы использовали подробные текстовые описания звуковых сцен.
Поддержка function calling: для вызова функций голосом мы адаптировали текстовый датасет. Озвучивание и валидация текстовых запросов производились исполнителями платформы Tagme.
Диалоговые данные: для обучения модели ведению диалога мы просили пользователей взаимодействовать с моделью на разнообразные темы как голосом, так и текстом. Пример диалога:
Role
Message
user
[audio]: Hi, my name is Alex. I'm from Minsk. I'm 9. I go to school 5 days a week. On Monday, on Tuesday, on Wednesday, on Thursday and on Friday. I'm a good pupil. I can read and write well. I can speak English very well too. My favorite lessons are maths and English. But I can't sing well and I don't like music. I come home at 2 o'clock and do my homework. On Monday I rollerblade with my friend Mike. We can rollerblade very well. On Tuesday I ride a bike with my brother. We ride bikes in the park together. On Wednesday I do my homework and then I listen to music with my friend Ann.
Переведи последнее предложение.
assistant
Последнее предложение: «On Wednesday I do my homework and then I listen to music with my friend Ann». Перевод: «В среду я делаю домашнее задание, а затем слушаю музыку со своей подругой Анной».
user
[audio]: На каком языке, судя по тексту, хорошо разговаривает Алекс?
assistant
Алекс хорошо разговаривает на английском языке. Он сам об этом говорит: «I can speak English very well».
user
[audio]: В какое время, во сколько Алекс приходит домой из школы?
assistant
Алекс приходит домой из школы в два часа («I come home at two o'clock»).
Длинные аудиозаписи: для возможности суммаризации и ответов на вопросы по длинным аудиозаписям мы собирали соответствующие датасеты. Мы использовали транскрипции аудиозаписей для генерации обучающих данных с помощью текстовой модели, для обучения же использовались только длинные аудиозаписи, короткие инструкции и ответы текстовой модели.
Кроме того, в процессе обучения мы использовали внутренние размеченные датасеты для задач определения пола и возраста, распознавания эмоций, определения шёпота и других production-классификаторов.
Отдельно отметим использование синтетических данных: мы адаптировали текстовые датасеты, заменяя текстовые реплики на голосовые с помощью технологий синтеза речи SaluteSpeech. Это позволило существенно расширить количество обучающих примеров для специфических сценариев без лишних расходов на озвучивание текстов людьми и разметку данных.
Обработка длинных аудио
Одна из важных возможностей для Audio conditioned LLM — поддержка длинного аудио-контекста: суммаризация длинных записей, ответы на вопросы. Изначально большинство датасетов в Audio SFT содержали небольшие фрагменты речи (до нескольких минут). Такое распределение в длительности приводило к плохому качеству суммаризации на часовых аудиозаписях, несмотря на текстовые возможности базовой модели на длинных контекстах.
У этой проблемы может быть несколько причин:
декодер не обобщается на большое количество аудио-токенов в контексте;
энкодер извлекает некачественные аудио-токены из длинных аудиозаписей.
Вторая причина не проявляется в нашем случае, поскольку мы используем Chunk-wise Attention в Conformer Encoder, что ограничивает его receptive field и позволяет обобщаться на длинные контексты. Мы также дополнительно выяснили, что при нарезке входного аудиосигнала на небольшие фрагменты (что позволяет энкодеру работать в том распределении длительностей записей, которое встречалось в обучении) качество суммаризации на длительных аудиозаписях оставалось неудовлетворительным.
Поэтому мы пошли по пути Audio SFT на длинных аудиозаписях. Для этого потребовалось поработать над архитектурой энкодера и режимом обучения.
Дело в том, что в классической архитектуре Conformer первым модулем используется Convolution Subsampling, который сжимает длину последовательности в несколько раз с помощью двумерных свёрток. При обучении на записях длительностью в несколько часов этот модуль становился узким местом: размер промежуточных активаций на первых слоях занимал всю GPU-память, что не позволяло производить обучение. Подобно архитектуре FastConformer мы пошли по пути облегчения Convolution Subsampling, заменив свёрточные операции с двумерных на одномерные. Это позволило сократить расход памяти примерно в 10 раз и запустить обучение на записях длительностью несколько часов.
Для обучения GigaChat 2 Max Audio на последовательностях небольшой длительности мы использовали Tensor Parallelism (TP), однако его увеличение не позволяло масштабироваться на длинные контексты. Здесь мы дополнительно добавили Sequence Parallelism (SP). Production-модель обучалась в режиме tp=2; sp=4. Таким образом, параметры слоя Self-Attention распределялись по двум видеокартам, а длина последовательности разбивалась на 4 блока. Такое разбиение позволило реализовать вычисления слоя внутри одного узла: синхронизация выполняется с помощью NVLink; нет накладных расходов на операции all-gather и reduce-scatter между разными вычислительными узлами (как в случае tp*sp > 8).
Оценка качества
Субъективные метрики
Поскольку в эксплуатации уже находился сценарий голосового взаимодействия с помощью SaluteSpeech ASR, первым делом мы провели Side-by-Side (SBS) сравнение end-to-end модели GigaChat Audio и модульной системы SaluteSpeech ASR + GigaChat.
Для этого мы собрали тестовый датасет из multi-turn диалогов: пользователи могли свободно общаться с моделью на интересные им темы и сценарии. В результате мы получили префиксы диалогов, которые можем обрабатывать разными моделями и сравнивать последние реплики.
Всего в датасет вошло 1200 диалогов. Каждый диалог оценивается тремя AI-тренерами. Помимо сравнения реплик двух моделей AI-тренер пишет комментарий, в котором обосновывает своё решение. Пример интерфейса с результатом оценки приведен на рисунке 2.
На рисунке 3 представлено SBS-сравнение GigaChat Audio и SaluteSpeech ASR + GigaChat. Видно, что с большим отрывом выигрывает наша новая end-to-end модель. Мы тщательно проанализировали результаты разметки и выделили причины такого результата:
GigaChat Audio отвечает лаконичнее, не утяжеляя ответ дополнительными фактами. ASR+GigaChat добавляет даты, полные имена персонажей, номера сезонов сериалов, вес овощей и т. д., в которых иногда допускает ошибки, за что AI-тренеры штрафуют модель.
Часть запросов содержит слова, с которыми не справляется ASR. Например, «Маньпупунёр», «Валар Дохаэрис».
Часть запросов содержит полностью английские запросы, с которыми не справляется ASR.
Часть запросов направлена на анализ голоса, сцены, слышимости речи. Это принципиально невозможно с помощью ASR+GigaChat.
Помимо SBS-сравнения мы разработали DLAP-оценку (Dialog LLM Answer Property Evaluation) по следующим срезам:
Общее впечатление: комплексная оценка качества ответа с точки зрения удобства восприятия и удовлетворения потребностей пользователя.
Красота: оценка структуры и формата ответа, влияющих на лёгкость чтения и восприятия информации.
Грамотность: соответствие нормам современного русского языка и отсутствие стилистических и орфографических ошибок.
Следование system: соблюдение установленных правил общения с моделью.
Контекстность: способность модели учитывать предыдущую беседу и правильно реагировать на контекст.
Полезность: эффективность ответа в решении конкретной задачи пользователя.
Фактология: точность и достоверность представляемой информации.
Такой подход позволяет сравнивать модели по отдельным показателям, а также находить точки роста. На рисунке 4 представлен интерфейс разметки для одного из заданий.
Мы проводили DLAP-сравнение на том же наборе диалогов, что и SBS. Результаты показаны на рисунке 5. Для сравнения мы добавили open-source модель Qwen2-Audio-Instruct и проприетарные модели Gemini Flash, Gemini Pro, GPT-4o. Из проведённого сравнения видно, что GigaChat 2 Max Audio превосходит или достигает метрик Gemini Flash и GPT-4o.
Объективные метрики
В предыдущем разделе мы говорили об оценке аудио-возможностей, но перед нами стояла ещё одна важная цель: сохранить фундаментальные базовые свойства модели. Метрики на текстовых запросах не должны значительно деградировать при переходе с GigaChat на GigaChat Audio. Для этого мы проводим сравнение на десятках мировых и внутренних бенчмарков (часть из них показаны в предыдущей статье «GigaChat 2.0 в API»), а здесь для простоты указываем одни из самых известных в сообществе бенчмарков (таблица 1).
Таблица 1:
Помимо автоматических метрик мы также проанализировали изменение метрик LLM-as-a-judge (Таблица 2). Изменения от добавления аудио-возможностей составили 3-5 %.
Таблица 2:
Benchmark | Model | Score | 95% CI |
Arena-Hard-Ru | GigaChat 2 Max | 83,5 | (-1,3; 1,5) |
Arena-Hard-Ru | GigaChat 2 Max Audio | 79,5 | (-1,0; 0,9) |
RuLLMArena | GigaChat 2 Max | 82,5 | (-2,4; 2,1) |
RuLLMArena | GigaChat 2 Max Audio | 79,9 | (-1,8; 1,4) |
Как видно из приведённых выше автоматических и judge-метрик, LoRA-адаптеры, добавленные на этапе Audio SFT, не приводят к существенному искажению весов модели и деградации её базовых возможностей.
Сценарии использования
В предыдущем разделе мы обсудили наш подход к оценке качества и показали, что аудиомодальность GigaChat значительно превосходит модульный подход с ASR. Но гораздо показательнее будет взглянуть на конкретные возможности модели.
Суммаризация видео и аудио: модель способна эффективно выделять главное даже из длинных материалов. Например, вот основные мысли из интервью длительностью около двух часов:
Код голосом: написание кода через голосовое взаимодействие. Например, «Собери Dockerfile для приложения на Python с зависимостями Flask и NumPy. Укажи, как запускать сервер.»:
Запросы со сложными терминами: может накапливаться ошибка в связке ASR + GigaChat. Например, «Расскажи основные идеи архитектуры Mixture of Experts»:
Репетитор и языковое обучение: интерактивные сценарии для изучения языка. Например:
[audio 1]: «I’ll read a paragraph containing common grammar mistakes, such as mixed tenses and wrong prepositions. Please correct each mistake, explain the grammar rule I violated, and show me an alternative sentence that demonstrates proper usage.»
[audio 2]: «Yesterday, I go to the library to found a interesting book about neuroscience. I quickly readed the introduction because it was so exciting. Actually, I have read it last week already, but I forget most of the details. Then I told to my friend for giving me some summary, but she said she didn’t had time to discuss about it. So, I wait for her until late night before going back to home. I didn’t wrote any notes neither, which now I really regrets.»
Анализ публичных выступлений. Например: «Вот запись моей презентации. Проанализируй структуру, темп речи, паузы, словесные паразиты и дай советы по улучшению воздействия на аудиторию. https://www.youtube.com/watch?v=O7NSH2SAwRc&t=103s»
Анализ записей неречевой природы. Несмотря на то, что модель почти не обучалась на неречевых сигналах, она демонстрирует способность к их интерпретации. Например:«Опиши, что происходит на аудиозаписи. какие звуки ты узнала? https://www.youtube.com/watch?v=8BeVmhFURqc&ab_channel=vaandervik»
Мультимодальность: vision + audio
Ранее мы рассказывали о возможностях GigaChat Vision, а здесь описали подход, который позволил добавить нативное понимание аудио в GigaChat. Каждая из модальностей отлично справляется со своим типом запросов, но у изолированных модальностей есть существенный недостаток: отсутствие мультимодального контекста. Так, пользователь не может отправить изображение и задать к нему уточняющие вопросы голосом — для этого нужна единая модель, которая принимает на вход как изображения, так и аудиофайлы.
Чтобы ещё сильнее приблизить опыт общения с GigaChat к естественному взаимодействию, мы обучили GigaChat Audio+Vision. Как мы видели из анализа текстовых метрик, Audio-адаптеры незначительно влияют на свойства базовой модели. Более того, в сценарии мультимодального общения мы можем активировать Audio-адаптеры только на тех диалогах, которые содержат аудиозаписи. Таким образом, качество работы на диалогах, которые содержат только текст и изображения, останется неизменным.
На рисунке 6 показана схема дообучения GigaChat Vision для добавления аудиовозможностей: в ходе Audio SFT все также обучались только акустические модули и LoRA-адаптеры.
Мы обучали модальности последовательно, то есть в процессе обучения модель «видела» в контексте либо токены изображений, либо токены аудиозаписей. Несмотря на это, на инференсе заработал мультимодальный контекст.
Для оценки аудиовозможностей мы провели SBS-сравнение (рисунок 7). Результат 48:52 говорит о том, что понимание аудио не ухудшается при обучении с GigaChat Vision декодером.
Дополнительно мы оценили изменение Vision-метрик (таблица 3) и текстовых возможностей (таблица 4).
Таблица 3:
Таблица 4:
Таким образом, нам удалось создать мультимодальную модель практически без деградации Audio- и Vision-модальностей.
Что дальше?
За год нам удалось перейти от классической схемы ASR + LLM к нативной аудиомодальности в GigaChat. End-to-end подход победил со счётом 68:32 в SBS-оценке и добавил принципиально новые возможности. На аудиозапросах наших пользователей модель вышла на уровень GPT-4o по DLAP при сохранении текстовых метрик.
GigaChat Audio стал возможен благодаря усилиям исследователей, инженеров, аналитиков и команды продукта. Отдельное спасибо командам GigaAM, GigaChat, SaluteSpeech и платформы за вклад в архитектуру, обучение, инфраструктуру и тестирование. Спасибо всем, кто помогал создать модель, которая не только слушает, но и понимает.
Мы продолжаем совершенствовать модель, планируя:
Расширение аудио-визуальных сценариев: не только добавляем поддержку мультимодального контекста, но и стремимся к усилению сценариев, в которых присутствует две модальности. Например, описание событий должно стать полнее при наличии как изображения, так и аудиозаписи.
Масштабирование диалоговых возможностей на новые языки: с моделью можно общаться на свободные темы на русском и английском языках, но мы добавим и другие. В первую очередь, языки СНГ.
Создание speech-to-speech модели: это позволит не только понимать, но и нативно генерировать естественную речь с подходящими по контексту интонацией и эмоцией.
Следите за нашими новостями в канале GigaDev! Внедряйте технологию в повседневные задачи с помощью giga.chat и телеграм-бота!