刚给团队做完一个本地会议转写工具的选型前后比对了七八个预训练语音大模型心里攒了一堆话想说。这几年语音领域的迭代速度比很多人想象中快得多从wav2vec 2.0到Whisper再到Qwen2-Audio、MiniCPM-o每隔半年就会冒出一批新模型“预训练微调”已经成为语音AI的标准打法。这篇内容算是我对近几年预训练语音大模型的一次集中整理适合正在做ASR选型、语音助理、音频理解或TTS方案的同学也适合刚接触语音大模型、想快速建立全局认知的入门者。我会把近几年有代表性的模型按技术路线梳理一遍再结合本地部署的实测经验给出我的选型判断。1. 不只是“模型变多了”预训练范式如何重塑语音AI1.1 为什么语音领域也必须走预训练这条路语音AI和视觉、NLP最大的区别在于原始数据是连续的波形而人类关心的语义是离散的字符、音素和语义标签。如果把语音识别当作一个从波形到文本的监督学习问题就需要大量标注好的“音频-文本”对。做过数据集的人都知道一分钟音频的人工转写加核对成本远高于一张图片打标低资源语种甚至凑不出可用的标注集。预训练范式的出现把“人工标注驱动”变成了“无标注数据驱动”先用海量未标注语音学出声学特征和语言规律再用少量标注数据做下游适配。这也是为什么语音社区在2020年之后几乎全体转向预训练路线。还有一个现实原因语音任务的形态太多。识别、说话人验证、语音增强、情感识别、翻译、合成每个任务过去都要单独设计模型和标签体系。预训练模型像一个通用的声学底座下游任务只需要在这个底座上接一个轻量分类头或解码头。这种“一个底座、多个任务”的思路和计算机视觉里把ResNet作为通用backbone、和NLP里把RoBERTa作为通用编码器本质上是同一套方法论。1.2 三代技术路线从表征、转写到大模型对话这几年涌现的模型看起来很多但按技术路线可以分成三代。第一代是自监督声学表征模型代表是wav2vec 2.0、HuBERT、WavLM、XLS-R、MMS。它们的目标不是直接输出文本而是学习一个高质量的语音向量表示然后通过少量微调去支持ASR、说话人识别等任务。第二代是弱监督/统一模态模型代表是Whisper、SpeechT5、VALL-E、NaturalSpeech系列它们要么把语音直接映射成文本要么统一建模语音和文本两种模态工程上更接近“开箱即用”。第三代是语音LLM的多模态大模型代表是Qwen2-Audio、SALMONN、SpeechGPT、MiniCPM-o、Moshi、GLM-4-Voice它们把语音token融入大语言模型让模型能理解语音、参与对话甚至输出语音。三个阶段不是替代关系。第一代在低资源场景仍然很有价值第二代是目前落地的中坚第三代正在打开人机交互的新玩法。后面我会一代一代拆开讲讲清楚每一代的核心思想、代表模型、适合干什么以及你在什么情况下应该选哪一代。1.3 一个方便记的类比语音预训练像什么如果让我用一句话向非技术朋友解释我会说语音预训练就是让模型先“听”懂海量语音的规律再让它去“做”具体任务。更形象一点第一代像让小孩大量听人说话不需要逐句教他自己就能明白语音的声学特点第二代像给这个孩子一本词典和大量有声书让他在听的同时学着把声音对应成文字第三代像给孩子装上一个会说话的大脑不仅听得懂还能组织语言回答你甚至用语音回复你。这个类比虽然粗糙但对于建立模型选型的直觉非常有用。遇到一个任务先问自己这个任务的核心是“理解声音”“转成文字”还是“生成语音对话”答案基本决定了你该从哪一代模型里找方案。2. 第一波浪潮自监督声学表征把“听清楚”变成可迁移能力2.1 wav2vec 2.0与HuBERT对比学习和掩码预测两条路线wav2vec 2.0在2020年由FAIR发布称得上现代语音预训练的开山之作。它的思路是这样的先把原始波形通过多层卷积网络切成一段段特征再把连续特征量化成一系列离散码。预训练时模型随机掩蔽一部分时间步然后做对比学习——让模型在大量负样本中找出被掩蔽位置对应的正确量化码。训练完成后模型就掌握了对声学结构的深层理解下游任务只需要用少量标注数据微调。HuBERT走的是另一条路。它借鉴了BERT在文本上的掩码预测思想先用k-means对语音特征做聚类把每一帧语音映射到一个伪标签这个伪标签可能对应音素级别的概念然后训练Transformer去预测被掩蔽位置的伪标签。注意这个伪标签不是人工标注而是聚类自动生成的所以本质上也是自监督。训练过程中聚类和模型会不断迭代伪标签越来越精细模型的语音理解能力也越来越强。如果你熟悉RoBERTa这类中文预训练语言模型的掩码语言建模你会发现HuBERT在语音上的做法几乎是一一对应的只是把“预测被mask的token”换成了“预测被mask的声学帧的聚类标签”。从我的实际经验看对比学习和掩码预测这两条路线在多数任务上效果接近但掩码预测路线在普通话、方言等需要捕捉细粒度音素信息的任务上更容易微调出好结果。原因不难理解聚类伪标签天然带有一定的音素语义而对比学习学到的向量更偏向区分声学上下文。当然这不是绝对的具体还要看数据。2.2 WavLM、XLS-R与MMS站在前排模型肩膀上的扩展wav2vec 2.0和HuBERT确立了基本框架之后社区做的主要工作是往两个方向扩展一是让模型更鲁棒、更适合特定任务二是覆盖更多语言。WavLM是微软在2021年提出的它在HuBERT的基础上加入了去噪、去混响的辅助预训练目标模型在训练时要学会从被噪声污染的语音中恢复出干净的隐表示。这意味着它保留的语音表征对说话人信息更敏感在说话人识别、语音分离、音色相关任务上表现突出。XLS-R把wav2vec 2.0扩展到了128种语言、数十万小时的语料让自监督语音预训练从“单语言”走向“多语言”。MMS是Meta在2023年发布的更大规模努力覆盖语言数量达到上千种很多之前在开源领域几乎找不到任何资源的语种现在可以直接用MMS做识别和合成。如果项目涉及小语种或方言保护这两类模型几乎是目前唯一可行的起点。这里顺便提一下视觉预训练在语音场景的渗透。不少团队在做语音任务时会直接用ResNet作为mel频谱图的编码器再接Transformer或下游分类头。下载ResNet预训练权重时要注意PyTorch官方权重默认是3通道输入而语音频谱图一般是1通道需要修改第一层卷积的in_channels并复制权重否则会报shape不匹配。这个坑我在工程里踩过好几次属于“下载预训练模型”这件事里最常见的低级问题。2.3 这批模型的实战价值什么时候还该选它们很多朋友看到Whisper、大模型陆续发布后觉得wav2vec 2.0这批模型过时了。我的看法是它们在两类场景里依旧是第一选择。第一低资源语言和方言场景。Whisper这类弱监督模型依赖已存在的转写文本覆盖率有限而自监督模型只需要大量未标注语音一个语种只要能收集几十到几百小时音频就能预训练或继续预训练一个不错的底座。第二非ASR的语音理解任务。说话人验证、语种识别、语音情感识别、声音事件检测这些任务不需要把语音转写成文字而是需要高质量的声学表征WavLM、HuBERT这类模型微调起来比直接套ASR模型更合适。当然它们的缺点也很明显要获得好的效果你必须自己做下游微调不能指望开箱即用。如果你的场景就是普通话或英语的常规转写没有特殊需求直接用第二代的Whisper或第三代的语音大模型会更省事。3. 第二波浪潮把语音当“翻译任务”Whisper带来的工程化质变3.1 Whisper的弱监督路线为什么能“开箱即用”2022年OpenAI发布Whisper直接改变了语音识别的落地方式。Whisper最核心的差异是训练数据它使用了68万小时的有噪声弱监督语音数据数据来源是互联网上的音频及其转录文本经过清洗和过滤后直接作为监督信号。这和第一代自监督模型的“无监督预训练下游微调”完全不同Whisper从训练第一天起就在学“声音到文本”的映射。因为数据覆盖广、任务定义统一Whisper变成了一个多任务模型它可以做多语言转写、中文到英文的翻译、带时间戳的转录、甚至语音翻译。它不需要强制对齐模型天然输出整句文本和标点。部署上官方提供了tiny/base/small/medium/large等不同规格还有large-v3、large-v3-turbo。对很多非研究团队来说Whisper的“开箱即用”属性才是它最大的工程价值——你不再需要为每次任务组装VAD、声学模型、语言模型、解码器一个模型解决大部分问题。但不要神化它。我在本地部署时发现Whisper在安静的普通话标准发音场景下很不错一旦遇到包含大量人名、产品名、中英混说的会议录音错误率会明显上升。另外它在长音频的静音片段偶尔会“脑补”出不存在的内容也就是幻觉这个问题在large模型上尤其明显。后面专门写踩坑。3.2 同一时期被低估的SpeechT5与TTS大模型Whisper把“语音转文字”推向工程化语音合成这一侧其实也在悄悄复用预训练思路。微软的SpeechT5做了一件很有意思的事它把语音和文本统一到一个encoder-decoder框架里预训练时既让模型学会从语音预测文本、从文本预测语音也让它理解语音和文本共享的语义空间。这样一个模型可以支持ASR、TTS、语音转换等好几个任务虽然单个任务的绝对效果不是最强但它证明了“语音文本统一预训练”是可行的。TTS方向VALL-E是2023年很受关注的工作它把语音离散成神经编解码器的token然后用语言模型的方式做零样本合成只需要3秒参考音频就能生成目标说话人的音色属于“以语音为语言”的典型代表。NaturalSpeech 2/3则用潜在扩散模型做语音合成音质和自然度提升非常明显。这里要提醒一句VALL-E虽然开源但授权限制很严格商用前一定要看协议很多TTS大模型都类似别等到上线前才发现版权风险。3.3 本地语音转文字大模型的部署侧重点如果你和我一样要求数据不出内网就需要在本地跑模型。对本地语音转文字大模型这件事我的经验是“规格够用就好别盲目上最大”。官方Whisper按模型大小区分tiny/base在CPU上也能勉强跑small在CPU上已经很慢medium/large建议至少配一块消费级显卡。large-v3用float16推理大致需要6-7GB显存换成INT8量化后可以降到4GB左右medium大约3-4GBsmall基本可以在2GB以内的显存跑起来。速度上faster-whisper基于CTranslate2的实现在精度基本不变的前提下速度比原版PyTorch实现快3到5倍显存占用也更低。纯CPU场景还可以考虑whisper.cpp它针对CPU做了非常激进的优化树莓派上都能跑tiny/base。部署流程上最容易被忽略的是音频采样率和长音频分段。Whisper内部会做重采样但如果你喂一个20分钟的会议录音模型在GPU上会按30秒窗口滑窗处理此时如果原录音里静音特别长“脑补”概率会上升。解决办法是先接一个VAD把静音切掉再逐段送给ASR模型最后按时间戳合并。这一步会非常明显地提升转写质量后面实操部分有完整pipeline。3.4 中文用户更常用的选择Paraformer与SenseVoice中文场景有一个特殊背景Whisper的多语言能力很强但在普通话的细节上国内开源的模型往往更懂中文的习惯表达。阿里的FunASR生态里Paraformer和SenseVoice这两款模型近年成了中文ASR的事实标准之一。Paraformer是非自回归模型一次性输出整句结果而不是一个字一个字地往外蹦推理速度快、中英文效果稳定支持热词定制。对会议、客服、字幕这类转写任务它配合fsmn-vad和ct-punc标点模型几乎可以直接组成一套生产级pipeline。SenseVoice则是2024年推出的轻量模型参数量只有两亿级别但支持多语言识别、情感识别和音频事件检测推理速度比常规大模型快一个数量级以上。在实时会议字幕、语音交互这种对延迟敏感的场景SenseVoice的性价比非常高。当然它们的多语言泛化能力不如Whisper中文之外的语种覆盖也主要集中在英语、日语、韩语、粤语等。所以我的选型经验很直白纯中文/中英混说优先看FunASR体系多语言、需要开箱即用优先Whisper。4. 第三波浪潮语音LLM多模态从理解走向“能说会道”4.1 关键一跃语音如何变成大模型能理解的token第三波浪潮的本质是把语音塞进LLM的框架里。LLM只能处理离散token序列语音却是连续的波形所以这中间必须有一道“翻译”用神经音频编解码器把一段语音压缩成几百个离散token然后再用LLM去学习这些token的上下文规律。这个思路和文本完全一致——你不需要再单独设计损失函数直接对语音token做自回归预测即可。很多朋友问“LLM的预训练损失函数能不能直接用在语音上”答案是能而且主流语音LLM就是这么做的预训练阶段用海量的语音token序列做next token prediction让模型学语音结构和世界常识后训练阶段再用对话、指令数据做SFT和RLHF让它学会“回答问题”和“不胡说八道”。这正是NLP那边再熟悉不过的“预训练后训练”套路只是数据从纯文本变成了语音离散token。SpeechTokenizer、EnCodec、Mimi这些编解码器就是这个环节的核心组件。它们听起来是“压缩工具”实际决定了LLM对语音的理解粒度和生成音质。可以说语音tokenizer的进步直接带动了第三波模型的效果飞跃。4.2 值得关注的开源语音多模态大模型这一部分我列出几个在社区里讨论最多、相对容易获取的开源模型按能力侧重简单分类。Qwen2-Audio是阿里的开源语音多模态模型约7B规模支持语音和文本双模态输入可以做语音对话、音频理解、转写等中文效果好是目前做中文语音助手很稳的底座。SALMONN来自清华和字节的合作工作更强调对音乐、声音事件、语种这些“广义音频”的理解适合做声音理解任务。SpeechGPT把语音token和文本token一起建模实现了真正意义上的语音输入、语音输出。MiniCPM-o和Moshi主打实时全双工对话延迟能做到几百毫秒以内适合做语音交互设备、陪伴助手这类产品。GLM-4-Voice对中文支持好还支持情感控制和音色控制是中文TTS对话融合的不错选择。Step-Audio则是统一了语音理解和生成的更大规模模型参数多、效果好但对硬件要求也更高。这些模型分布在HuggingFace和ModelScope上多数可以加载推理但实际跑起来通常需要24GB以上显存量化后也要16GB左右比Whisper这类ASR模型重得多。所以在选择时一定要先问一个问题你真的需要“对话理解语音生成”一体的能力吗如果只是转写用这类大模型是杀鸡用牛刀成本会炸。4.3 上下文增强的ASR派别Seed-ASR与FireRedASR-LLM第三波浪潮里还诞生了一个很特别的派别它不是做“语音对话”而是用LLM改进ASR本身。字节的Seed-ASR和美团开源的FireRedASR-LLM都是代表。传统ASR模型转写时只看当前音频片段不会利用对话历史、知识库这些信息。举个例子一段会议里大家反复提到“RAG”这个词如果没有上下文ASR可能转写成“热爱国”或“R.A.G.”不同形式但如果模型的输入是“[上一句文本][当前音频]”它就能根据上下文自动纠正。Seed-ASR把音频特征连同一个或多个上下文文本一起送入LLM一起做beam search解码在真实对话语料上显著降低了专有名词和口语表达的出错率。FireRedASR-LLM同样走“ASRLLM”路线但它更强调端侧部署和中英混说。中英混说是中文场景的常见痛点比如“把PPT发到群里”模型要能识别出“PPT”是英文缩写而不是中文拼音这类模型在混说场景比纯ASR模型稳定很多。4.4 预训练和后训练语音LLM也在经历NLP的完整链路最后回到“预训练”这个词本身。第一代模型预训练的是声学表征第二代预训练的是“语音-文本映射”第三代预训练的则是“语音-语言联合知识”。这三者的共同点是先利用大规模无标注或弱标注数据获得通用能力再用少量高质量数据对齐具体任务。语音LLM的后训练阶段非常关键也非常烧钱。预训练完成的模型可能只会“复述”语音内容不会遵循指令SFT之后能按指令回答再经过RLHF或DPO才能减少幻觉、提高回答质量、符合安全规范。损失函数在预训练和后训练阶段都是交叉熵区别不在函数本身而在于训练数据的形态和mask方式。理解这条链路对排错很有帮助——如果一个语音大模型在真实业务里总答非所问先别急着换模型大概率是后训练数据覆盖不够而不是模型理解能力差。5. 从Whisper到SenseVoice一次本地中文转写工具的选型实录5.1 项目约束与第一轮选型Whisper large-v3的优缺点今年上半年我们做一个内部工具需求很明确中文会议录音离线转写、数据不出内网、识别结果要带时间戳、尽量跑在单张消费级显卡上。第一版我直接上了Whisper large-v3原因是它多语言能力强带标点和时间戳社区资料也最全。实测下来large-v3在标准普通话、发音清晰的录音上准确率确实高但问题也很明显推理速度慢一小时的录音在消费级GPU上跑完需要十几分钟显存占用高而且遇到录音里大段静音和讨论间隙会把无意义的人声拟声词转写成句子的幻觉人名和团队内部术语的错误率很高又没办法加热词。这些问题的根源在于Whisper是“单模型硬转”不做VAD分段、不支持业务词典注入你得在外部做很多工程补救。5.2 第二轮调优faster-whisper与模型剪枝的效果为了压低延迟我第二版换成了faster-whisper并把模型从large-v3降到small。faster-whisper用CTranslate2重写了模型推理INT8量化后速度提升非常明显small模型在消费级GPU上基本能做到接近实时。我还加了VAD过滤静音幻觉数量明显下降。但准确率也跟着下来了small模型会自动把一些生僻词、英文缩写改写成常见词比如把项目代号“V2X”转成“V two X”甚至某个近似音。后来我也测了medium准确率上去了速度又回到不可接受的水平。这条路走下来我发现如果继续停留在Whisper体系里需要在准确率和延迟之间反复拉扯而中文业务场景还有更对症的选项。5.3 第三轮换血FunASR/ParaformerSenseVoiceVAD第三版我换成了FunASR体系用fsmn-vad做语音活动检测用Paraformer-large做主干识别接ct-punc做标点恢复同时集成SenseVoice模型做一个快速预筛通道。之所以这么组合是因为Paraformer本身就在大规模中文数据上预训练对中文口语、专有名词的处理更自然它支持热词这是Whisper给不了的硬需求非自回归的架构也让它在GPU上的速度比自回归模型快很多。SenseVoice我用在低延迟需求更苛刻的场合比如实时字幕提醒。两亿参数级别跑起来几乎没有压力还能顺带输出情感标签和事件标签比如兴奋、悲伤、掌声、笑声这些信息对会议纪要和内容运营很有价值。5.4 最终流水线与示例代码最终落地的流水线是输入音频 - VAD切分静音 - 逐段ASR - 标点恢复 - 热词纠错 - 按时间戳合并输出。示例代码如下。pip install faster-whisper # 如果走Whisper路线 pip install funasr modelscope torchaudio # 如果走FunASR路线from funasr import AutoModel model AutoModel( modelparaformer-zh, model_revisionv2.0.4, vad_modelfsmn-vad, vad_model_revision0.1.3, punc_modelct-punc, punc_model_revision2.0.3, devicecuda:0, ) res model.generate( inputmeeting.wav, batch_size_s300, hotword大模型 本地部署 团队内部代号, ) print(res)from faster_whisper import WhisperModel model WhisperModel(small, devicecuda, compute_typeint8) segments, info model.transcribe( meeting.wav, languagezh, vad_filterTrue, vad_parameters{min_silence_duration_ms: 500}, ) for seg in segments: print(f[{seg.start:.2f} - {seg.end:.2f}] {seg.text})第一段用的是FunASR的AutoModel封装一次性拉起VAD、ASR、标点三个模型第二段是faster-whisper的降级方案适合需要多语言支持的场景。个人建议不要同时在项目里维护两套方案选一个主路径另一套作为fallback。5.5 踩过的坑与对应的解决办法最后把这轮改造里踩过的坑集中列一下都是真金白银换回来的。第一个坑是长音频直接喂给模型。Whisper虽然内部有30秒滑窗但长音频处理不及时还会因为静音幻觉Paraformer如果用batch_size_s太大同样可能内存爆炸。对策是先用VAD切段再把段交给ASR。第二个坑是热词格式。Paraformer的热词需要用竖线分隔不能用逗号分词不当甚至会让识别效果变差这里最好先看官方文档再动手。第三个坑是采样率。很多录音是48kHz的会议系统采集而ASR模型通常工作在16kHz喂错采样率轻则音质劣化重则结果完全不可用建议统一用ffmpeg重采样。第四个坑是标点。Whisper自带标点但中文断句偶尔不符合阅读习惯FunASR的ct-punc模型在中文标点上明显更自然配合Paraformer用是完整链路。第五个坑是说话人分离。ASR只解决“说了什么”不解决“谁说的”如果会议摘要需要分发言人还得额外接说话人聚类模型。6. 选型决策树和几句实话6.1 一张“任务-模型”决策表聊了这么多最后给一张可以直接抄的决策表。它不完全精确但能帮你在面对新项目时快速定位候选模型。你的核心任务首选方案备选方案说明中文/中英混说ASRParaformer / SenseVoiceWhisper medium/large中文效果好、支持热词延迟低多语言ASR/语音翻译Whisper large-v3 / large-v3-turboXLS-R微调开箱即用覆盖语言广低资源语种/方言识别wav2vec 2.0 / HuBERT / XLS-RMMS用无标注语音预训练或微调语音理解多模态对话Qwen2-AudioSALMONN、MiniCPM-o中文对话场景优先Qwen2-Audio实时全双工语音交互Moshi / MiniCPM-oGLM-4-Voice追求低延迟对话体验零样本/可控语音合成NaturalSpeech系列VALL-E、ChatTTS等注意授权协议和音色控制需求说话人/情感/声音事件WavLM / HuBERT微调SenseVoice声学表征任务优先第一代模型6.2 关于预训练语音大模型的几点个人心得这几年跟预训练语音大模型打交道最大的感受是模型迭代快但需求判断更重要。新模型出来不要急着替换线上方案先用你自己的测试集跑一遍重点关注三个指标目标场景准确率、端到端延迟、硬件成本。很多新模型benchmark很高到了你的业务里不一定打得过经过热词和领域数据微调的旧方案。第二点数据闭环是拉开差距的关键。如果业务里积累了标注音频不用追求用全部数据做全量微调哪怕每周只挑几百条典型错误数据做增量训练效果也会持续变好。预训练模型解决的是通用能力业务效果最终取决于你能喂给它的领域数据。第三点授权和隐私要提前确认。很多语音模型的License并不宽松VALL-E系列、部分TTS模型都有商用限制本地化部署能解决隐私顾虑但要确认你的使用场景是否在协议允许范围内。别等产品上线前再处理那时候返工成本很高。第四点也是我最想说的别被“大模型”三个字绑架。语音任务的本质是定义清楚输入输出和评价指标。开会转写需要的是稳定、快、专有名词准这不一定需要多模态大模型一个“小”但精心配置的Paraformer方案很可能比一个“大而全”的语音LLM更合适、更省钱。工具永远是服务场景的先把场景说清楚选型自然就清楚了。