Google 最近發布了 Gemini Embedding 2,這是他們首個原生多模態向量模型。文字、圖片、影片、音訊、文件,全部都被映射到一個單一的 3072 維向量空間中。這是邁向全能向量模型(omni embedding models)這一更廣泛趨勢的一部分:即在單一架構中處理所有模態的統一模型,從 jina-embeddings-v4 到 Omni-Embed-Nemotron 再到 Omni-5。

吸引我們注意力的是音訊。大多數人聽到「多模態向量模型」時會想到圖片,或許還有影片。音訊是被遺忘的模態:它更難收集、更難標記,且投入研究的人也較少。在 Jina AI,我們恰好探索了這個問題,建構了小型(<12 億參數)音訊向量模型,作為我們研發全能向量模型工作的一部分。Gemini Embedding 2 的發布是一個分享我們在此過程中收穫的絕佳時機。
音訊向量模型
音訊向量是音訊片段的固定長度向量表示。給定原始波形,模型會生成一個捕捉聲音語義內容的密集向量(通常為 768 到 3072 維)。意義相似的兩個片段會產生相似的向量,且在共享的向量空間中,音訊片段會與其文字描述非常接近。這是全能向量模型拼圖中的一塊:一旦你能將音訊與文字和圖片放在同一個向量空間中進行向量化,就能解鎖跨所有模態的跨模態檢索。
自 2022 年以來的主流方法是 對比式語言—音訊預訓練(Contrastive Language-Audio Pretraining,簡稱 CLAP),將 CLIP 擴展到音訊領域。LAION-CLAP 使用 63 萬個配對資料和特徵融合對其進行了擴展。最強的變體(Elizalde et al., 2023)在 22 個不同的音訊任務上使用音訊編碼器配合自迴歸解碼器,在 460 萬對資料上進行訓練,在參數規模為 2.5 億時,於 AudioCaps 數據集上達到了 42.0 的 cvR@5。
我們採取了不同的路線:將已經理解音訊的多模態大模型轉換為向量模型。
架構
首先是輸入與輸出。輸入是原始音訊:從任何標準格式(WAV、MP3、FLAC)解碼並重採樣為 16kHz 單聲道的波形。音訊編碼器將此波形轉換為 128-bin 的 log-mel 頻譜圖,然後將其處理成每秒約 150 個詞元的特徵詞元序列。一段 10 秒的片段會變成大約 1,500 個詞元。最大輸入長度為 30 秒;更長的音訊需要進行分段處理。輸出是單一的密集向量(即向量模型結果),通常為 896 到 3584 維,具體取決於大模型骨幹網路的大小。
我們從 Qwen2.5-Omni 開始,這是一個具有原生音訊理解能力的多模態大模型。它由三個組件組成:一個音訊編碼器(約 6-8 億參數),透過約 450 萬參數的線性投影將波形轉換為特徵向量;一個大模型骨幹網路(5 億至 70 億參數),處理音訊特徵和文字詞元,每個 Transformer 層增加約 2 億參數;以及一個池化層,將最後的隱藏狀態(hidden state)均值池化為單一向量。兩種模態共享相同的大模型骨幹網路,因此在預訓練階段就已經大致對齊。

訓練目標是 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
訓練數據
五個音訊—文字配對數據集,總計 18.1 萬個樣本:
| 數據集 | 樣本數 | 描述 |
|---|---|---|
| AudioSetStrong | 10.8 萬 | 具有時間標記的事件,由 GPT 生成的標題(AudioSet 的子集) |
| FSD50K | 4.1 萬 | 人工標記的聲音事件,共 200 個類別 |
| Clotho | 1.9 萬 | 音訊字幕生成,詳細的描述 |
| UrbanSound8K | 9 千 | 城市聲音分類 |
| MACS | 4 千 | 城市聲學場景 |
CLAP 使用了完整的 AudioSet(超過 200 萬段音訊)加上其他來源,共計 460 萬對資料。我們僅使用 AudioSetStrong(約 10 萬對)。從預訓練的多模態大模型開始,大幅減少了所需的數據量。
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
四種方法
目標:建構一個參數低於 12 億且性能超越 CLAP 的音訊向量模型。
全模型微調(Full model finetuning)。 在音訊—文字對上微調 Qwen2.5-Omni-7B:AudioCaps T2A cvR@5 = 63.2,Clotho T2A = 39.2。這是效能上限,但 70 億參數規模難以部署。Tevatron 2.0 同樣僅在 AudioCaps 上進行微調(得分 61.2,但在 Clotho 上僅為 11.9,顯示出單一數據集訓練的泛化能力較差)。ColQwen-Omni 在完全沒有音訊數據的情況下,於視覺文檔任務上進行微調,透過跨模態遷移達到了 37.4。
層剪枝(Layer pruning)。 從 70 億參數的模型中移除 Transformer 層。每層約 2 億參數,因此一個 10 層的模型總計約 35 億參數。

| 層數 | 參數量 | AudioCaps T2A cvR@5 | Clotho T2A cvR@5 |
|---|---|---|---|
| 20 | 58 億 | 63.2 | 39.2 |
| 10 | 35 億 | 58.2 | 36.5 |
| 5 | 23 億 | 56.0 | 36.0 |
批次大小(32、64、128)沒有產生顯著差異。較大的批次在初期有所幫助,但隨後可能導致性能下降:批次大小為 128 時,在 Clotho 上於 2,000 步時達到 31.3 NDCG,但在 10,000 步時下降到 29.3。
純文字模態遷移(Text-only modality transfer)。 僅在文字對上進行微調(MultiNLI、SNLI、FEVER、SciFact),依賴預訓練的跨模態對齊。這在完整的 70 億模型上有效(AudioCaps 46.1,超越了 CLAP 的 42.0),但在剪枝後的 10 層模型上完全失敗(cvR@5 = 5.9)。跨模態的連結分布在整個網絡中,無法在剪枝後存續。
組件組合(Module combination)。 突破口:從一個模型中提取音訊編碼器,並與另一個模型的小模型相結合,甚至可以跨越不同的模型家族。Qwen2.5-Omni 的訓練分為三個階段:(1) 在大模型凍結的情況下訓練音訊/視覺編碼器,(2) 解凍所有參數,(3) 32K 上下文訓練。我們組合了來自不同階段的組件:
| 配置 | 音訊編碼器 | 大模型 | 參數量 |
|---|---|---|---|
| M1 | Qwen3-Omni (0.6B, pre-stage-1) | Qwen2.5-0.5B | 11 億 |
| M2 | Qwen3-Omni (0.6B, pre-stage-1) | Qwen2.5-3B | 36 億 |
| M3 | Qwen2.5-Omni-3B (0.8B, post-stage-3) | Qwen2.5-3B | 38 億 |
| M4 | Qwen2.5-Omni-3B (完整版) | 完整 3B | 38 億 |
實作細節: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(超過 200 萬條數據),而我們使用的是 AudioSetStrong(約 10 萬條數據),這部分解釋了 CLAP 在該基準測試中的優勢。

應用場景
音訊向量模型正變得比傳統檢索更具相關性。在代理(Agentic)系統中,音訊向量模型可實現意圖路由:接收語音輸入的代理可以將音訊轉換為向量,並根據語義相似度將其引導至正確的工具或子代理,而無需等待完整的逐字稿。聲音事件分類為工業環境、智慧家居自動化和安全系統的即時監控提供支援。在多模態代理工作流中,音訊向量模型讓代理能夠以處理文本和圖像的相同方式,對音訊內容進行搜索、比較和推理。音樂和媒體應用程式將其用於相似性搜索、版權檢測和內容推薦。隨著語音介面成為 AI 代理的預設交互模式,可在裝置端運行的輕量化音訊向量模型對於低延遲、保護隱私的應用變得至關重要。
結論
從預訓練的 MLLM 開始是最大的關鍵優勢。它在單一封裝中提供了跨模態對齊、強大的文本編碼器和出色的音訊編碼器。模組組合是最具前景的方向:混合來自不同模型和訓練階段的音訊編碼器與大模型,開啟了一個幾乎尚未被探索的設計空間。我們的模型在 AudioCaps 上占據主導地位,但在 Clotho 上僅與 CLAP 持平,其抽象的描述暴露了 AudioCaps 所遺漏的弱點。跨模態轉移在模型壓縮後無法維持。
這項工作是邁向全能向量模型的一步:單一模型即可將文本、圖像、音訊、影片和文件嵌入到統一的檢索空間中。模組組合方法顯示,您可以透過重用預訓練組件來高效地引導新模態的開發。接下來的步驟包括開發激活參數少於 5 億(<500M)的 MoE 架構、將模組組合與模態轉移結合,以及利用 WavCaps、MusicCaps 和語音資料集來擴展數據規模。







