Google недавно выпустила Gemini Embedding 2, свою первую нативно мультимодальную векторную модель. Текст, изображения, видео, аудио, документы — всё отображается в единое 3072-мерное векторное пространство. Это часть более широкого тренда на **универсальные векторные модели (omni embedding models)**: унифицированные модели, которые обрабатывают все модальности в одной архитектуре, от jina-embeddings-v4 до Omni-Embed-Nemotron и Omni-5.

Наше внимание привлекло аудио. Большинство людей при упоминании «мультимодальных векторных моделей» думают об изображениях, возможно, о видео. Аудио — это забытая модальность: её сложнее собирать, сложнее размечать, и над ней работает меньше людей. В Jina AI мы исследовали именно эту проблему, создавая малые (SLM, <1,2 млрд параметров) векторные модели для аудио в рамках нашей работы над универсальными векторными представлениями. Выпуск Gemini Embedding 2 — отличный повод поделиться тем, что мы узнали в процессе.
Векторные модели для аудио
Аудиоэмбеддинг — это векторное представление аудиоклипа фиксированной длины. На основе необработанной волновой формы модель создает плотный вектор (обычно от 768 до 3072 измерений), который фиксирует семантическое содержание звука. Два клипа со схожим смыслом создают похожие векторные представления, а аудиоклип в общем векторном пространстве располагается рядом с его текстовым описанием. Это одна из частей пазла универсальных векторных моделей: как только вы сможете встраивать аудио наряду с текстом и изображениями в одно и то же векторное пространство, вы откроете возможность кросс-модального поиска по всем модальностям.
Доминирующим подходом с 2022 года является Contrastive Language-Audio Pretraining (CLAP), расширяющий CLIP на аудио. LAION-CLAP масштабировал этот метод с помощью 630 тыс. пар и слияния признаков. Самый сильный вариант (Elizalde et al., 2023) обучался на 4,6 млн пар, используя аудиоэнкодер в 22 различных аудиозадачах в паре с авторегрессионным декодером, достигнув 42,0 cvR@5 на AudioCaps при 250 млн параметров.
Мы идем другим путем: превращаем мультимодальные большие модели (LLM), которые уже понимают аудио, в векторные модели.
Архитектура
Сначала о том, что на входе и что на выходе. Входные данные — это необработанное аудио: волновая форма, декодированная из любого стандартного формата (WAV, MP3, FLAC) и передискретизированная в моно 16 кГц. Аудиоэнкодер преобразует эту волновую форму в 128-полосную логарифмическую мел-спектрограмму, затем обрабатывает её в последовательность токенов признаков со скоростью примерно 150 токенов в секунду. 10-секундный клип превращается примерно в 1500 токенов. Максимальная длина входного сигнала — 30 секунд; более длинное аудио необходимо разбивать на части. Выход представляет собой один плотный вектор (векторное представление), размерностью от 896 до 3584 измерений в зависимости от размера базовой большой модели (LLM).
Мы начинаем с Qwen2.5-Omni, мультимодальной LLM с нативным пониманием аудио. Система состоит из трех компонентов: аудиоэнкодера (~0,6–0,8 млрд параметров), который преобразует волновые формы в векторы признаков через линейную проекцию ~4,5 млн параметров; базовой LLM (от 0,5 до 7 млрд параметров), которая обрабатывает как аудиопризнаки, так и текстовые токены, где каждый слой трансформера добавляет ~0,2 млрд параметров; и слоя пулинга, который усредняет последнее скрытое состояние в один вектор представления. Обе модальности используют одну и ту же базовую большую модель (LLM), поэтому они уже примерно выровнены после предварительного обучения.

Цель обучения — контрастивная функция потерь InfoNCE. Каждая модальность кодируется независимо, потери вычисляются в обоих направлениях и усредняются:
def training_step(audio_batch, text_batch):
audio_embeds = model.encode_audio(audio_batch) # [B, D]
text_embeds = model.encode_text(text_batch) # [B, D]
audio_embeds = F.normalize(audio_embeds, dim=-1)
text_embeds = F.normalize(text_embeds, dim=-1)
sim = audio_embeds @ text_embeds.T / temperature # [B, B]
labels = torch.arange(len(sim), device=sim.device)
loss = (F.cross_entropy(sim, labels) +
F.cross_entropy(sim.T, labels)) / 2
return loss
Данные для обучения
Пять наборов данных с парами аудио-текст, всего 181 тыс. образцов:
| Датасет | Образцы | Описание |
|---|---|---|
| AudioSetStrong | 108K | События с временными метками, подписи, сгенерированные GPT (подмножество AudioSet) |
| FSD50K | 41K | Размеченные вручную звуковые события, 200 классов |
| Clotho | 19K | Субтитрование аудио, детальные описания |
| UrbanSound8K | 9K | Классификация городских звуков |
| MACS | 4K | Городские акустические сцены |
CLAP использовал весь AudioSet (более 2 млн аудиозаписей) плюс другие источники, всего 4,6 млн пар. Мы используем только AudioSetStrong (~100 тыс.). Использование предобученной мультимодальной большой модели (LLM) радикально снижает объем необходимых данных.
def load_sample(audio_path, caption):
waveform, sr = torchaudio.load(audio_path)
waveform = torchaudio.transforms.Resample(sr, 16000)(waveform)
audio_inputs = processor.feature_extractor(
waveform, sampling_rate=16000, return_tensors="pt"
)
text_inputs = processor.tokenizer(caption, padding=True, return_tensors="pt")
return audio_inputs, text_inputs
Четыре подхода
Цель: аудио векторная модель размером менее 1,2 млрд параметров, которая превосходит CLAP.
**Полное дообучение модели.** Qwen2.5-Omni-7B на парах аудио-текст: AudioCaps T2A cvR@5 = 63.2, Clotho T2A = 39.2. Это верхний предел, но модель 7B слишком велика для развертывания. Tevatron 2.0 аналогично дообучался только на AudioCaps (61.2, но всего 11.9 на Clotho, что показывает плохую обобщающую способность при обучении на одном датасете). ColQwen-Omni дообучался на визуально-документных задачах без аудиоданных, достигнув 37.4 благодаря кросс-модальному переносу.
**Прунинг слоев.** Удаление слоев трансформера из модели 7B. Каждый слой — это ~0,2 млрд параметров, поэтому 10-слойная модель имеет в сумме около 3,5 млрд параметров.

| Слои | Параметры | AudioCaps T2A cvR@5 | Clotho T2A cvR@5 |
|---|---|---|---|
| 20 | 5.8B | 63.2 | 39.2 |
| 10 | 3.5B | 58.2 | 36.5 |
| 5 | 2.3B | 56.0 | 36.0 |
Размер батча (32, 64, 128) не оказал существенного влияния. Большие батчи помогают на старте, но могут ухудшить результат позже: батч 128 достиг 31.3 NDCG на 2 тыс. шагов в Clotho, но упал до 29.3 на 10 тыс. шагов.
**Перенос только текстовой модальности.** Дообучение только на текстовых парах (MultiNLI, SNLI, FEVER, SciFact) с опорой на предобученное кросс-модальное выравнивание. Метод сработал на полной модели 7B (AudioCaps 46.1, что лучше 42.0 у CLAP), но полностью провалился на урезанной 10-слойной модели (cvR@5 = 5.9). Кросс-модальные связи распределены по всей сети и не сохраняются при прунинге.
**Комбинация модулей.** Прорыв: взять аудиоэнкодер из одной модели и малую LLM из другой, даже если они из разных семейств. Qwen2.5-Omni обучается в три этапа: (1) аудио/видеоэнкодеры с замороженной LLM, (2) все параметры разморожены, (3) контекст 32K. Мы комбинируем модули с разных этапов:
| Конфиг | Аудиоэнкодер | LLM | Параметры |
|---|---|---|---|
| M1 | Qwen3-Omni (0.6B, до этапа 1) | Qwen2.5-0.5B | 1.1B |
| M2 | Qwen3-Omni (0.6B, до этапа 1) | Qwen2.5-3B | 3.6B |
| M3 | Qwen2.5-Omni-3B (0.8B, после этапа 3) | Qwen2.5-3B | 3.8B |
| M4 | Qwen2.5-Omni-3B (полная) | Полная 3B | 3.8B |
Деталь реализации: Qwen3-Omni использует Qwen3OmniMoePreTrainedModel, в то время как автономная Qwen3 использует Qwen3ForCausalLM. Мы инициализируем оболочку модели Omni с соответствующими размерами и копируем веса в нужные места.

Оценка
Оценка векторных моделей для аудио в своей основе касается качества поиска: может ли модель найти нужный аудиоклип по текстовому промпту? Основная сложность заключается в том, что понятие «нужный» зависит от набора данных. В AudioCaps представлены конкретные описания («мужчина говорит, затем закрывается дверь»), тогда как в Clotho — абстрактные подписи («тихая атмосфера с отдаленным грохотом»). Модель, которая запоминает поверхностные аудиопризнаки, хорошо справится с AudioCaps, но столкнется с трудностями в Clotho. Для нас важнее всего обобщающая способность при различных стилях описания.
CV-Recall@5 (cvR@5): для каждого текстового запроса проверяется, появляется ли правильный аудиоклип в топ-5 результатов. Бинарная оценка, усредненная по всем запросам. Стандартная метрика в поиске аудио в MTEB.
def evaluate_cvr_at_k(model, dataset, k=5):
audio_embeds = model.encode_audio(dataset.audio_clips)
text_embeds = model.encode_text(dataset.text_queries)
sim = F.normalize(audio_embeds) @ F.normalize(text_embeds).T
hits = 0
for i in range(len(dataset.text_queries)):
top_k = sim[:, i].argsort(descending=True)[:k]
if dataset.ground_truth[i] in top_k:
hits += 1
return hits / len(dataset.text_queries)
Три набора данных для оценки из MTEB: AudioCaps (на основе видео, аннотации написаны людьми), AudioSetStrong (с временными метками, описания GPT), Clotho (разнообразные, абстрактные аннотации). CLAP использовал полный AudioSet (2M+), в то время как мы использовали AudioSetStrong (~100K), что отчасти объясняет преимущество CLAP в этом бенчмарке.

Применения
Векторные модели аудио становятся актуальными не только в традиционном поиске. В агентских системах векторные модели аудио позволяют реализовать маршрутизацию намерений: агент, получающий голосовой ввод, может получить эмбеддинг аудио и направить его к нужному инструменту или субагенту на основе семантического сходства, не дожидаясь полной транскрибации. Классификация звуковых событий обеспечивает мониторинг в реальном времени в промышленных условиях, автоматизацию умного дома и системы безопасности. В мультимодальных рабочих процессах агентов векторные модели аудио позволяют агентам искать, сравнивать и рассуждать над аудиоконтентом так же, как они уже работают с текстом и изображениями. Музыкальные и медиа-приложения используют их для поиска по сходству, обнаружения авторских прав и рекомендаций контента. Поскольку голосовые интерфейсы становятся основным способом взаимодействия для ИИ-агентов, компактные векторные модели аудио, работающие на устройстве, становятся критически важными для приложений с низкой задержкой и защитой конфиденциальности.
Заключение
Использование предобученной MLLM — это самый мощный рычаг. Она обеспечивает кросс-модальное выравнивание, сильный текстовый кодировщик и эффективный аудиокодировщик в одном решении. Комбинация модулей — самое многообещающее направление: смешивание аудиокодировщиков и больших моделей (LLM) из разных моделей и этапов обучения открывает пространство для проектирования, которое почти не исследовано. Наши модели доминируют на AudioCaps, но на Clotho лишь соответствуют уровню CLAP, чьи абстрактные описания выявляют слабые стороны, которые AudioCaps упускает. Кросс-модальный перенос не сохраняется при сжатии модели.
Эта работа — один из шагов к универсальной векторной модели: единой модели, которая преобразует текст, изображения, аудио, видео и документы в единое поисковое пространство. Подход с комбинацией модулей показывает, что можно эффективно внедрять новые модальности, повторно используя предобученные компоненты. Следующие шаги включают архитектуры MoE с менее чем 500M активных параметров, объединение комбинации модулей с переносом модальностей и масштабирование данных с помощью WavCaps, MusicCaps и наборов данных речи.





