用LFM3-Audio-2B实现语音对话:Voice Chat完整实践指南,从语音提问到文本+语音交错回答 人工智能大模型多模态语音音频本地部署【免费下载链接】LFM3-Audio-2B项目地址https://ai.gitcode.com/hf_mirrors/LiquidAI/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_mixedTrue, suppress_audio_outTrue️纯语音合成TTS系统提示词Perform TTS in 语言 using a voice voice.。模式系统提示词关键参数交错语音对话Respond with interleaved text and audio.audio_temperature1.0, audio_top_k128, audio_repetition_penalty1.1纯文本不需要或用Perform ASR.等suppress_mixedTrue, suppress_audio_outTrueTTSPerform TTS in ...同交错模式的音频采样参数三、运行环境与模型准备最快安装步骤1. 一键安装依赖GPU 推理pip install transformers5.20.2 torch accelerate librosa soundfile模型采用trust_remote_code方式加载自定义代码推理框架源码在 modeling_lfm3_audio.py处理器在 processing_lfm3_audio.py音频特征提取在 feature_extraction_lfm3_audio.py。2. 按硬件选择模型变体硬件方案适用框架GPUBF16 权重即本仓库vLLM / SGLang / TransformersCPU / GPUGGUF 量化llama.cppApple SiliconMLX 4-bitMLX-VLM跨平台ONNXONNX Runtime 提示LiquidCodec 解码速度约为单 CPU 线程Apple M4 Max87 倍实时所以即便没有 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, dtypedtype, device_mapdevice, trust_remote_codeTrue ).eval() processor AutoProcessor.from_pretrained(model_id, trust_remote_codeTrue) codec processor.audio_tokenizer.to(devicedevice).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_messageTrue, tokenizeTrue, return_dictTrue, return_tensorspt, ).to(device)对话模板的细节可以查看 chat_template.jinja模型结构配置见 config.json如codebooks12、interleaved_n_audio12等交错生成参数。第 3 步生成并保存文本 24 kHz 语音双通道回复with torch.no_grad(): outputs model.generate( **inputs, max_new_tokens1024, audio_temperature1.0, audio_top_k128, audio_repetition_penalty1.1, audio_repetition_window4096, return_dict_in_generateTrue, ) text processor.decode( outputs.sequences[0, inputs[input_ids].shape[1]:], skip_special_tokensTrue, ) 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 backbone24 层、hidden 2048配置见 configuration_lfm3_audio.py同时生成文本 token 和语音 token并按interleaved_n_text6 / interleaved_n_audio12的节奏交错排布输出侧LiquidCodec 用 12 个离散 token 表示 80 ms 语音并支持流式增量解码——边生成边出声对话保持跟手。六、关键参数与常见配置清单参数推荐值作用audio_temperature1.0语音 token 采样温度audio_top_k128语音采样候选数audio_repetition_penalty/window1.1 / 4096抑制语音复读suppress_mixed/suppress_audio_out纯文本输出时设 True强制只出文本streamer/audio_streamer可选分别流式接收文本 token 与语音帧做实时应用时必配⚠️ 常见坑语音发飘/重复→ 检查是否漏了audio_repetition_penalty和audio_repetition_window想要纯文本却混出语音→ 记得加suppress_mixedTrue, suppress_audio_outTrue推理没结束就截断→ 纯文本思考模式下增大max_new_tokens输出中要有/think才算结束。七、进阶玩法让语音对话更好用先推理再回答assistant 轮预填think可拿到带思考过程的文本回答Voice Chat 目前支持英语语音工具调用系统提示词Respond with function calls, and interleaved text and audio.模型会把把音量调到 30转成set_volume(30)这样的 tool call可与文本、语音同时返回⚡实时转写LiveASRmodel.transcribe_live()按约 0.96 s 分块边说边出字适合字幕与听写场景多语言翻译系统提示词指定源语言和目标语言即可语音转文本翻译18 种语言互译中英语表现最好。这些示例的完整代码都在 README.md 的 Usage examples 小节。八、常见问题 FAQQ1没有 GPU 能跑吗可以。选择 GGUF 变体走 llama.cpp或 ONNX Runtime 跨平台推理2B 体量在 CPU 上也可用只是速度较慢。Q2Voice Chat 支持哪些语言目前 Voice Chat 模式支持英语多语言能力体现在语音转写、合成与翻译中、日、韩、法、德、西、阿、土等 19 种语言/地区。Q3能做复杂多步推理吗官方定位是本地 Agent、工具调用、结构化输出与领域微调不推荐用于 agentic coding 或复杂多步推理。Q4许可证允许商用吗模型采用 LICENSE 中的 LFM Open License v1.0商用前请自行阅读条款。九、相关文件速查文件说明modeling_lfm3_audio.py模型主体音频编码 交错生成modeling_liquid_codec.pyLiquidCodec 语音分词/解码processing_lfm3_audio.py对话模板与多模态输入处理feature_extraction_lfm3_audio.py16 kHz log-mel 特征提取config.json模型结构参数codebooks、交错节奏等chat_template.jinja对话模板定义audio_tokenizer/LiquidCodec 权重按上面的三步走下来你就拥有了一个可以听你说话、边打字边说话回答你的本地语音助手。下一步建议把streamer与audio_streamer接上麦克风与扬声器体验 50 ms 首响的实时 Voice Chat 赞分享人工智能大模型多模态语音音频本地部署【免费下载链接】LFM3-Audio-2B项目地址https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM3-Audio-2B点击查看免费下载相关推荐5个理由让你立即尝试FSearchLinux极速文件搜索终极方案5个理由让你立即尝试FSearchLinux极速文件搜索终极方案 你是否厌倦了在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),仅供参考