1. 语音识别概述:从“听不清”到“听得准”

各位同学好,我是这门课的主讲。在语音识别领域摸爬滚打了十几年,踩过的坑比走过的路还多。今天咱们先聊聊语音识别的全貌——它从哪来,用到哪去,现在卡在哪,以及我们怎么衡量它好不好。

说白了,语音识别就是让机器听懂人话。但这事儿远没你想的那么简单。我刚开始做这行时,觉得不就是“声音转文字”嘛,后来才发现,这里面藏着声学、语言学、信号处理、深度学习一大堆学问。

核心观点:语音识别的本质是一个序列到序列的映射问题——把连续的声学信号,映射成离散的文本符号。这个映射过程,充满了不确定性。

1.1 语音识别技术发展史

语音识别不是新鲜事。从上世纪50年代到现在,它经历了几个关键阶段。我把它分成四个时期,你一看就明白。

时期 时间 核心技术 代表系统
萌芽期 1950s-1970s 模板匹配、动态时间规整(DTW) IBM Shoebox(识别16个英文单词)
统计建模期 1980s-2000s 隐马尔可夫模型(HMM)+ 高斯混合模型(GMM) Dragon NaturallySpeaking
深度学习期 2010s-2015 DNN-HMM混合模型、RNN/LSTM 百度Deep Speech
端到端时代 2016-至今 CTC、Attention、Transformer、Conformer Whisper、WeNet、RNN-T

我记得刚入行那会儿,大家还在用GMM-HMM那一套。调个高斯分量数能调一星期,效果还不咋地。后来深度学习一来,整个行业都变了。嗯,这里要注意——不是旧技术没用,而是新工具让我们能处理更复杂的声学模式。

我的经验:别小看HMM。虽然现在端到端模型是主流,但HMM的时序建模思想,在语音对齐、强制对齐这些任务里依然好用。我去年做的一个项目,就是用HMM做数据对齐,帮端到端模型提升了3%的准确率。

1.2 核心应用场景

语音识别现在几乎无处不在。我随便列几个,你肯定都用过。

  • 智能助手:小爱、Siri、天猫精灵。这些场景要求低延迟、高实时性,但可以容忍少量错误。
  • 会议转写:讯飞听见、阿里云语音转写。要求高准确率,尤其是专业术语、人名、数字。
  • 车载语音:导航、空调控制。噪声环境复杂,风噪、胎噪、音乐声混在一起。
  • 医疗听写:医生口述病历。这是高价值场景,错一个字可能出大事。
  • 客服质检:自动分析通话录音。需要处理方言、口音、语速变化。

你想想看,这些场景对精度的要求完全不一样。车载场景,你说“导航到天安门”,它识别成“导航到天安们”,可能也能用。但医疗场景,“服用阿莫西林”识别成“服用阿莫西林胶囊”,剂量就错了。

避坑指南:我曾经在一个医疗项目中,直接拿通用模型去跑,结果“盐酸二甲双胍”识别成了“盐酸二甲双瓜”。后来加了医疗领域词表和语言模型,错误率才降下来。所以——场景决定技术选型,别想一套模型打天下。

1.3 当前面临的精度挑战

语音识别做到今天,在安静环境下,准确率已经很高了。但一到真实场景,问题就来了。我总结了几个核心挑战。

  1. 噪声鲁棒性:背景音乐、多人说话、机器轰鸣。信噪比低的时候,模型直接“失聪”。
  2. 口音与方言:中文有八大方言区,英文有印度口音、日本口音。模型在训练数据覆盖不到的口音上,表现断崖式下降。
  3. 语速变化:有人说话像机关枪,有人慢吞吞。模型对语速的泛化能力有限。
  4. 长尾词与专有名词:人名、地名、产品名、生僻字。训练数据里出现次数少,模型就学不会。
  5. 领域迁移:在新闻数据上训练好的模型,拿到金融领域,准确率直接掉10个点。

为什么会这样?说白了,语音信号本身就有歧义。同一个音,在不同上下文、不同人嘴里,声学特征差异很大。再加上环境干扰,模型要做的其实是一个“在噪声中猜答案”的游戏。

一个残酷的事实:我见过很多团队,在公开测试集上刷到98%的准确率,一上线就被用户骂。为什么?因为测试集是干净的,用户环境是脏的。精度提升,从来不是实验室里的数字游戏。

1.4 评价指标:WER 与 CER

聊精度,先得说清楚怎么量。语音识别最核心的指标就是词错误率(WER)和字错误率(CER)。

WER(Word Error Rate) 的计算公式很简单:

WER = (S + D + I) / N × 100%

其中:
S = 替换错误的词数(Substitution)
D = 删除错误的词数(Deletion)
I = 插入错误的词数(Insertion)
N = 参考文本的总词数

注意,WER 可以超过100%。如果模型疯狂插入词,错误率就爆表了。我见过最夸张的一个模型,WER 跑到 180%,比不说话还差。

CER(Character Error Rate) 和 WER 原理一样,只是把“词”换成“字”。中文里,CER 更常用,因为中文的词边界不明确。

指标 适用语言 粒度 典型值(当前SOTA)
WER 英文、分词后的中文 词级别 2%-5%(英文LibriSpeech clean)
CER 中文、日文、韩文 字/字符级别 3%-8%(中文AISHELL-1)

我的习惯:做中文语音识别,我一般同时看 CER 和句子准确率(SACC)。CER 反映字级别的错误,SACC 反映整句对不对。有时候 CER 很低,但每句话都错一两个字,用户体验其实很差。两个指标一起看,才能全面评估。

计算 WER/CER 时,需要用动态规划做对齐。我给你们看一段简单的 Python 代码,用 jiwer 库算 WER:

import jiwer

reference = "今天天气真不错"
hypothesis = "今天天气真不错"

wer = jiwer.wer(reference, hypothesis)
print(f"WER: {wer:.2%}")

# 输出:WER: 0.00%

# 如果识别错了
hypothesis_bad = "今天天气真不差"
wer_bad = jiwer.wer(reference, hypothesis_bad)
print(f"WER: {wer_bad:.2%}")

# 输出:WER: 25.00% (替换了1个字,共4个字)

嗯,这里要注意——WER 对插入错误特别敏感。模型如果倾向于多说词,WER 会很难看。反过来,如果模型倾向于少说词,虽然 WER 可能不高,但信息丢失了。所以调模型时,要平衡删除和插入的惩罚权重。

避坑指南:我曾经犯过一个错——只盯着 WER 调模型,结果 WER 降了,但用户反馈说“识别结果经常漏词”。后来一查,是解码时 beam search 的惩罚参数设得太高,模型倾向于输出短句。所以,指标只是参考,最终要以用户体验为准。

1.5 本章知识体系总览

最后,我用一张图把本章的核心逻辑串起来。你一看就明白语音识别的全貌了。

语音识别知识体系总览 语音识别知识体系总览 语音识别 技术发展史 核心应用场景 精度挑战 萌芽期 统计建模期 深度学习期 端到端时代 智能助手 会议转写 车载语音 医疗听写 噪声鲁棒性 口音方言 长尾词 领域迁移 评价指标:WER / CER WER/CER 是衡量精度的核心指标

这张图把本章的核心逻辑串起来了。从语音识别这个中心点出发,我们聊了它的发展史、应用场景、精度挑战,最后落到评价指标上。后面的课程,我们会沿着这些分支深入下去,一步步把精度提上去。

好,第一章就到这里。记住一句话:语音识别精度提升,不是一蹴而就的事。它需要你理解历史、看清场景、直面挑战、用好指标。后面的路还长,咱们慢慢走。