模型概述
模型特點
模型能力
使用案例
🚀 MERaLiON
MERaLiON-AudioLLM 是一款專為新加坡多元語言和多元文化環境量身定製的語音 - 文本大語言模型。它集成了本地化的 Whisper-large-v2 語音編碼器和 SEA-LION V3 文本解碼器,並在260,000 小時的語音和音頻數據以及6 種不同任務上進行了微調,以應對新加坡本地口音和方言的多樣化語言細微差別。
MERaLiON 代表著 Multimodal Empathetic Reasoning and Learning in One Network(單網絡中的多模態共情推理與學習)。
- 開發者:新加坡科技研究局(A*STAR)的 I²R 與新加坡人工智能公司(AISG)合作開發
- 模型類型:多模態大語言模型
- 支持語言:主要為英語(全球英語和新加坡英語),同時支持與 Whisper 和 SEA-LION 模型兼容的其他語言的輸入和輸出
- 音頻要求:單聲道音頻,16000 Hz,時長在30 秒以內
- 許可證:MERaLiON 公共許可證
- 演示地址:MERaLiON-AudioLLM 網絡演示
我們支持使用 Huggingface 和 vLLM 框架進行模型推理,可實現 閃電推理速度。如需瞭解更多技術細節,請參考我們的 技術報告。
🚀 快速開始
MERaLiON-AudioLLM 可通過 Huggingface 和 vLLM 框架進行推理,具體使用方法可參考下文的“推理”部分。
✨ 主要特性
- 適配新加坡環境:專為新加坡的多元語言和多元文化環境設計,能處理本地口音和方言。
- 多任務處理:經過訓練可處理 6 種主要任務,包括自動語音識別、語音翻譯、口語問答、口語對話總結、語音指令和副語言分析。
- 高性能表現:在新加坡本地環境的評估中表現出色,優於其他知名音頻大語言模型。
📦 安裝指南
文檔未提及具體安裝步驟,可參考相關框架(Huggingface、vLLM)的官方文檔進行安裝。
💻 使用示例
基礎用法
以下是使用 Huggingface CPU 進行推理的示例代碼:
import librosa
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
repo_id = "MERaLiON/MERaLiON-AudioLLM-Whisper-SEA-LION"
processor = AutoProcessor.from_pretrained(
repo_id,
trust_remote_code=True,
)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
repo_id,
use_safetensors=True,
trust_remote_code=True,
)
prompt = "Given the following audio context: <SpeechHere>\n\nText instruction: {query}"
transcribe_query = "Please transcribe this speech."
translate_query = "Can you please translate this speech into written Chinese?"
conversation = [
[{"role": "user", "content": prompt.format(query=transcribe_query)}],
[{"role": "user", "content": prompt.format(query=translate_query)}],
]
chat_prompt = processor.tokenizer.apply_chat_template(
conversation=conversation,
tokenize=False,
add_generation_prompt=True
)
# Use an audio within 30 seconds, 16000hz.
audio_array, sample_rate = librosa.load("/path/to/your/audio/file", sr=16000)
audio_array = [audio_array]*2
inputs = processor(text=chat_prompt, audios=audio_array)
outputs = model.generate(**inputs, max_new_tokens=256)
generated_ids = outputs[:, inputs['input_ids'].size(1):]
response = processor.batch_decode(generated_ids, skip_special_tokens=True)
高級用法
以下是使用 Huggingface GPU 進行推理的示例代碼:
import torch
import librosa
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
repo_id = "MERaLiON/MERaLiON-AudioLLM-Whisper-SEA-LION"
device = "cuda"
processor = AutoProcessor.from_pretrained(
repo_id,
trust_remote_code=True,
)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
repo_id,
use_safetensors=True,
trust_remote_code=True,
attn_implementation="flash_attention_2",
torch_dtype=torch.bfloat16
).to(device)
prompt = "Given the following audio context: <SpeechHere>\n\nText instruction: {query}"
transcribe_query = "Please transcribe this speech."
translate_query = "Can you please translate this speech into written Chinese?"
conversation = [
[{"role": "user", "content": prompt.format(query=transcribe_query)}],
[{"role": "user", "content": prompt.format(query=translate_query)}],
]
chat_prompt = processor.tokenizer.apply_chat_template(
conversation=conversation,
tokenize=False,
add_generation_prompt=True
)
# Use an audio within 30 seconds, 16000hz.
audio_array, sample_rate = librosa.load("/path/to/your/audio/file", sr=16000)
audio_array = [audio_array]*2
inputs = processor(text=chat_prompt, audios=audio_array)
for key, value in inputs.items():
if isinstance(value, torch.Tensor):
inputs[key] = inputs[key].to(device)
if value.dtype == torch.float32:
inputs[key] = inputs[key].to(torch.bfloat16)
outputs = model.generate(**inputs, max_new_tokens=256)
generated_ids = outputs[:, inputs['input_ids'].size(1):]
response = processor.batch_decode(generated_ids, skip_special_tokens=True)
📚 詳細文檔
模型描述
MERaLiON-AudioLLM 旨在將音頻 - 文本對作為輸入,並生成文本輸出。
該架構由三個關鍵組件組成:一個音頻編碼器,用於將語音或音頻輸入轉換為向量表示序列;一個文本解碼器,用於解釋和響應自然語言指令;以及一個適配器模塊,用於壓縮編碼器表示,同時使編碼器的隱藏維度與文本解碼器的嵌入大小對齊。
具體而言,我們從 Whisper-large-v2 微調了 MERaLiON-Whisper 編碼器作為音頻編碼器,並使用我們的合作伙伴新加坡人工智能公司開發的本地化大語言模型 SEA-LION V3 作為文本解碼器。
能力
MERaLiON-AudioLLM 主要針對 6 項任務進行訓練,即自動語音識別
(ASR)、語音翻譯
(ST)、口語問答
(SQA)、口語對話總結
(SDS)、語音指令
(SI)和副語言學
(PARA)。
我們使用 AudioBench 基準測試 中的一系列測試集,將 MERaLiON-AudioLLM 與三個知名的音頻大語言模型(Qwen2-Audio 7B
、WavLLM
、SALMONN
)以及一個級聯模型進行了基準測試。如下表所示,MERaLiON-AudioLLM 在新加坡本地環境中表現更好,這在新加坡 多任務國家語音語料庫(MNSC)數據集的評估結果中得到了證明。
⚠️ 重要提示
MNSC 是一個多任務語音理解數據集,它是從 IMDA NSC 語料庫 派生而來並進一步註釋的。它專注於新加坡本地口音、本地化術語和代碼切換的知識。
我們分別使用詞錯誤率(WER)和 BLEU 分數來評估 ASR 和 ST 任務。對於其他任務,我們採用了 LLM-as-a-Judge 框架,該框架使用預訓練的大語言模型根據相關性、連貫性和準確性標準生成和評分響應,以評估任務性能。有關更多詳細信息,請參考 AudioBench 論文。
任務 | 數據集 | MERaLiON | Qwen2-Audio 7B | WavLLM | SALMONN-7B | 級聯模型 |
---|---|---|---|---|---|---|
自動語音識別 WER (↓) |
LibriSpeech-Test-Clean | 0.03 | 0.03 | 0.02 | 0.10 | 0.03 |
LibriSpeech-Test-Other | 0.05 | 0.06 | 0.05 | 0.10 | 0.05 | |
Common-Voice-15-En-Test | 0.10 | 0.11 | 0.15 | 0.31 | 0.11 | |
Earnings21-Test | 0.17 | 0.19 | 0.65 | 0.26 | 0.11 | |
Earnings22-Test | 0.20 | 0.24 | 0.67 | 0.36 | 0.14 | |
MNSC-ASR-Part 1 | 0.05 | 0.07 | - | 0.09 | 0.07 | |
MNSC-ASR-Part 2 | 0.05 | 0.19 | - | 0.42 | 0.33 | |
MNSC-ASR-Part 3 | 0.28 | 0.35 | - | 0.66 | 0.30 | |
MNSC-ASR-Part 4 | 0.40 | 0.56 | - | 0.76 | 0.48 | |
MNSC-ASR-Part 5 | 0.21 | 0.28 | - | 0.35 | 0.23 | |
MNSC-ASR-Part 6 | 0.15 | 0.22 | - | 0.25 | 0.18 | |
語音翻譯 BLEU (↑) |
CoVoST 2 En → Id | 32.62 | 16.33 | 13.84 | 14.14 | 27.62 |
CoVoST 2 En → Zh | 37.98 | 25.77 | 31.96 | 33.89 | 35.27 | |
CoVoST 2 En → Ta | 8.50 | 0.03 | 0.00 | 0.00 | 8.46 | |
CoVoST 2 Id → En | 37.07 | 6.33 | 5.93 | 26.89 | 46.80 | |
CoVoST 2 Zh → En | 15.01 | 16.47 | 2.37 | 5.30 | 15.21 | |
CoVoST 2 Ta → En | 3.97 | 0.04 | 0.17 | 0.36 | 2.83 | |
口語問答 LLM-as-a-Judge (↑) |
SLUE-SQA-5 | 82.94 | 80.05 | 83.92 | 83.48 | 88.58 |
Spoken-SQuAD | 70.33 | 64.86 | 77.65 | 66.40 | 88.62 | |
CN-College-Listen-Test | 85.03 | 74.51 | 65.43 | 50.90 | 91.85 | |
Singapore-Public-Speech-SQA | 60.32 | 58.31 | 58.55 | 59.24 | 73.11 | |
MNSC-SQA-Part 3 | 51.4 | 42.0 | - | 40.60 | 53.20 | |
MNSC-SQA-Part 4 | 49.0 | 39.6 | - | 36.60 | 60.20 | |
MNSC-SQA-Part 5 | 58.2 | 51.6 | - | 44.60 | 67.20 | |
MNSC-SQA-Part 6 | 65.2 | 53.6 | - | 46.80 | 71.60 | |
口語對話總結 LLM-as-a-Judge (↑) |
MNSC-SDS-Part 3 | 46.80 | 33.80 | - | 9.0 | 45.40 |
MNSC-SDS-Part 4 | 45.80 | 24.80 | - | 7.0 | 44.00 | |
MNSC-SDS-Part 5 | 55.2 | 40.4 | - | 17.2 | 58.00 | |
MNSC-SDS-Part 6 | 61.8 | 46.2 | - | 24.2 | 65.40 | |
語音指令 LLM-as-a-Judge (↑) |
OpenHermes-Audio | 71.4 | 44.8 | 22.40 | 15.80 | 72.20 |
Alpaca-GPT4-Audio | 73.4 | 52.6 | 21.60 | 17.20 | 73.80 | |
副語言學 LLM-as-a-Judge (↑) |
VoxCeleb-Gender-Test | 99.53 | 99.12 | 69.68 | 88.81 | 35.25 |
VoxCeleb-Accent-Test | 46.35 | 29.18 | - | 34.22 | 24.64 | |
MELD-Sentiment-Test | 42.26 | 53.49 | 50.08 | 42.07 | 56.67 | |
MELD-Emotion-Test | 30.15 | 40.54 | 41.07 | 30.73 | 47.39 |
推理
⚠️ 重要提示
超出適用範圍的使用:此模型不適用於工具調用、數學和編碼任務。
vLLM 推理
我們支持使用 vLLM 框架託管模型。請參考 此處 的指南。
Huggingface CPU 推理
代碼示例見上文“使用示例”部分的基礎用法。
Huggingface GPU 推理
代碼示例見上文“使用示例”部分的高級用法。
免責聲明
當前的 MERaLiON-AudioLLM 尚未針對安全性進行專門調整,可能會生成不適當、冒犯性或有害的內容。開發者和用戶有責任進行自己的安全微調並實施必要的安全措施。作者不對因使用發佈的模型、權重或代碼而產生的任何索賠、損害或其他責任負責。
🔧 技術細節
訓練數據
MERaLiON-AudioLLM 在多種公開可用的數據集上進行訓練,同時還使用了團隊和母語人士精心策劃的合成和增強樣本,總計 260,000 小時的音頻。
計算資源和基礎設施
MERaLiON-AudioLLM 在新加坡**國家超級計算中心(NSCC)**提供的 ASPIRE 2A+ 超級計算機集群上進行訓練。ASPIRE 2A+ 集群提供多個 H100 節點,每個計算節點配備 8 個英偉達 H100 GPU、2 TB 內存和 30 TB 本地連接的 NVMe 存儲。這些節點通過優化的全胖樹拓撲結構互連,使用 400 Gb/s NDR InfiniBand 電纜。此外,集群還包含一個 2.5 PB 的基於 SSD 的 Lustre 文件系統,通過高速 InfiniBand 連接與 H100 節點相連。
在全局批量大小為 640 的情況下,我們對當前版本的 MERaLiON-AudioLLM 進行了約 200k 步的訓練,使用 16 個節點和 128 個 H100 GPU,耗時 2 天完成。
📄 許可證
本項目採用 MERaLiON 公共許可證。
致謝
本研究得到了新加坡國家研究基金會和新加坡資訊通信媒體發展管理局的國家大語言模型資助計劃的支持。
引用
如果您認為我們的工作有用,請引用我們的論文:
@misc{he2024meralionaudiollmtechnicalreport,
title={MERaLiON-AudioLLM: Bridging Audio and Language with Large Language Models},
author={{MERaLiON Team}},
year={2024},
eprint={2412.09818},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2412.09818},
}











