模型简介
模型特点
模型能力
使用案例
🚀 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},
}











