Google은 최근 최초의 네이티브 멀티모달 임베딩 모델인 Gemini Embedding 2를 출시했습니다. 텍스트, 이미지, 비디오, 오디오, 문서가 모두 하나의 3072차원 벡터 공간으로 매핑됩니다. 이는 jina-embeddings-v4부터 Omni-Embed-Nemotron, Omni-5에 이르기까지, 모든 모달리티를 하나의 아키텍처에서 처리하는 통합 모델인 옴니 임베딩 모델(omni embedding models)로 향하는 광범위한 트렌드의 일부입니다.

우리의 시선을 끈 것은 오디오였습니다. 대부분의 사람들은 "멀티모달 임베딩"이라고 하면 이미지나 비디오를 떠올립니다. 오디오는 잊혀진 모달리티입니다. 수집과 라벨링이 더 어렵고, 이를 연구하는 사람도 적습니다. Jina AI에서는 옴니 임베딩을 향한 연구의 일환으로 이 문제를 탐구하며 1.2B 미만의 파라미터를 가진 소형 오디오 임베딩 모델을 구축해 왔습니다. Gemini Embedding 2의 출시는 그동안 우리가 배운 것들을 공유하기에 좋은 시점입니다.
오디오 임베딩
오디오 임베딩은 오디오 클립을 고정된 길이의 벡터로 표현한 것입니다. 모델은 원시 파형(raw waveform)이 주어지면 소리의 의미론적 내용을 캡처하는 밀집 벡터(일반적으로 768~3072차원)를 생성합니다. 의미가 유사한 두 클립은 유사한 임베딩을 생성하며, 오디오 클립은 공유된 임베딩 공간에서 해당 텍스트 설명과 가깝게 위치합니다. 이는 옴니 임베딩 퍼즐의 한 조각입니다. 텍스트 및 이미지와 함께 오디오를 동일한 벡터 공간에 임베딩할 수 있게 되면, 모든 모달리티에 걸친 교차 모달 검색(cross-modal retrieval)이 가능해집니다.
2022년 이후 주류가 된 접근 방식은 CLIP을 오디오로 확장한 CLAP(Contrastive Language-Audio Pretraining)입니다. LAION-CLAP은 63만 개의 쌍과 기능 융합(feature fusion)을 통해 이를 확장했습니다. 가장 강력한 변체(Elizalde et al., 2023)는 22개의 다양한 오디오 태스크에 걸친 오디오 인코더와 자기회귀 디코더를 결합하여 460만 개의 쌍으로 학습되었으며, 250M 파라미터로 AudioCaps에서 42.0 cvR@5를 달성했습니다.
우리는 다른 경로를 택했습니다. 이미 오디오를 이해하는 멀티모달 거대언어모델(LLM)을 임베딩 모델로 전환하는 것입니다.
아키텍처
먼저 입력과 출력을 살펴보겠습니다. 입력은 원시 오디오입니다. 표준 포맷(WAV, MP3, FLAC)에서 디코딩되고 16kHz 모노로 리샘플링된 파형입니다. 오디오 인코더는 이 파형을 128-bin 로그-멜 스펙트로그램(log-mel spectrogram)으로 변환한 후, 초당 약 150개 토큰의 속도로 특징 토큰 시퀀스로 처리합니다. 10초 분량의 클립은 약 1,500개의 토큰이 됩니다. 최대 입력 길이는 30초이며, 더 긴 오디오는 청크로 나누어야 합니다. 출력은 거대언어모델(LLM) 백본 크기에 따라 일반적으로 896~3584차원의 단일 밀집 벡터(임베딩)입니다.
우리는 네이티브 오디오 이해 기능을 갖춘 멀티모달 거대언어모델(LLM)인 Qwen2.5-Omni에서 시작합니다. 여기에는 세 가지 구성 요소가 포함됩니다. 약 4.5M 선형 투영을 통해 파형을 특징 벡터로 변환하는 오디오 인코더(~0.6-0.8B 파라미터), 오디오 특징과 텍스트 토큰을 모두 처리하며 각 트랜스포머 레이어마다 약 0.2B 파라미터가 추가되는 거대언어모델(LLM) 백본(0.5-7B 파라미터), 그리고 마지막 은닉 상태(hidden state)를 평균 풀링하여 단일 임베딩 벡터로 만드는 풀링 레이어입니다. 두 모달리티 모두 동일한 거대언어모델(LLM) 백본을 공유하므로 사전 학습 단계에서 이미 어느 정도 정렬되어 있습니다.

학습 목표는 InfoNCE 대조 손실(contrastive loss)입니다. 각 모달리티는 독립적으로 인코딩되며, 손실은 양방향으로 계산되어 평균화됩니다.
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
학습 데이터
총 18만 1천 개의 샘플로 구성된 5개의 오디오-텍스트 쌍 데이터셋을 사용했습니다.
| 데이터셋 | 샘플 수 | 설명 |
|---|---|---|
| AudioSetStrong | 108K | 시간적으로 라벨링된 이벤트, GPT 생성 캡션 (AudioSet의 하위 집합) |
| FSD50K | 41K | 사람이 라벨링한 사운드 이벤트, 200개 클래스 |
| Clotho | 19K | 오디오 캡셔닝, 상세 설명 |
| UrbanSound8K | 9K | 도시 소음 분류 |
| MACS | 4K | 도시 음향 장면 |
CLAP은 전체 AudioSet(200만 개 이상의 오디오)과 기타 소스를 포함하여 총 460만 개의 쌍을 사용했습니다. 우리는 AudioSetStrong(~10만 개)만 사용합니다. 사전 학습된 MLLM에서 시작하면 필요한 데이터의 양을 획기적으로 줄일 수 있습니다.
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
네 가지 접근 방식
목표: CLAP을 능가하는 1.2B 미만의 오디오 임베딩 모델.
전체 모델 파인튜닝. 오디오-텍스트 쌍에 대해 Qwen2.5-Omni-7B를 학습시킨 결과: AudioCaps T2A cvR@5 = 63.2, Clotho T2A = 39.2입니다. 이것이 상한선이지만, 7B는 배포하기에 너무 큽니다. Tevatron 2.0도 AudioCaps만으로 파인튜닝하여 유사한 결과를 냈지만(61.2), Clotho에서는 11.9에 그쳐 단일 데이터셋 학습의 낮은 일반화 성능을 보여주었습니다. ColQwen-Omni는 오디오 데이터 없이 시각-문서 태스크만으로 파인튜닝하여 교차 모달 전이를 통해 37.4를 달성했습니다.
레이어 프루닝(Layer pruning). 7B 모델에서 트랜스포머 레이어를 제거합니다. 각 레이어는 약 0.2B이므로, 10개 레이어 모델은 총 약 3.5B가 됩니다.

| 레이어 수 | 파라미터 | 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은 Clotho에서 2,000 스텝에서 31.3 NDCG를 기록했지만, 10,000 스텝에서는 29.3으로 떨어졌습니다.
텍스트 전용 모달리티 전이. 사전 학습된 교차 모달 정렬에 의존하여 텍스트 쌍(MultiNLI, SNLI, FEVER, SciFact)에 대해서만 파인튜닝합니다. 전체 7B 모델에서는 효과가 있었지만(AudioCaps 46.1로 CLAP의 42.0을 능가), 프루닝된 10개 레이어 모델에서는 완전히 실패했습니다(cvR@5 = 5.9). 교차 모달 연결은 전체 네트워크에 분산되어 있어 프루닝 후에는 유지되지 않는 것으로 보입니다.
모듈 조합. 돌파구: 모델 제품군이 다르더라도 한 모델에서 오디오 인코더를 가져오고 다른 모델에서 소형언어모델(SLM)을 가져와 결합하는 것입니다. 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가 Qwen3ForCausalLM을 사용하는 반면, Qwen3-Omni는 Qwen3OmniMoePreTrainedModel을 사용합니다. 우리는 차원이 일치하는 Omni 모델 쉘을 초기화하고 가중치를 해당 위치에 복사했습니다.

평가
오디오 임베딩을 평가하는 것은 근본적으로 검색 품질에 관한 것입니다. 즉, 텍스트 쿼리가 주어졌을 때 모델이 올바른 오디오 클립을 찾을 수 있는지를 평가합니다. 핵심 과제는 "올바름"의 기준이 데이터셋에 따라 다르다는 점입니다. AudioCaps는 구체적인 묘사("남자가 말하고 이어서 문이 닫히는 소리")를 제공하는 반면, Clotho는 추상적인 캡션("먼 곳에서 들리는 우르릉 소리와 함께 조용한 분위기")을 제공합니다. 표면적인 오디오 특징만 기억하는 모델은 AudioCaps에서는 잘 작동하지만 Clotho에서는 어려움을 겪을 것입니다. 우리는 설명 스타일에 구애받지 않는 일반화 성능을 가장 중요하게 생각합니다.
CV-Recall@5 (cvR@5): 각 텍스트 쿼리에 대해 상위 5개 결과 내에 올바른 오디오 클립이 포함되어 있는지 확인합니다. 모든 쿼리에 대해 평균을 낸 이진 점수(Binary score)입니다. MTEB 오디오 검색(retrieval)에서 사용되는 표준 지표입니다.
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 (200만 개 이상)을 사용한 반면, 본 연구에서는 AudioSetStrong (약 10만 개)을 사용했습니다. 이는 해당 벤치마크에서 CLAP이 우위를 점한 이유를 일부 설명해 줍니다.

적용 사례
오디오 임베딩은 전통적인 검색을 넘어 그 중요성이 커지고 있습니다. 에이전트 시스템에서 오디오 임베딩은 의도 라우팅(intent routing)을 가능하게 합니다. 음성 입력을 받은 에이전트는 전체 텍스트 변환을 기다리지 않고도 오디오를 임베딩하여 의미론적 유사성에 기반해 적절한 도구 나 하위 에이전트로 라우팅할 수 있습니다. 음향 이벤트 분류는 산업 현장의 실시간 모니터링, 스마트 홈 자동화 및 보안 시스템에 동력을 제공합니다. 멀티모달 에이전트 워크플로우에서 오디오 임베딩은 에이전트가 이미 텍스트나 이미지를 처리하는 것과 동일한 방식으로 오디오 콘텐츠를 검색, 비교 및 추론할 수 있게 해줍니다. 음악 및 미디어 애플리케이션에서는 유사성 검색, 저작권 감지 및 콘텐츠 추천에 이를 사용합니다. 음성 인터페이스가 AI 에이전트의 기본 상호작용 방식이 됨에 따라, 온디바이스(on-device)에서 실행되는 컴팩트한 오디오 임베딩은 저지연, 개인정보 보호 애플리케이션에 필수적입니다.
결론
사전 학습된 MLLM에서 시작하는 것이 가장 큰 지렛대입니다. 이는 교차 모달 정렬(cross-modal alignment), 강력한 텍스트 인코더, 성능이 뛰어난 오디오 인코더를 하나의 패키지로 제공합니다. 모듈 조합은 가장 유망한 방향입니다. 서로 다른 모델과 학습 단계의 오디오 인코더와 대규모 언어 모델을 혼합하는 것은 거의 탐구되지 않은 설계 공간을 열어줍니다. 저희 모델은 AudioCaps에서 우위를 점하고 있지만, AudioCaps가 놓치는 약점을 드러내는 추상적인 설명이 포함된 Clotho에서는 CLAP과 대등한 수준입니다. 교차 모달 전이는 모델 압축 과정에서 유지되지 않습니다.
이 작업은 텍스트, 이미지, 오디오, 비디오, 문서를 통합된 검색 공간으로 임베딩하는 단일 모델인 옴니(omni) 임베딩 모델을 향한 한 걸음입니다. 모듈 조합 방식은 사전 학습된 구성 요소를 재사용함으로써 새로운 모달리티를 효율적으로 부트스트랩(bootstrap)할 수 있음을 보여줍니다. 다음 단계로는 5억 개 미만의 활성화 파라미터를 가진 MoE 아키텍처, 모듈 조합과 모달리티 전이의 결합, 그리고 WavCaps, MusicCaps 및 음성 데이터셋을 활용한 데이터 확장이 포함됩니다.





