给大语言模型装上耳朵 —— 把音频编码器 / 离散音频 token 接入 LLM,做音频理解、描述、问答与检索。
auris 是一个结构清晰、可复现的音频语言模型(Audio-LM)框架。它把
「音频怎么进 LLM」这件事拆成三段可替换的组件:
音频 ──▶ 编码器 Encoder ──▶ 投影器 Projector ──▶ 语言模型后端 LLMBackend ──▶ 文本
(连续嵌入 / 离散 token) (对齐到词嵌入空间) (拼接 prompt 后生成)
在此之上提供四类开箱即用的任务:音频理解(分类)、音频描述 (captioning)、音频问答(QA) 与 音频-文本检索(retrieval)。
框架核心只依赖 numpy 与 pyyaml,无需 GPU 即可跑通整条链路和全部单测;
真实的 Whisper / BEATs / CLAP 编码器与 HuggingFace LLM 通过统一协议以可选
依赖(auris[torch])接入。
调研了 SLAM-LLM、multi_token、CLAP 等一批实现后,我总结出几个共性痛点,
auris 针对性地做了改进:
| 痛点 | auris 的做法 |
|---|---|
| 编码器 / 投影器散落各处,扩展困难 | 统一的注册表(@register_encoder 等),一行接入新组件 |
| 核心逻辑与重依赖耦合,测试要下模型、要 GPU | 核心纯 numpy,零下载确定性单测,torch 仅可选 |
| 检索缺现成 top-k 索引与 recall@k 评测 | 内置 RetrievalIndex + recall@k / mAP |
| 描述指标依赖 Java(METEOR/SPICE) | 纯 Python 的 BLEU / ROUGE-L / CIDEr |
pip install auris # 核心(numpy + pyyaml)
pip install "auris[torch]" # 接入真实 LLM / 训练投影器
pip install "auris[audio]" # 读取 wav 以外的音频格式从源码:
git clone https://github.com/LX588387/auris.git
cd auris
pip install -e ".[dev]"from auris import AudioLM, LogMelEncoder, load_audio
clip = load_audio("dog_bark.wav", target_sr=16000)
lm = AudioLM(LogMelEncoder()) # 默认用零依赖的 Echo 后端演示链路
lm.caption(clip) # 音频描述
lm.answer(clip, "这是什么动物的叫声?") # 音频问答
lm.understand(clip, ["狗", "猫", "鸟"]) # 零样本分类说明:默认的
EchoBackend是确定性占位后端,只用于把链路跑通和写 可复现单测,不会产生有意义的自然语言。要得到真实的描述 / 回答,请换成 HuggingFace 后端:from auris.integrations.hf_backend import HFCausalLMBackend lm = AudioLM(LogMelEncoder(), backend=HFCausalLMBackend.from_pretrained("Qwen/Qwen2-0.5B"))
from auris import AudioTextRetriever, LogMelEncoder
retr = AudioTextRetriever(LogMelEncoder(), shared_dim=256)
index = retr.build_text_index({"c1": "钢琴独奏", "c2": "犬吠", "c3": "雨声"})
hits = retr.audio_to_text(clip, index, k=3) # 以音搜文from auris import AudioLM, DiscreteTokenEncoder, CodebookSpec
spec = CodebookSpec(num_codebooks=8, codebook_size=1024)
lm = AudioLM(DiscreteTokenEncoder(spec, output_dim=256))
lm.caption(rvq_tokens) # rvq_tokens: (码本, 时间) 的整数网格auris info # 版本与已注册组件
auris caption clip.wav
auris qa clip.wav "背景里有几个人在说话?"
auris classify clip.wav 语音 音乐 环境声MIT © Dai Yanan