深夜,在线教育公司实习生小杨盯着后台的 100 份口语作业发呆。老师只能手动听、手动打分,一份录音听三遍,评语还是“有点中式”“流畅度一般”。老板说:我们要做 AI 口语私教,让机器像一位不知疲倦的考官,把每个音都听清、给分、纠音。 这套系统的核心,其实是三位“考官”接力合作:采音员负责把声音变成数字信号;一位“金耳朵”负责把声波提炼成有含义的声音特征;一位“宽松速记员”负责把这些特征整理成音素或文字;最后还有一位“判卷员”拿着参考答案打分。采音员对应语音数字化,“金耳朵”就是 Wav2Vec2,“宽松速记员”就是 CTC,判卷员则是发音评分逻辑。你不需要先懂深度学习,也能看懂这个故事;而看完之后,你会明白 AI 到底是怎么“听”和“评”的。

岗位关联

掌握这套系统,你会知道 AI 评测如何从“听个大概”变成“逐音素打分”,也能在智能教育、在线口语陪练乃至司法语音质检项目中真正落地。

目录
  1. 可视化演示
  2. 系统概述:三位考官组成的流水线
  3. 语音数字化:采音员按下快门
  4. Wav2Vec2特征:金耳朵的“声音指纹”
  5. CTC对齐机制:不纠结逐帧对齐的宽松速记员
  6. 发音评分:判卷员的三张检查单
  7. 训练与评估:教练怎么把金耳朵和速记员教出来
  8. AI教育应用:从打分到陪练的闭环
  9. 法律科技延伸:司法场景里的慎重应用
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

经由 Wav2Vec2 提取语音特征并配合 CTC 损失对发音进行打分,评估准确度与流利度。切换模式可查看语音波形与发音评分。

本节配有交互动效(进入视口后自动加载,约 3KB)。

语音波形分析 Wav2Vec2 从波形提取声学特征 CTC 对齐音素序列评估发音 L = -log P(π|X) 语速越快,流利度越高

系统概述:三位考官组成的流水线

小杨发现,人工口语测评像“一个老师边听边写评语”:速度慢,标准飘,同一个发音在不同老师嘴里可能得到三种分数。于是,小杨把任务拆给了三位 AI 考官:采音员负责把声音变成数字“照片”,金耳朵负责听懂音色细节,宽松速记员负责把语音整理成可读的文本,最后的判卷员再和参考答案比对。

这段流水线就是整个系统的骨架:原始语音先被采样成数组,再由 Wav2Vec2 编码成带有上下文的特征序列,接着用 CTC 做“免精确对齐”的序列预测,最后根据预测结果计算发音得分。对 AI 从业者来说,真正需要掌握的正是这条链路中每个环节为什么存在。

这三位考官合在一起,就把“凭感觉打分”变成了“按流程打分”。小杨终于不用熬夜听录音了,只要把录音丢给流水线,几分钟就能拿到一份结构化报告。

Audio→采样X→Wav2Vec2H→CTCY^→评分Score\displaystyle \text{Audio}\xrightarrow{\text{采样}} X\xrightarrow{\text{Wav2Vec2}} H\xrightarrow{\text{CTC}}\hat{Y}\xrightarrow{\text{评分}} \text{Score}
这条公式把“一段声音”压缩成了四步动作,是理解全篇的地图。
  1. 采样把连续声波变成离散的数字序列,标记为 X,这是机器能处理的“声音照片”。
    X=[x0,x1,x2,… ]X = [x_0, x_1, x_2, \dots]
  2. 特征提取Wav2Vec2 把 X 编码成 H,H 是每一帧语音的声音指纹,包含上下文信息。
    H=[h1,h2,…,hT]H = [h_1, h_2, \dots, h_T]
  3. CTC 对齐模型在 H 上预测音素序列,再通过 CTC 解码得到预测结果 Ŷ。
    Y^=B(π∗)\hat{Y} = \mathcal{B}(\pi^*)
  4. 评分把 Ŷ 与标准音素串比对,输出准确度、流利度和综合分。
    Score=f(Y^,Yref)\text{Score} = f(\hat{Y}, Y_{\text{ref}})

语音数字化:采音员按下快门

采音员的工作,是把空气振动变成计算机认识的数字。声音本质是气压随时间变化的波,计算机不能记录连续曲线,只能“每秒钟按一次快门”。在口语评估系统里,通常每秒拍 16000 张照片,也就是 16kHz 采样率。这就像拍证件照不需要 8K 电影机,记录人说话,16kHz 已经足够清晰。

采完后,语音还不能直接送进神经网络,因为整段录音太长、太细。系统会把语音切成 25 毫秒左右的小帧,每隔 10 毫秒取一帧,相邻帧有重叠,避免漏掉声音边界。每一帧再乘一个窗函数,降低边缘突变带来的噪声,最后用短时傅里叶变换得到频谱图。频谱图把“声音随时间的变化”画成二维图像,金耳朵看的就是这张图。

采音员这一步做得好不好,直接影响后面金耳朵的判断。如果采样率太低、窗太长,声音细节就会像糊掉的照片,再厉害的模型也救不回来。

X(m,k)=∑n=0L−1w[n] x[mS+n] e−j2πkn/L\displaystyle X(m,k)=\sum_{n=0}^{L-1} w[n]\,x[mS+n]\,e^{-j2\pi kn/L}
这个公式描述了“从一段采样信号中切出一帧,再算它的频率成分”。
  1. x[mS+n]从原始语音里取出第 m 帧的采样点,S 是帧移。
    x[mS+n],n=0,1,…,L−1x[mS+n], \quad n=0,1,\dots,L-1
  2. w[n]窗函数,让这一帧两端的值平滑衰减,避免频谱泄露。
    w[n]=0.54−0.46cos⁡(2πnL−1)w[n] = 0.54 - 0.46\cos\left(\frac{2\pi n}{L-1}\right)
  3. 求和对一帧内所有采样点做加权累加,得到频率 k 上的分量。
    X(m,k)=∑n=0L−1w[n]x[mS+n]e−j2πkn/LX(m,k) = \sum_{n=0}^{L-1} w[n]x[mS+n]e^{-j2\pi kn/L}
  4. X(m,k)第 m 帧在第 k 个频率上的能量,把所有帧拼起来就是频谱图。
    X(m,k),k=0,1,…,L/2X(m,k), \quad k=0,1,\dots,L/2

Wav2Vec2特征:金耳朵的“声音指纹”

小杨问:“频谱图已经是特征了,为什么还要 Wav2Vec2?”因为频谱图只是每一帧的“音色快照”,缺少上下文。同一个音素在不同单词、不同语气里,发音会变。Wav2Vec2 更像一位听惯了海量语音的金耳朵,它不只盯着一帧,还会结合前后几百毫秒来判断这是“哪张牌”。

Wav2Vec2 事先用大规模无标注语音做自监督预训练:把一段语音的特征随机捂住,让模型根据周围语音猜出被捂住的内容。这个过程就像小孩泡在语言环境里,不靠逐字标注,也能慢慢建立起对语音的直觉。预训练完成后,模型变成编码器,把输入的声学特征序列转成一组高维向量。每个向量既包含当前帧的音色,也包含上下文信息,很适合接 CTC 这样的序列模型。

有了金耳朵,后面这位宽松速记员就轻松多了。它不需要自己从原始波形里摸索特征,只要在金耳朵输出的指纹上找规律。

H=Encoder⁡(X),H=[h1,h2,…,hT]\displaystyle H = \operatorname{Encoder}(X), \quad H=[h_1,h_2,\ldots,h_T]
这句话的意思是:金耳朵把一长串声音照片压缩成一张张“带备注的声音指纹”。
  1. X输入语音特征序列,通常由频谱图或原始波形构成。
    X=[x1,x2,…,xT]X=[x_1,x_2,\dots,x_T]
  2. EncoderWav2Vec2 的多层 Transformer 编码器,负责融合前后信息。
    Encoder:X↦H\text{Encoder}: X \mapsto H
  3. h_t每一帧对应的上下文表征向量,向量里包含音色、发音方式和前后语境。
    ht∈Rdh_t \in \mathbb{R}^{d}
  4. H整段语音的特征序列,送给下游 CTC 解码器。
    H=[h1,h2,…,hT]H=[h_1,h_2,\dots,h_T]

CTC对齐机制:不纠结逐帧对齐的宽松速记员

传统语音识别往往需要知道每个音素从哪一帧开始、哪一帧结束。可语音就像一条连续流动的河,很难一刀切成整齐的“音素块”。CTC 的聪明之处在于:它不需要精确边界,只要求“整句预测结果正确”。这就像一位宽松的速记员,允许你在稿纸上留下很多空白和重复字母,最后整理时再把多余的部分划掉。

具体来说,CTC 为每个时间步输出一个音素标签,或者输出一个特殊的空白符 blank。blank 表示“这一帧我不确定输出什么,先空着”。预测完成后,CTC 先把连续重复的标签合并,再删掉所有 blank。例如一串路径 h h 空 e 空 l l 空 o,经过合并去空后就是 h e l o。

这种“宽松对齐”对发音评估意义重大。学生读得快、吞音、连读,都不再需要模型精确说出“哪一帧发哪个音”,只要最终音素串接近参考答案,就能得到应有的分数。

P(Y∣X)=∑π∈B−1(Y)∏t=1Tpt(πt)\displaystyle P(Y\mid X)=\sum_{\pi\in\mathcal{B}^{-1}(Y)}\prod_{t=1}^{T} p_t(\pi_t)
这个公式是 CTC 的“总账”:把所有能整理成目标文本 Y 的原始路径 π 的概率全部加起来。
  1. π一条对齐路径,是每个时间步预测出的标签序列。
    π=(π1,π2,…,πT)\pi = (\pi_1, \pi_2, \dots, \pi_T)
  2. p_t(π_t)第 t 帧输出标签 π_t 的概率。
    pt(πt)=softmax⁡(ht)πtp_t(\pi_t) = \operatorname{softmax}(h_t)_ {\pi_t}
  3. B^{-1}(Y)所有能够通过合并重复、删除 blank 后变成 Y 的路径集合。
    B(π)=Y⇒π∈B−1(Y)\mathcal{B}(\pi) = Y \Rightarrow \pi \in \mathcal{B}^{-1}(Y)
  4. 求和把所有合法路径概率相加,得到目标序列 Y 的总概率。
    ∑π∈B−1(Y)∏t=1Tpt(πt)\sum_{\pi\in\mathcal{B}^{-1}(Y)}\prod_{t=1}^{T}p_t(\pi_t)

发音评分:判卷员的三张检查单

金耳朵和速记员出结果后,判卷员开始打分。评分不能只看“识别结果对不对”,还要看发音质量。判卷员手里有三张检查单:准确度、流利度和完整度。准确度看学生有没有读错音素;流利度看语速是否自然、有没有过多停顿;完整度看整句话是不是被吞掉了一半。

准确度是最核心的指标。系统把预测出的音素串和参考答案逐一对齐,数一数有多少音素匹配。比如 standard 参考答案有 10 个音素,模型只识别对 8 个,准确度就是 0.8。每多一个读错或漏读的音素,分数就会下降。

判卷员不会只看一个指标。如果学生读得又慢又断,即使每个音都对,流利度也会拉低总分。这也是 AI 老师比“只给一个对错”的老系统更贴近真实教师的地方。

Acc=NcorrectNtotal\displaystyle \text{Acc}=\frac{N_{\text{correct}}}{N_{\text{total}}}
准确度就是“标准清单里答对了几项”。
  1. N_correct预测音素串与参考音素串匹配上的个数。
    Ncorrect=∑i1[predi=refi]N_{\text{correct}} = \sum_{i} \mathbb{1}[\text{pred}_i = \text{ref}_i]
  2. N_total参考音素总数,也就是判卷员手里的标准答案条数。
    Ntotal=len(ref)N_{\text{total}} = \text{len}(\text{ref})
  3. Acc准确度,取值在 0 到 1 之间,越大越好。
    Acc∈[0,1]\text{Acc} \in [0, 1]

训练与评估:教练怎么把金耳朵和速记员教出来

要让三位考官配合默契,模型需要训练。训练数据不需要逐帧标注,只需要“录音 + 对应的音素串或文本”,这正是 CTC 的优点。教练把录音放进 Wav2Vec2 提取特征,再让 CTC 层输出概率,然后和标准答案比对,计算 CTC 损失。损失越小,说明模型整理出的音素串越接近标准答案。

模型训练完后,还要用测试集评估。常用指标是字符错误率或音素错误率 CER/PER:它统计标准答案里有多少音素被替换、删除或插入。错误率越低,说明考官越可靠。

LCTC(X,Y)=−log⁡P(Y∣X)\displaystyle \mathcal{L}_{\text{CTC}}(X,Y)=-\log P(Y\mid X)
CTC 损失是对“目标序列概率”取负对数:模型越有把握,损失越小。
  1. P(Y|X)给定语音 X,模型认为目标文本 Y 成立的概率。
    P(Y∣X)=∑π∈B−1(Y)∏t=1Tpt(πt)P(Y\mid X)=\sum_{\pi\in\mathcal{B}^{-1}(Y)}\prod_{t=1}^{T}p_t(\pi_t)
  2. 负对数把概率从 [0,1] 映射到 [0,∞),方便梯度下降优化。
    −log⁡P(Y∣X)-\log P(Y\mid X)
  3. 最小化损失训练就是不断调整参数,让标准答案的总概率越来越高。
    min⁡θ LCTC(X,Y;θ)\min_{\theta} \ \mathcal{L}_{\text{CTC}}(X,Y;\theta)

AI教育应用:从打分到陪练的闭环

评分结果只有变成反馈,才对学生有帮助。小杨把系统接入了在线英语口语陪练:学生读完一句话,系统 1 秒内返回总分、音素级红绿灯和发音示范。红色代表读错的音素,绿色代表读得标准,点击红色音素还能看到口腔示意图和示范音频。这样,AI 不仅打分,还承担了“陪练”角色。

这套反馈背后是综合评分公式:准确度、流利度和完整度按权重相加。不同课程可以调权重。比如初学者更重视准确度,流利度权重低一点;高阶口语课则把流利度权重提高,鼓励学生说得连贯。

有了这个闭环,教师不再需要把时间花在重复听音上,而是专注于设计课程和辅导学习策略。小杨的 AI 口语私教,也从“能打分”进化成了“能陪练、能纠音、能鼓励”。

Score=w1×Acc+w2×Flow+w3×Completeness\displaystyle \text{Score}=w_1\times\text{Acc}+w_2\times\text{Flow}+w_3\times\text{Completeness}
综合分是给学生的“总评语”,而不是冷冰冰的单一错误数量。
  1. Acc准确度,衡量音素发音是否正确。
    Acc=NcorrectNtotal\text{Acc}=\frac{N_{\text{correct}}}{N_{\text{total}}}
  2. Flow流利度,由语速、停顿和音长变化计算得到。
    Flow=1−Npause+α ∣rate−ref_rate∣Nsyllables\text{Flow}=1-\frac{N_{\text{pause}}+\alpha\,|\text{rate}-\text{ref\_rate}|}{N_{\text{syllables}}}
  3. Completeness完整度,表示学生有没有漏读整段音节。
    Completeness=detected syllablesreference syllables\text{Completeness}=\frac{\text{detected syllables}}{\text{reference syllables}}
  4. 权重 w满足相加为 1,控制三个维度的重要性。
    w1+w2+w3=1w_1+w_2+w_3=1

法律科技延伸:司法场景里的慎重应用

同样的发音评估能力,也可以迁移到法律科技中。司法语音材料常常需要判断“这份录音是否清晰、是否适合做声纹鉴定”,或者“权利告知录音里的语速是否异常”。口语发音评估模型能自动分析语速、停顿、吞音和音频质量,帮技术人员快速筛出异常片段,减少人工逐段监听的工作量。

但法律场景比教育场景更强调严谨。发音评估模型只能作为辅助初筛工具,不能单独作为定罪或鉴定的唯一依据。涉及个人隐私的语音数据必须脱敏、加密、限定访问范围,并且定期删除。司法人员在采纳系统结论前,仍要进行人工复核。

小杨这才明白,AI 口语考官并不只是教育产品里的玩具,它也是一把需要小心使用的尺子。用对场景,它是好助手;用得鲁莽,它就变成了“带偏见的裁判”。这正是 AI 从业者在行业落地中必须记住的事。

---

AI 应用场景

在线英语口语陪练

阶段:实时推理与反馈生成

解决的问题:传统学习App只能播放录音,无法判断学生哪里读错。系统通过 Wav2Vec2 + CTC 把学生语音转成音素序列,再和标准发音比对,指出具体错音并给出示范。

具体案例:某在线英语App接入自动评测后,学生在课后练习“连读、弱读”专项,每句一读,客户端立即拿到“音素级红绿灯”和跟读示范。一周后,该专项练习完成率提升了 35%。

普通话水平测试自动初评

阶段:模型训练与评分校准

解决的问题:普通话测试需要大量持证测评员,人工评分成本高、标准难统一。自动初评系统先用 Wav2Vec2 提取特征,再用 CTC 识别音素串,最后按声母、韵母、声调分别出分。

具体案例:某省级测试站用 AI 初筛所有考生录音,给出机评分数和风险音素清单,再由测评员重点复核低分样本,整体复核工作量减少 50%。

司法录音质量初筛

阶段:推理辅助与合规审查

解决的问题:司法语音材料动辄数小时,人工听完才能判断是否适合进一步鉴定。系统自动统计语速、停顿、吞音比例,并给出“录音清晰度”和“说话自然度”标签。

具体案例:某司法技术部门对一批权利告知录音做质量初筛,模型标注出 3 段语速异常、疑似拼接的片段,再由声纹专家复核,显著缩短了前置排查时间。

Python 演示

python81 行
"""Mini CTC decoder and pronunciation accuracy demo."""import math  def logsumexp(a, b):    if a == -float('inf'):        return b    if b == -float('inf'):        return a    m = max(a, b)    return m + math.log(math.exp(a - m) + math.exp(b - m))  def ctc_forward(log_probs, target, blank=0):    T = len(log_probs)    labels = [blank] + list(target)    labels = labels[:1]    for t in target:        labels += [t, blank]    L = len(labels)    alpha = [[-float('inf')] * L for _ in range(T)]    alpha[0][0] = log_probs[0][blank]    if L > 1:        alpha[0][1] = log_probs[0][target[0]]    for t in range(1, T):        for s in range(L):            trans = alpha[t - 1][s]            if s - 1 >= 0:                trans = logsumexp(trans, alpha[t - 1][s - 1])            if s - 2 >= 0 and labels[s - 2] != blank and labels[s] != labels[s - 2]:                trans = logsumexp(trans, alpha[t - 1][s - 2])            alpha[t][s] = trans + log_probs[t][labels[s]]    end = alpha[T - 1][L - 1]    if L >= 2:        end = logsumexp(end, alpha[T - 1][L - 2])    return end  def collapse(path, blank=0):    result = []    prev = None    for p in path:        if p != blank and p != prev:            result.append(p)        prev = p    return result  def greedy_decode(log_probs, blank=0):    path = [max(range(len(p)), key=lambda i: p[i]) for p in log_probs]    return collapse(path, blank)  def phone_accuracy(pred, ref):    if not ref:        return 0.0    hits = sum(1 for p, r in zip(pred, ref) if p == r)    return hits / len(ref)  if __name__ == '__main__':    ipa = {'sil': 0, 'h': 1, 'e': 2, 'l': 3, 'o': 4}    blank = ipa['sil']    log_probs = [        [0.7, 0.1, 0.1, 0.05, 0.05],        [0.1, 0.7, 0.1, 0.05, 0.05],        [0.1, 0.1, 0.6, 0.1, 0.1],        [0.1, 0.05, 0.1, 0.65, 0.1],        [0.1, 0.05, 0.1, 0.1, 0.65],    ]    for row in log_probs:        s = sum(row)        row[:] = [math.log(v / s) for v in row]     target = ['h', 'e', 'l', 'l', 'o']    ref_ids = [ipa[c] for c in ['h', 'e', 'l', 'o']]    pred = greedy_decode(log_probs, blank)    print('pred path ids:', pred)    print('decoded phones:', [list(ipa)[c] for c in pred])    print('phone accuracy:', phone_accuracy(pred, ref_ids))    print('ctc loss:', -ctc_forward(log_probs, [ipa[c] for c in target], blank))
目的:用纯 Python 实现一个迷你 CTC 解码和发音准确度计算器,演示 CTC 如何去掉重复与空白,并用音素匹配估计发音得分。
  1. labels = [blank] + list(target); labels = labels[:1]构造带首尾空白的 CTC 扩展标签序列。
  2. alpha[t][s] = trans + log_probs[t][labels[s]]在 log 域递推累积所有合法对齐路径的概率。
  3. end = logsumexp(end, alpha[T - 1][L - 2])把“最后一步不是空白”的路径也纳入总概率。
  4. path = [max(range(len(p)), key=lambda i: p[i]) for p in log_probs]贪心解码:每帧取概率最大的标签。
  5. if p != blank and p != prev: result.append(p)合并重复、删除空白,得到可读的音素序列。
  6. hits = sum(1 for p, r in zip(pred, ref) if p == r)逐音素比对,算出准确度。

常见误区

误区很多初学者认为 Wav2Vec2 听完音频后,就像语音识别一样直接给出“hello”这个单词。

正解Wav2Vec2 只是“金耳朵”,它输出的是高维语音特征向量,不是文字。真正输出音素标签的是后面的 CTC 或其它序列模型。它相当于把声音加工成更容易消化的食材,但炒菜还需要 CTC 这口锅。

为何常见:大家看到 Wav2Vec2 接在模型最前面,又明显提高了识别效果,就容易把它当成完整的识别器。

误区有人觉得 CTC 训练出来的模型,天然知道每个音素从哪一帧开始、到哪一帧结束。

正解CTC 用的是“宽松全局对齐”思想。它允许空白符吸收不确定帧,允许重复标签合并,只在意整句结果对不对。它不会稳定地输出逐帧时间戳,要拿时间戳还需要额外训练强制对齐模型。

为何常见:因为 CTC 路径本身包含了帧级标签,看起来很像有时间标注,所以容易误解。

误区学生录音用 48kHz、96kHz,效果应该比 16kHz 好很多。

正解人类语音的关键信息大多集中在 4kHz 以内,16kHz 采样率足以覆盖。高采样率会带来更大计算量和存储成本,却不一定提升发音评分精度。系统训练时用了 16kHz,测试时突然换成 96kHz,反而可能造成输入分布不匹配。

为何常见:生活中“照片像素越高越清晰”的经验被错误迁移到语音上。

误区有人把模型对“这句话”的置信度直接当作发音好坏,认为置信度高就是发音好。

正解识别置信度反映的是“模型有多确定这句话是 X”,而不是“学生发音有多标准”。发音评分必须拿预测音素串和标准音素串做有根据的比对,并加入流利度、完整度等维度,否则容易把口音浓但语气流利的学生打高分。

为何常见:置信度和得分都是 0 到 1 之间的数,概念上容易混淆。

误区上线自动评分后,就不再需要真人教师,法律鉴定也能完全交给机器。

正解AI 适合做高频、低成本的初筛和陪练,但教学策略、情感支持、复杂争议鉴定仍需要人。在法律场景中,自动系统只能辅助标注和初筛,最终意见必须由专业人员复核。

为何常见:媒体常渲染 AI 替代人类,容易让人忽视模型偏见、数据隐私和责任归属问题。

面试题

Q1. Wav2Vec2 在做预训练时,主要利用哪类数据?

单选题 · easy

  • A.无标注的大规模语音← 正确答案
  • B.人工标注的音素对齐
  • C.中英对照的翻译语料
  • D.每句话的发音评分

答案:A。Wav2Vec2 的核心是自监督预训练,它在大规模无标注语音上学语音表征,不需要人工对齐或翻译语料。就像孩子听大量语言就能建立语感,而不必每句话都被标注。

Q2. CTC 中的 blank(空白符)最合适的理解是?

单选题 · mid

  • A.永远不发声的静音帧
  • B.代表“本帧不输出标签”的占位← 正确答案
  • C.只能出现在句子开头结尾
  • D.表示发音错误需要罚分

答案:B。blank 是 CTC 用来吸收不确定帧的占位符,它出现在任何位置都可能。它和静音不是一回事,也不是罚分符号。这就像速记员允许自己在不确定时先画个横线,最后整理时再划掉。

Q3. 口语评估系统通常把语音采样为多少 Hz?

单选题 · easy

  • A.8000 Hz
  • B.16000 Hz← 正确答案
  • C.44100 Hz
  • D.96000 Hz

答案:B。语音识别和发音评估普遍使用 16kHz,因为人类语音的有效频率范围足够被 8kHz 带宽覆盖,16kHz 采样既保留细节又节省算力。8000Hz 常用于电话语音,音质会更粗糙。

Q4. CTC 贪心解码的基本流程是?

单选题 · mid

  • A.每帧取概率最大的标签再合并去空← 正确答案
  • B.先按静音切句再逐词识别
  • C.用维特比对齐每帧时间戳
  • D.对整句做语言模型搜索

答案:A。贪心解码最简单:每个时间步只挑当前概率最大的标签,形成路径后再删除连续重复和空白符。它不代表全局最优,但速度快、实现简单,适合打分系统做实时推理。

Q5. 关于 Wav2Vec2 输出的特征,下列说法正确的是?

多选题 · hard

  • A.它包含上下文信息← 正确答案
  • B.它仍是原始音频波形
  • C.可直接用作 CTC 输入← 正确答案
  • D.它自带音素标注答案

答案:AC。Wav2Vec2 的编码器会融合前后帧,所以输出包含上下文信息,也能送给 CTC 做序列预测。但它不是原始波形,更不是标注答案,它只是高维特征向量。

Q6. 训练 CTC 模型时,要求的标注粒度是?

单选题 · mid

  • A.每帧一个音素标签
  • B.整句文本或音素串即可← 正确答案
  • C.每个词的起止时间戳
  • D.每句话的评分等级

答案:B。CTC 最大的优点就是不需要帧级对齐标注,只需要“录音对应的整句文本或音素串”。这大大降低了数据成本,像给速记员一份标准答案,不需要告诉他每个字写在第几行第几格。

Q7. 在发音评分中,流利度通常关注哪些信号?

多选题 · hard

  • A.语速← 正确答案
  • B.异常停顿次数← 正确答案
  • C.音高变化幅度
  • D.背景噪声分贝

答案:AB。流利度主要衡量说话是否连贯自然,常用语速、音节时长和异常停顿次数来刻画。音高变化更多属于语调或表现力,背景噪声属于音频质量,都不算流利度核心指标。

Q8. 用 PER/CER 评估识别模型时,CER 的分子包含?

单选题 · mid

  • A.替换删除插入之和← 正确答案
  • B.只有替换个数
  • C.只有删除个数
  • D.只有识别正确数

答案:A。字符错误率 CER = (替换 S + 删除 D + 插入 I) / 参考总字符数。三种错误都会降低正确率,所以一个都不能少,就像批改作文时写错、漏写、多写都要扣分。

Q9. 法律语音场景中使用自动发音评估时,最稳妥的做法是?

单选题 · hard

  • A.直接作为唯一鉴定结论
  • B.自动初筛加人工复核← 正确答案
  • C.仅公开最高分报告
  • D.删除全部原始录音

答案:B。法律场景对证据链和结论可靠性要求极高。自动评估适合做初步筛查,最终意见必须由专业人员复核,且原始数据要依法留存和脱敏。AI 是辅助工具,不是最终裁判。

Q10. 语音分帧时,帧移 10ms 的主要作用是?

单选题 · mid

  • A.让相邻帧有重叠,避免漏掉边界← 正确答案
  • B.把音素切得更碎
  • C.提高采样率
  • D.降低存储消耗

答案:A。帧长为 25ms、帧移 10ms 意味着相邻帧有 15ms 重叠。这样既能捕捉到声音的短时变化,又不会因为窗口边界错过关键音素,相当于拍照时连续多拍几张,而不是一秒只拍一张。