想象你是领导的贴身速记员。领导讲话像流水一样不停顿:“今天……我们要……重点关注……”,你听到的是一串连续的声音,但落到纸上必须是一段干净的文字。这中间最难的不是“听见”,而是“对齐”——哪段声音对应哪个字?一个句子没有空格,一个音可能模糊成一片。传统做法像一条冗长的流水线:有人负责拆音素、有人负责查词典、有人负责捋语法,链条长、任一环节出错都会崩。端到端ASR则干脆让一个“AI速记员”全程负责:声音进去,文字出来,中间不再拆零件。 今天的文章,我们围观三位风格迥异的速记员如何解决同一个难题:第一位叫CTC,他的风格是“先写后清”——听到什么先囫囵记下,最后统一整理;第二位叫Attention,他喜欢“听完整场再总结”——目光全局扫视,落笔胸有成竹;第三位叫Transducer,他是“边听边写边猜”——手在记,耳在听,脑子还在预测领导下一句。看懂这三大流派的思路,你就掌握了现代语音识别(ASR)的核心脉络,也拿到了 Whisper 等主流工具的钥匙。
端到端ASR知识会让你真正理解语音应用从原理到落地的全链路:看懂CTC/Transducer如何对齐、评估指标如何解读、Whisper如何接入生产,是成为多模态AI工程师的必备拼图。
目录
可视化演示
动态演示端到端ASR的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
端到端ASR:端到端A 端到端ASR范式概述 CTC损失函数与对齐机制 核心机制可视化 端到端ASR整体架构与关键组件
语音识别概述:把声音变成文字的那张纸
会议室内,领导侃侃而谈,新手速记员小张握着笔,满脸紧张。他面前只有一张白纸,耳朵里是连成一串的声音。他面对的终极任务其实只有一句:把“连续的声音”变成“离散的文字”。可这恰恰是最难的部分——声音没有空格,“今天下午”四个字连读成一个音团,就像一根没有切痕的香肠,你不知道该从哪里下刀。
在AI领域,小张的任务叫ASR(Automatic Speech Recognition,自动语音识别)。传统做法像一条分工明确的流水线:先有专门的声学模型把音频切成音素,再有发音词典把音素拼成词,最后语言模型把词顺成句子。一个环节出错,后面全盘皆错。而端到端方法直接让一个神经网络同时干完所有事:输入是音频帧序列 $x_1, x_2, \ldots, x_T$,输出是文字序列 $y_1, y_2, \ldots, y_U$,所有参数一起训练、一起优化,省掉了中间所有手工设计的零件。
端到端思路下,最大的难题依然是“对齐”:音频有几百上千帧,文字只有几十个字,谁跟谁配对?今天的三个主角——CTC、Attention、Transducer,本质上是三种不同的“对齐策略”。它们的目标都写在同一张数学纸上:
小张的纸就是这张公式的具象化:他每落一笔,既抬头听领导的嘴型,又低头看自己刚才写了什么。三种方法的分水岭,就在“怎么听、怎么看”的细节里。
- 条件概率在已知整段音频 $X$ 的前提下,输出文字序列 $Y$ 的概率,这是ASR一切推断的基础。
- 链式分解把整句概率拆成每个字的概率连乘,方便逐字生成。
- 逐字依赖写第 $u$ 个字时,条件里同时包含音频 $X$ 和先前写出的 $u-1$ 个字。
CTC核心原理:先写后清的快手速记
领导语速快到飞起,小张决定用最原始的办法:不管三七二十一,每听到一小段就胡乱写一个符号上去,哪怕不确定也先占个坑。等领导讲完一段,再回头整理草稿:连续重复的字只留一个,没用的占位符直接划掉。这就是CTC(Connectionist Temporal Classification,连接时序分类)的哲学——“先写后清”。
要落实这个策略,模型必须完成两步改造。第一步是“每帧必写”:CTC让模型在每一个音频帧上都输出一个token,这个token既可以是真实字符,也可以是专门设计的空白符 blank(记作 $\epsilon$ 或 _)。空白符不是“静音”的意思,而是“此刻我不写任何字”的占位符,它帮助模型凑节奏。第二步是“整理规则”:合并相邻重复的相同字符,再删除全部空白符。比如草稿 _a_a_b_ 经整理后是 aab,而 _aa_b_ 经整理后是 ab——注意中间隔着空白的两个相同字符不会被合并,因为它们是两次独立发音。
问题来了:同一句话可以用无数种草稿(路径)整理出来,怎么算“这句话”的总概率?CTC的答案是:把所有能整理成目标文字的路径的概率全部加起来。但路径数量爆炸,直接枚举不现实。于是CTC用前向算法做动态规划,像叠积木一样高效累加,训练时对总概率取负对数作为损失。解码时则简单得多:贪心解码每帧挑概率最大的token再合并,束搜索则保留多条候选路径择优。
小张整理草稿时发现,自己刚才“乱写”的每一笔都不是白费的——那些重复的字、多余的符号,恰恰是让声音和文字能对齐的“临时工”。CTC就是这样一个肯收烂摊子的速记员:草稿再乱,最后交出干净稿子就算数。
- 路径定义$\pi$ 是一条长度为 $T$(帧数)的token序列,每个位置是字符或空白符。
- 整理映射$\mathcal{B}$ 把路径 $\pi$ 映射为最终文字序列 $Y$——合并重复、去掉空白。
- 反向收集$\mathcal{B}^{-1}(Y)$ 表示所有映射后恰好等于 $Y$ 的路径集合,求和号遍历它们。
- 概率连乘假设帧间独立,一条路径的概率就是各帧token概率相乘。
Attention机制:听完整场再总结的沉稳秘书
会场另一侧坐着秘书小李,她不急着动笔,而是先录音、先倾听,把领导整段讲话“装进脑子”——用技术话说,她有一个编码器,把整段音频编码成一组“记忆向量”。当她开始写纪要时,目光会在这些记忆上扫来扫去:写这句话时,重点看记忆的哪一块?这就是注意力(Attention)机制,基于编码器-解码器(Encoder-Decoder)架构。
形式上,编码器把音频帧 $\{x_t\}$ 逐帧编码为隐状态序列 $\{h_1, h_2, \ldots, h_T\}$,相当于“会议全息笔记”。解码器生成第 $u$ 个字时,先用上一时刻的隐状态与每个记忆位置计算匹配分数 $e_{uj}$,再用softmax把分数压成权重 $\alpha_{uj}$,最后对隐状态做加权平均,得到当前步的“上下文向量” $c_u$,喂给解码器输出文字。整个过程,注意力权重就是秘书的目光分配表。
小李的记法确实从容,但代价是她必须等领导讲完一整段才能动笔——因为编码器需要全句信息才能给出高质量记忆。标准Attention架构因此天然不适合实时转写,这是它最大的软肋,也是后一位高手登场的理由。
- 匹配分数解码器当前状态与第 $j$ 帧记忆的相关度评分,通常用点积或一个小网络计算。
- 归一化权重对所有帧的分数取softmax,让权重和为1、分布在 $[0,1]$。
- 上下文向量按权重加权求和所有记忆,得到当前时刻“该重点看的内容”。
Transducer架构:边听边写边猜的高级速记
最资深的速记员老王登场,他的笔从不停顿。他一边听一边写,写的同时脑子还飞速预演:“我刚才写了'部',领导接下来八成要讲'门'或'署'……”当领导真的说出“门”字时,他的笔正好接上,毫无延迟。这就是RNN-Transducer(RNN-T)的看家本领:预测网络(Prediction Network)负责“根据已经输出的字符猜下一步”,编码器(Encoder)负责“听清当前音频帧”,二者在联合网络(Joint Network)里融合,打分决定当前时刻是输出一个字符,还是输出blank表示“继续听”。
关键区别在于:CTC的每帧输出是独立的,模型只会“聽”不会“想”;而RNN-T的每个输出概率同时依赖两个信号——当前音频块 $x_t$ 和此前输出的字符序列 $y_{1:u-1}$。等于老王每一笔都经历“耳听 + 心想”双重校验。正因为这种设计,RNN-T可以在音频流到达时逐块输出文字,实现真正的流式识别,不需要等全句结束。
老王的“边听边写边猜”让他在实时会议中游刃有余,但代价是训练和推理比CTC复杂:解码要用流式束搜索,每一步都要对 blank 与非 blank 分支做权衡。工业界的实时语音助手,大多站在老王的肩膀上。
- 音频编码特征$h_t^{\mathrm{enc}}$ 是编码器对第 $t$ 帧音频的表示,“耳朵听到的内容”。
- 预测特征$h_{u-1}^{\mathrm{pred}}$ 是预测网络对已有 $u-1$ 个字符的压缩表示,“脑子想到的内容”。
- 特征融合两者相加,再经过 $\tanh$ 非线性变换和线性映射 $W$,合并成联合特征。
- 词表打分softmax 输出每个字符(含blank)的概率,训练时最大化所有合法对齐路径的总概率。
三大方法对比:速记员的同台比武
三张桌子摆开,三位速记员同台比武,裁判出了三道题:第一题比“对齐方式”,第二题比“流式能力”,第三题比“综合实力”。
第一题,CTC是“笔笔落账”式对齐:每个音频帧强制对应一个字符或blank,路径单调前进,绝不允许回头;Attention是“全局调焦”式对齐:模型看完整段,自由地把每个输出字与任意音频片段配对,软性对齐灵活但需要全句编码;Transducer是“单行加预测”式对齐:对齐路径依然单调,但每个位置的输出还额外参考了此前写过的字,等于在CTC的基础上加了“记忆惯性”。
第二题,CTC和Transducer都能逐帧流式输出,适合实时场景;标准Attention必须拿到全句编码,只能离线处理大批量转写。第三题,CTC结构最简单、训练稳定,但单靠自身建模能力偏弱,常需外挂语言模型救场;Attention精度上限高,训练收敛快,但不能流式且解码速度慢;Transducer能流式、能利用上文信息,是精度与实时的平衡点,但工程实现复杂度最高。三者可统一写成不同的后验分解方式:
裁判最终没有判出唯一赢家:如果比赛是“会后三小时交纪要”,小李(Attention)胜;如果比赛是“领导说话的同时投出字幕”,老王(Transducer)和金小张(CTC)晋级。选谁上阵,从来取决于战场在哪。
- CTC分支对整理后等于目标的所有帧级路径求和并取对数。
- Attention分支不枚举路径,直接按序逐字计算条件概率。
- Transducer分支对所有合法的音频-文字对齐组合求和,其中 $a$ 表示对齐路径。
评估体系:如何给速记员打分
比武结束,到了审稿环节。裁判拿出三份速记稿和领导原话逐字比对:哪些词写错了(替换),哪些词漏掉了(删除),哪些词凭空多写(插入)。这些错漏就是速记员的“罪状”。语音识别领域把这三类错误的计数整理成一个通行指标——WER(Word Error Rate,词错率):先把模型输出与参考文本做最优对齐,统计替换数 $S$、删除数 $D$、插入数 $I$,再除以参考总词数 $N$。
中文场景习惯把“词”换成“字”,于是有了CER(Character Error Rate,字错率),计算逻辑完全一致。比WER更进一步的还有RTF(Real-Time Factor,实时因子),定义是“处理音频耗时 ÷ 音频时长”:RTF小于1,说明转写速度比说话速度快,这才是真正的“实时”。审稿还要警惕陷阱:WER针对通用测试集低,不代表在方言、噪声、专业术语场景依然优秀——就像考试题太简单,得满分也不能证明速记员能听懂外星人讲话。
- 替换数参考词被模型说成了另一个词,比如“部署”写成“分布”。
- 删除数参考里有的词模型没写出来。
- 插入数参考里没有的词模型凭空多写。
- 总词数参考文本包含的词总数,作为归一化分母。
工程实践:把AI速记员请进公司
评判完三位速记员,公司决定把AI速记系统正式请进办公室。目前最常用的开箱方案,是OpenAI开源的Whisper。Whisper是典型的“Attention系”选手:Encoder把音频编码成全局记忆,Decoder逐字生成,天然适合离线批量转写——会议纪要、视频字幕、音频档案归档,一条API全部搞定。开发者用一行 model = whisper.load_model("large-v3") 就能把这位“沉稳秘书”请进来,还能顺手拿到时间戳、翻译结果。
不过Whisper不是万能:显存有限怎么办?推理太慢怎么办?于是工具链不断进化。faster-whisper 用CTranslate2重写算子,推理速度提升数倍而精度几乎无损;whisper.cpp 把模型压缩到手机和嵌入式设备;中文场景若追求字准率,用LoRA在数百小时中文数据上微调,几小时就能让模型熟悉行业黑话。而如果需求改成“直播实时字幕”,则要换用RNN-T方案:NeMo工具链中的Conformer-Transducer是工业界主力,配合ONNX Runtime或TensorRT做流式推理,延迟可以压到几百毫秒。工程选型可以总结成一个朴素公式:
把AI速记员请进公司后,真正的功力比拼才刚刚开始:离线求质量用Whisper,实时求速度用RNN-T,小模型求轻便用whisper.cpp,大集群求吞吐用faster-whisper——懂取舍,才是工程落地的精髓。
- 编码计算量音频编码器对整段输入的计算开销,Attention系这部分尤其重。
- 解码计算量逐字生成阶段的累计计算开销,流式RNN-T的解码是持续增量计算。
- 硬件吞吐GPU实际每秒可执行的浮点运算次数,决定“算力天花板”。
- IO开销音频读取、预处理、结果后处理的固定耗时,往往被低估的隐形延迟。
AI 应用场景
场景一:视频会议的智能纪要生成
阶段:离线批处理转写 + 后处理总结
解决的问题:传统会议纪要依赖专人记录,漏记、慢记、失真严重。AI使用Whisper将整场会议音频离线转写为带时间戳的文本,再配合大模型总结要点、提取行动项,让纪要生成从“小时级”压缩到“分钟级”。
具体案例:某互联网公司接入faster-whisper服务,每天自动归档上百场会议录音。系统自动输出逐字稿、发言人粗分、待办清单,直接同步到项目管理工具。实测转写准确率在会议室噪声下达到95%以上,人工修正量减少八成。
场景二:直播平台的实时字幕
阶段:流式在线推理
解决的问题:直播字幕延迟要求低于3秒,Attention系模型无法胜任。采用Conformer-Transducer架构,以流式方式逐块处理音频,边接收声音边输出字幕,既保证低延迟又具备较强的上下文建模能力。
具体案例:某直播平台为英语直播间上线流式中英字幕,基于NeMo训练的中英双语RNN-T模型部署在GPU集群,端到端延迟约800ms。主播语速极快时字幕也紧咬不放,观众满意度显著提升。
场景三:呼叫中心客服对话质检
阶段:批量转写 + 规则匹配分析
解决的问题:传统质检随机抽取千分之一录音,漏检率高。用CTC类轻量模型(如WeNet流式模型)快速批量转写全量通话,再通过关键词规则或模型判断客服是否合规、客户情绪是否波动。
具体案例:某金融客服中心每日产生20万通电话,系统在闲时使用GPU队列批量转写,每小时处理约15万分钟音频,WER控制在8%以内。随后自动标记“承诺收益”“威胁客户”等违规话术,质检覆盖率从0.1%提升到100%。
Python 演示
# -*- coding: utf-8 -*-"""CTC前向算法与贪心解码:端到端ASR核心原理的最小实现"""import numpy as np VOCAB = ['<blank>', 'a', 'b', 'c']BLANK = 0 def make_probs(T, seed=7): """构造T帧的词表概率,模拟模型softmax输出""" rng = np.random.default_rng(seed) raw = rng.rand(T, len(VOCAB)) return raw / raw.sum(axis=1, keepdims=True) def ctc_forward(probs, labels): """CTC前向算法:用动态规划计算标签序列的总概率""" T, V = probs.shape L = len(labels) S = 2 * L + 1 ext = [] for label in labels: ext += [BLANK, label] ext.append(BLANK) alpha = np.zeros((T, S)) alpha[0, 0] = probs[0, BLANK] if L > 0: alpha[0, 1] = probs[0, labels[0]] for t in range(1, T): for s in range(S): a = alpha[t - 1, s] if s >= 1: a += alpha[t - 1, s - 1] if s >= 2 and not (ext[s] != BLANK and ext[s] == ext[s - 2]): a += alpha[t - 1, s - 2] alpha[t, s] = a * probs[t, ext[s]] return alpha def total_prob(alpha): """两条最优路径求和:以blank结尾或最后一字符结尾""" S = alpha.shape[1] if S == 1: return alpha[-1, 0] return alpha[-1, S - 1] + alpha[-1, S - 2] def greedy_decode(probs): """贪心解码:逐帧取最大概率token,合并相邻重复,去掉blank""" out = [] prev = -1 for t in range(probs.shape[0]): c = int(np.argmax(probs[t])) if c == BLANK: continue if c != prev: out.append(c) prev = c return [VOCAB[c] for c in out] if __name__ == '__main__': labels = [1, 2, 3] # 目标序列: a b c probs = make_probs(T=8) # 模拟8帧音频输出 alpha = ctc_forward(probs, labels) print('标签序列:', [VOCAB[i] for i in labels], '目标: a b c') print('CTC总概率: %.6f' % total_prob(alpha)) print('贪心解码 :', greedy_decode(probs))
raw / raw.sum(axis=1, keepdims=True)把随机数归一化成每帧的合法概率分布,模拟模型softmax输出。alpha[0, 1] = probs[0, labels[0]]初始化第一帧:既可能输出blank,也可能直接输出第一个标签。a = alpha[t - 1, s]动态规划的核心:继承上一帧同一位置的概率,代表“当前帧继续读同样的token”。if s >= 1: a += alpha[t - 1, s - 1]加上从“上一个扩展位置”转移过来的概率,代表“刚切换到一个新token”。if s >= 2 and not (ext[s] != BLANK and ext[s] == ext[s - 2])禁止跳过中间的blank直接跳转到相同标签,避免重复字符被错误合并。alpha[t, s] = a * probs[t, ext[s]]新概率 = 前一步累计概率 × 当前帧输出该token的概率。if c == BLANK: continue贪心解码第一步:跳过所有blank。if c != prev: out.append(c)贪心解码第二步:合并相邻重复字符。print('CTC总概率: %.6f' % total_prob(alpha))输出目标序列的综合得分,验证训练目标如何计算。
常见误区
误区我一直以为CTC里的blank符号代表音频里的静音片段,模型输出blank就是在检测到没有说话的地方。
正解blank是“不输出任何字符”的占位符,与音频是否静音没有直接关系。它更像速记员在草稿纸上“停笔待机”的记号——声音在继续,模型也在逐帧判断,只是此刻不落字。相反,静音片段在声学特征上与其他帧并无本质区别,模型完全可能对静音输出某个字符。
为何常见:blank的中文翻译常写作“空白符”,很容易让人联想到“音频空白/静音”,且名字里带了“空”字,初学者几乎必然踩坑。
误区既然叫“端到端”,模型应该自己就神奇地把音频变成文字,根本不需要考虑对齐这件事。
正解端到端指的是“无需人工设计中间模块”,但对齐问题从来没有消失。CTC用路径合并隐式解决对齐,Attention用注意力权重做软对齐,Transducer则在对齐路径上额外建模预测——三种方法都在用不同的数学工具处理对齐,只是不再需要人手工标注“哪个音对应哪个字”。
为何常见:“端到端”这个名字太有迷惑性,让人以为整个流程是黑盒魔法,而忽略了内部依然有精心设计的对齐机制。
误区我认为Attention能全局建模、信息量大,肯定全面碾压只做单调对齐的CTC,选型时无脑选Attention就好。
正解Attention精度上限通常更高,但它的优势需要充足数据和全句解码来兑现。CTC结构简单、稳定性强,在中小规模数据或需要流式解码的场景下,配上语言模型后完全能和Attention掰手腕。实际选型要看数据量、延迟要求和部署成本,没有绝对的“最优”。
为何常见:网上论文多展示Attention刷榜数据,让大家误以为大规模数据集上的优势会小规模场景也成立。
误区既然预测网络根据已输出的字符生成表征,那它本质上就是一个语言模型,可以直接当语言模型来用。
正解预测网络是“根据字符序列生成高维表征”的神经网络,它与音频编码特征融合后才产生最终输出,并不能独立给出句子概率。它是和整个系统联合训练的“条件发生器”,而非独立的语言模型。直接把预测网络当语言模型使用,会发现它根本不会生成下一字符的概率分布。
为何常见:预测网络“根据上文猜下文”的表象太像语言模型,且某些教程为了形象会把它比喻成“内置语言模型”,导致概念混淆。
误区两个模型在同一测试集上,一个WER 5%一个WER 8%,那5%的肯定更强,直接买它。
正解WER只是某个测试集上的快照。测试集是否覆盖目标场景的噪声、口音、专业词汇,训练数据是否泄露到测试集,都极大影响数字。模型在通用测试集上WER低,遇到直播间连麦炸麦声可能立刻崩。正确做法是自建一份与生产环境分布一致的评测集,再比较WER与RTF。
为何常见:行业论文习惯用WER单一指标排名,读者容易把“指标数字”与“真实产品效果”划等号。
面试题
Q1. CTC中的blank符号表示什么?
- A.音频中的静音片段← 正确答案
- B.不输出字符的占位符
- C.句子结束标记
- D.无法识别的未知音
答案:A。CTC的blank是“此刻不写任何字符”的占位符,与音频是否静音无关。它帮助模型在不连续发音的帧之间“停笔待机”;静音与否应由声学特征判断,不能直接等同于blank。
Q2. 端到端ASR与传统语音识别最大的区别是什么?
- A.不再需要麦克风采集声音
- B.直接从音频帧序列映射到文字序列← 正确答案
- C.必须有中文分词模块
- D.只能识别单个人的声音
答案:B。端到端ASR用一个神经网络将音频帧映射为文字,省去了声学模型、发音词典、语言模型等人工串联模块。它仍需麦克风输入、也无须依赖分词模块,更不限于单人语音。
Q3. 序列 _a_a_(下划线表示blank)经CTC整理后输出什么?
- A.单个a
- B.两个a← 正确答案
- C.无法判断
- D.空序列
答案:B。CTC整理规则是先合并相邻重复、再删除blank。_a_a_中的两个a被blank隔开,不算相邻重复,因此删除blank后保留两个a。若序列是_aa_,合并相邻重复后才输出单个a。
Q4. Transducer中预测网络的主要作用是什么?
- A.预测下一帧音频特征
- B.根据已输出字符生成预测表征← 正确答案
- C.计算注意力权重
- D.去除音频中的噪声
答案:B。预测网络把“已经输出的字符序列”压缩成高维表征,与音频编码特征在联合网络中融合,使输出概率同时依赖音频和上下文。它预测的是“下一字符的线索”,不是音频特征。
Q5. 下列哪些模型天然适合流式语音识别?
- A.标准Attention的Seq2Seq模型
- B.CTC模型← 正确答案
- C.RNN-Transducer模型← 正确答案
- D.BERT文本模型
答案:BC。CTC逐帧输出可随音频流整理;RNN-T边收音频边输出字符,也支持流式。标准Attention需要全句编码后才能解码,无法实时输出;BERT是文本模型,不处理音频。
Q6. 一段参考文本共100个词,模型输出了3个替换词、2个漏词、1个多词,WER是多少?
- A.3%
- B.6%← 正确答案
- C.10%
- D.1%
答案:B。WER = (替换数S + 删除数D + 插入数I) / 参考总词数N = (3+2+1)/100 = 6%。注意插入错误也计入分子,不要只算替换词。
Q7. 关于CTC前向算法,下列说法正确的是?
- A.它枚举所有可能的对齐路径再求和
- B.它用动态规划高效累加合法路径概率← 正确答案
- C.累加过程保持可微,可用于梯度回传← 正确答案
- D.它直接输出最终文字序列
答案:BC。CTC前向算法通过扩展标签序列(blank-字符交替)动态规划求和,避免路径爆炸,且全程可微、可参与训练。它不负责解码输出——解码靠贪心或束搜索,且枚举全部路径正是它所避免的。
Q8. RNN-Transducer与CTC在输出建模上的关键区别是什么?
- A.RNN-T比CTC更简单更易训练
- B.RNN-T的输出概率同时依赖音频和已输出字符← 正确答案
- C.CTC无法处理中文语音
- D.两者在数学上完全相同
答案:B。RNN-T引入预测网络,每个输出概率是“音频编码特征 + 已输出字符预测特征”联合作用的结果;CTC每帧输出则只依赖音频帧本身。RNN-T结构更复杂,中文处理能力与模型架构无直接关系。
Q9. OpenAI的Whisper模型主要采用哪种架构?
- A.纯CTC结构
- B.Encoder-Decoder加Attention机制← 正确答案
- C.传统HMM状态机
- D.无监督聚类算法
答案:B。Whisper是典型的Attention系端到端模型:编码器处理音频、解码器逐字生成,附带时间戳与翻译能力。它不是CTC结构,也不是传统HMM,更不是聚类算法。
Q10. 关于ASR评估指标,以下说法正确的有?
- A.CER的计算逻辑与WER一致但对象是字← 正确答案
- B.RTF小于1说明处理速度比音频播放快← 正确答案
- C.WER越低模型在所有领域一定越强
- D.插入错误会进入WER的分子← 正确答案
答案:ABD。中文场景用CER逐字计算,逻辑同WER;RTF=处理耗时/音频时长,小于1即实时;插入词确实计入WER分子。但WER依赖测试集分布,领域变化后可能大幅恶化,不能简单断言“越低越强”。