- 人工智能
- 大模型
- 多模态
- 语音
- 音频
- 本地部署
【免费下载链接】LFM3-Audio-2B
LFM3-Audio-2B 是 Liquid AI 推出的 20 亿参数全模态语音大模型,可以在笔记本电脑和边缘设备上本地运行,支持语音提问、文本与语音交错的流式回答(Voice Chat),以及多语言语音合成、转写和工具调用。本文面向新手,带你从安装环境到跑通第一次语音对话,完整走一遍 Voice Chat 实践流程,并解释"文本+语音交错输出"背后的原理与关键参数。
一、LFM3-Audio-2B 是什么:本地可跑的语音对话大模型
LFM3-Audio-2B 可以理解为"小而全"的语音助手底座:
| 项目 | 说明 |
|---|---|
| 参数量 | 2B(可在笔记本本地运行) |
| 输入 | 文本或音频(16 kHz 采样率) |
| 输出 | 文本、24 kHz 语音,或文本+语音交错 |
| 上下文长度 | 32K tokens |
| 流式能力 | 因果音频编码 + 增量 prefill,首 token 延迟可低至 50 ms |
| 语音语言 | 中、英(美/英)、日、韩、法、德、西等 19 种语言/地区 |
| 架构 | LFM3 backbone + 因果音频编码器 + LiquidCodec 语音分词器 |
相比同类模型,它在语音合成质量(UTMOSv2 3.83)、多语言转写(FLEURS 平均错误率 6.03)和口语指令遵循(VoiceBench 73.13)上都位居第一梯队,详细数据见 README.md。
二、为什么 Voice Chat 值得做:三种回答模式怎么选
LFM3-Audio-2B 对同一个语音提问,支持三种回答方式,通过系统提示词 + 生成参数切换:
- 🗣️Voice Chat(本文主角):系统提示词
Respond with interleaved text and audio.,模型以对话风格同时输出文本和语音; - 📝纯文本回答:预填
<think>(先推理再回答)或<think></think>(直接回答),并设置suppress_mixed=True, suppress_audio_out=True; - 🎙️纯语音合成(TTS):系统提示词
Perform TTS in <语言> using a <voice> voice.。
| 模式 | 系统提示词 | 关键参数 |
|---|---|---|
| 交错语音对话 | Respond with interleaved text and audio. | audio_temperature=1.0, audio_top_k=128, audio_repetition_penalty=1.1 |
| 纯文本 | 不需要(或用Perform ASR.等) | suppress_mixed=True, suppress_audio_out=True |
| TTS | Perform TTS in ... | 同交错模式的音频采样参数 |
三、运行环境与模型准备:最快安装步骤
1. 一键安装依赖(GPU 推理)
pip install "transformers>=5.20.2" torch accelerate librosa soundfile模型采用trust_remote_code方式加载自定义代码,推理框架源码在 modeling_lfm3_audio.py,处理器在 processing_lfm3_audio.py,音频特征提取在 feature_extraction_lfm3_audio.py。
2. 按硬件选择模型变体
| 硬件 | 方案 | 适用框架 |
|---|---|---|
| GPU | BF16 权重(即本仓库) | vLLM / SGLang / Transformers |
| CPU / GPU | GGUF 量化 | llama.cpp |
| Apple Silicon | MLX 4-bit | MLX-VLM |
| 跨平台 | ONNX | ONNX Runtime |
💡 提示:LiquidCodec 解码速度约为单 CPU 线程(Apple M4 Max)87 倍实时,所以即便没有 GPU,语音"播放边生成"也完全可行。
四、Voice Chat 实践:从语音提问到文本+语音交错回答
以下示例假设你已经有一段英语语音文件question.wav(换成你自己的即可)。
第 1 步:加载模型与处理器
import torch, soundfile as sf from transformers import AutoModelForMultimodalLM, AutoProcessor model_id = "LiquidAI/LFM3-Audio-2B" device = "cuda" if torch.cuda.is_available() else "cpu" dtype = torch.bfloat16 if device == "cuda" else torch.float32 model = AutoModelForMultimodalLM.from_pretrained( model_id, dtype=dtype, device_map=device, trust_remote_code=True ).eval() processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True) codec = processor.audio_tokenizer.to(device=device).eval() # 权重来自 audio_tokenizer/这里codec就是 LiquidCodec 语音解码器,源码见 modeling_liquid_codec.py,其权重位于 audio_tokenizer/ 目录。
第 2 步:构造"语音提问 + 交错回答"的对话
Voice Chat 有两个关键约定:
- 系统提示词用
Respond with interleaved text and audio.; - assistant 轮预填特殊标记
<|mixed_start|>,告诉模型"这次要输出混合模态"。
conversation = [ {"role": "system", "content": "Respond with interleaved text and audio."}, {"role": "user", "content": [{"type": "audio", "audio": "question.wav"}]}, {"role": "assistant", "content": "<|mixed_start|>"}, ] inputs = processor.apply_chat_template( conversation, continue_final_message=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(device)对话模板的细节可以查看 chat_template.jinja,模型结构配置见 config.json(如codebooks=12、interleaved_n_audio=12等交错生成参数)。
第 3 步:生成并保存"文本 + 24 kHz 语音"双通道回复
with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=1024, audio_temperature=1.0, audio_top_k=128, audio_repetition_penalty=1.1, audio_repetition_window=4096, return_dict_in_generate=True, ) text = processor.decode( outputs.sequences[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True, ) waveform = codec.decode( outputs.audio_codes[:1, :, :outputs.audio_lengths[0]] ).audio_values[0] # 24 kHz print(text) sf.write("reply.wav", waveform.float().cpu().numpy(), 24_000)运行后你会得到一份文本text和一份reply.wav——这就是"文本+语音交错"的完整回答。
五、交错输出是怎么做到的:看懂架构图
整条链路分三段理解:
- 输入侧:音频先做 128 维 log-mel 特征(16 kHz,参数见 feature_extraction_lfm3_audio.py),再进入因果音频编码器。编码器采用滑动窗口注意力 + 短卷积,内存占用有界,且完全因果——你说话时它就在预填充,所以说完后几乎不用等待;
- 骨干侧:LFM3 backbone(24 层、hidden 2048,配置见 configuration_lfm3_audio.py)同时生成文本 token 和语音 token,并按
interleaved_n_text=6 / interleaved_n_audio=12的节奏交错排布; - 输出侧:LiquidCodec 用 12 个离散 token 表示 80 ms 语音,并支持流式增量解码——边生成边出声,对话保持跟手。
六、关键参数与常见配置清单
| 参数 | 推荐值 | 作用 |
|---|---|---|
audio_temperature | 1.0 | 语音 token 采样温度 |
audio_top_k | 128 | 语音采样候选数 |
audio_repetition_penalty/window | 1.1 / 4096 | 抑制语音复读 |
suppress_mixed/suppress_audio_out | 纯文本输出时设 True | 强制只出文本 |
streamer/audio_streamer | 可选 | 分别流式接收文本 token 与语音帧,做实时应用时必配 |
⚠️ 常见坑:
- 语音发飘/重复→ 检查是否漏了
audio_repetition_penalty和audio_repetition_window; - 想要纯文本却混出语音→ 记得加
suppress_mixed=True, suppress_audio_out=True; - 推理没结束就截断→ 纯文本思考模式下,增大
max_new_tokens(输出中要有</think>才算结束)。
七、进阶玩法:让语音对话更好用
- 🧠先推理再回答:assistant 轮预填
<think>,可拿到带思考过程的文本回答(Voice Chat 目前支持英语); - 🔧语音工具调用:系统提示词
Respond with function calls, and interleaved text and audio.,模型会把"把音量调到 30"转成set_volume(30)这样的 tool call,可与文本、语音同时返回; - ⚡实时转写(LiveASR):
model.transcribe_live()按约 0.96 s 分块边说边出字,适合字幕与听写场景; - 🌍多语言翻译:系统提示词指定源语言和目标语言即可语音转文本翻译,18 种语言互译中英语表现最好。
这些示例的完整代码都在 README.md 的 Usage examples 小节。
八、常见问题 FAQ
Q1:没有 GPU 能跑吗?可以。选择 GGUF 变体走 llama.cpp,或 ONNX Runtime 跨平台推理;2B 体量在 CPU 上也可用,只是速度较慢。
Q2:Voice Chat 支持哪些语言?目前 Voice Chat 模式支持英语;多语言能力体现在语音转写、合成与翻译(中、日、韩、法、德、西、阿、土等 19 种语言/地区)。
Q3:能做复杂多步推理吗?官方定位是本地 Agent、工具调用、结构化输出与领域微调,不推荐用于 agentic coding 或复杂多步推理。
Q4:许可证允许商用吗?模型采用 LICENSE 中的 LFM Open License v1.0,商用前请自行阅读条款。
九、相关文件速查
| 文件 | 说明 |
|---|---|
| modeling_lfm3_audio.py | 模型主体(音频编码 + 交错生成) |
| modeling_liquid_codec.py | LiquidCodec 语音分词/解码 |
| processing_lfm3_audio.py | 对话模板与多模态输入处理 |
| feature_extraction_lfm3_audio.py | 16 kHz log-mel 特征提取 |
| config.json | 模型结构参数(codebooks、交错节奏等) |
| chat_template.jinja | 对话模板定义 |
| audio_tokenizer/ | LiquidCodec 权重 |
按上面的三步走下来,你就拥有了一个可以"听你说话、边打字边说话回答你"的本地语音助手。下一步建议:把streamer与audio_streamer接上麦克风与扬声器,体验 50 ms 首响的实时 Voice Chat 🎉
- 人工智能
- 大模型
- 多模态
- 语音
- 音频
- 本地部署
【免费下载链接】LFM3-Audio-2B
相关推荐
5个理由让你立即尝试FSearch:Linux极速文件搜索终极方案
5个理由让你立即尝试FSearch:Linux极速文件搜索终极方案 你是否厌倦了在Linux系统中等待 find 命令慢慢扫描成千上万的文件?是否渴望拥有像Wi
桌面应用搜索引擎mMiniLM-L6-v2-mmarco-v2常见问题解答:解决你的模型使用难题
mMiniLM L6 v2 mmarco v2常见问题解答:解决你的模型使用难题 mMiniLM L6 v2 mmarco v2是一款基于XLMRoberta架
SQLCoder数据集构建:10种schema设计案例
SQLCoder数据集构建:10种schema设计案例 SQLCoder是一款强大的AI SQL生成工具,能够帮助开发者和数据分析师快速生成准确的SQL查询。构
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考