语音识别是怎么工作的?
从声波到文字要经过四步。其中最关键的一步,是在一堆发音相近的候选里挑出合理的那句话
更新于 2026-11-07 · 返回博客
- 语音识别分四步:把声音变成数字,提取特征,用模型算出可能的文字,再从候选里挑出最合理的一句。
- 中文特别依赖上下文。常用的 3,755 个汉字只有 395 个不带声调的读音,平均每个读音对应 9.5 个字。
- 我们的实测:12 个同音词单独说只认对两个,放进句子 12 个全对。所以说完整的句子比说单个词更准。
第一步:把声音变成一串数字
声音是空气的振动,麦克风把它变成连续变化的电信号,电脑再每隔一小段时间量一次强度,记成一个数字,这叫采样。经典教材《Speech and Language Processing》解释过,要测准某个频率,每个周期至少要采两个点;人说话的信息大多在 1 万赫兹以下。实际系统里,16,000 赫兹是常用的采样率,Whisper 就把所有音频统一到这个规格。也就是说,每秒钟的声音会变成 16,000 个数字。
电话线路的带宽更窄,语音常用 8,000 赫兹采样,能保留的信息少很多。这也是为什么电话录音比麦克风近距离录音难识别。
第二步:提取声学特征
16,000 个数字对模型来说太原始了,而且人听声音靠的是频率成分,不是单个时刻的强度。所以下一步是切片分析:Whisper 的做法是每 10 毫秒取一段 25 毫秒长的音频,分析里面各个频率的能量,映射到 80 个通道上,得到论文里写的80 通道对数梅尔频谱。
梅尔是一种贴近人耳听感的频率刻度。人耳对低频的差别敏感,对高频不那么敏感,这种刻度在低频分得细,在高频分得粗。经过这一步,一秒钟的声音变成 100 帧,每帧 80 个数,看起来像一张随时间变化的声音图谱。模型“看”的就是这张图。
第三步:模型把图谱变成文字
这是变化最大的一步。早期系统把任务拆成好几段:声学模型判断发音,发音词典查词,语言模型判断词序,每一段都要专门设计。2014 年的 Deep Speech 代表了另一种思路:用一个神经网络从音频直接学到文字,不再需要手工设计的发音词典,抗噪能力也从数据里学。
教材第 16 章把现在的主流方案分成两类:
- 编码器加解码器。编码器读完声音,得到一份压缩的表示;解码器再根据这份表示和已经写出的字,一个一个往下写。教材的说法是,解码器本质上是一个以声音为条件的语言模型。Whisper 属于这一类。
- CTC。给每一帧都输出一个字符,再把连续重复的合并,加一个“空白”符号处理静音和重叠字。这种方法对齐简单,也常和大型预训练模型配合使用。
这些年模型的进步可以从几个公开数字看出来,但要注意它们的测试集不同,不能直接相比:
| 年份 | 系统 | 测试内容 | 词错误率 |
|---|---|---|---|
| 2014 | Deep Speech | Switchboard 电话对话 | 16.0% |
| 2016 | 微软对话系统 | Switchboard 电话对话 | 5.8% |
| 2016 | 专业人工转写 | 同上 | 5.9% |
| 2020 | Conformer | LibriSpeech 朗读(标准集) | 2.1% |
微软 2016 年的论文在电话对话数据上把系统做到了和专业转写员同样的错误率,这是一个里程碑。Conformer 结合了卷积和注意力机制,是现在语音识别里常见的结构。
第四步:在候选里挑最合理的一句
模型不会只想出一种答案。它会同时保留几条最可能的路径,这个方法叫束搜索,最后得到一份候选列表,教材里叫 n-best 列表。系统可以再用语言模型给这些候选重新打分,选出最通顺的。
这一步决定了语音识别的很多特点。声音只能把范围缩小到“发音差不多的这几个”,到底是哪一个,要靠上下文。下面这个实验就能看清这一点。
我们做了一个小实验:同一个词,单说和放进句子
2026 年 11 月 7 日,我们挑了 12 个有同音词的词语,用 macOS 合成语音 Tingting 朗读两遍:一遍只读这个词,一遍读含这个词的完整句子。共 24 段音频,全部送进听笔线上使用的语音识别,取前三个候选,不开个人词典,不经过 AI 整理。
| 要说的词 | 单独说的首选 | 单独说的其他候选 | 放进句子 |
|---|---|---|---|
| 权利 | 权力 | 权利、全力 | 受教育的权利 |
| 事例 | 视力 | 势力、势利 | 这个事例 |
| 攻势 | 公式 | 公示、公事 | 猛烈的攻势 |
| 致癌 | 致癌 | 无 | 容易致癌 |
| 抱负 | 报复 | 暴富、抱负 | 很有抱负 |
| 一生 | 一生 | 一声、医生 | 我一生最大的遗憾 |
| 数目 | 树木 | 数目 | 账的数目 |
| 精力 | 经理 | 经历、精力 | 用不完的精力 |
| 刑事 | 形式 | 形势、行事 | 转为刑事案件 |
| 反映 | 反应 | 反映 | 向我们反映了 |
| 公理 | 公里 | 无 | 这条公理 |
| 水瓶 | 水平 | 水瓶 | 他的水瓶 |
单独说时,模型基本是在挑日常更常见的那个词:说“攻势”写成“公式”,说“刑事”写成“形式”,说“公理”写成“公里”。这不算听错,这些词的发音本来就相同或者极为接近,换成人只听一个词也可能写错。放进句子之后,12 个词全部写对,甚至连“这条公理”“他的水瓶”这种不太常见的搭配也没问题。
这也解释了一些实用现象:说单个词或者人名时最容易错;说整句更准;句子里前后的内容越具体,越容易判断。
中文为什么特别依赖上下文
英文也有同音词,比如 there 和 their,但中文的情况要突出得多。我们做了一个简单的统计:GB 2312 一级常用汉字共 3,755 个,用 macOS 内置的汉字转拼音功能取每个字的主要读音,结果是:
| 统计 | 数量 | 平均每个读音对应 |
|---|---|---|
| 常用汉字 | 3,755 个 | — |
| 带声调的读音 | 1,118 个 | 3.4 个字 |
| 不带声调的读音 | 395 个 | 9.5 个字 |
最拥挤的读音是 ji(54 个字)、yi(53 个字)、shi(47 个字)。就算算上声调,yì 这一个读音也对应 27 个字,shì 对应 24 个字。而且真人说话时声调并不总是清晰,连读时还会变化。所以中文识别从一开始就是一个靠上下文“猜字”的问题。
中文还有几个额外的麻烦:写出来没有空格,要自己判断词的边界;标点不发音,要靠语义和停顿推断;数字有“三点半”和“3点半”两种写法,发音一样,算准确率时差别很大;工作中常夹英文词,语言来回切换,见中英混说的实测。
为什么有时准有时不准
同一个模型换场景,错误率差很多。教材整理了 2023 到 2024 年前后的典型水平:
| 任务 | 错误率 |
|---|---|
| 英文有声书朗读(LibriSpeech) | 1.4% |
| 陌生人之间的英文电话(Switchboard) | 5.8% |
| 英文会议录音(AMI) | 11% |
| 多人聚餐,远距离麦克风(CHiME6) | 25.5% |
| 普通话朗读(AISHELL-1) | 3.9% |
| 普通话电话对话(HKUST) | 18.5% |
教材总结了几个主要因素:内容范围有多大;是对机器说话还是人和人聊天,对机器说话时人会不自觉地说得更慢更清楚;信道和噪声;口音。普通话从朗读到电话对话,错误率差了将近 5 倍。2020 年 PNAS 上的研究测试了五家商用系统,不同人群的平均错误率差了将近一倍,说明说话人的差别同样重要。
这也是语音输入比会议转写容易的原因:一个人对着麦克风,距离近,说的是想写下来的话。
个人词典和 AI 整理在哪一步起作用
再好的模型也不认识你公司的产品名。个人词典在第四步之前起作用:提前告诉系统哪些词要优先考虑。微软的短语列表原理相同,提高特定词的重要性,让它更容易被选中。听笔的个人词典也是这个思路。副作用是发音含糊时,系统可能用词典里的词填空。
AI 整理发生在识别之后。它只看文字,不听声音,根据上下文删掉口头禅、理顺句子、修正一部分同音字错误,详见 AI 语音输入和传统听写的区别。如果识别错得太离谱,比如整句跑偏,整理也没有依据可以救回来。
它还做不好什么
- 凭空生成内容。2024 年的研究发现,Whisper 约 1% 的转写含有音频里没有的短语或句子,在非语音时段较长的说话者身上更常见。模型习惯输出通顺的文字,遇到静音时也可能写出点什么。
- 符号和结构化内容。代码、网址这些东西不是自然语言,我们测的 14 条这类内容没有一条能直接用,见什么时候不该用语音输入。
- 孤立的专有名词。没有上下文、训练数据里又少见,比如人名和新产品名。
对使用者意味着什么
- 说完整的句子,别一个词一个词地蹦。
- 说人名时带上点上下文,比如“财务部的张敏”,通常比单说一个名字更容易写对。
- 把常用的专有名词加进词典。
- 不用放慢语速,我们测过,语速从 233 到 519 字/分钟都认对了。
- 离麦克风近一点,环境嘈杂时英文词最先出错。
这篇文章的局限
- 原理部分做了简化,实际产品的模型结构各不相同,也不一定公开。文中的 Whisper 只是公开资料比较全的例子,不代表听笔或其他产品使用的具体方案。
- 同音词实验只有 12 个词,由我们挑选,故意选了容易混淆的词,所以“只认对两个”不代表一般词语的识别率。
- 测试用合成语音,单独朗读时声调可能和真人不同。结果只来自听笔这一套识别。
- 读音统计用的是 macOS 内置转换,多音字只取一个读音,数字是近似值。
常见问题
语音识别和声纹识别是一回事吗?
不是。语音识别回答“说了什么”,把声音转成文字;声纹识别回答“是谁在说”,用来确认身份。语音输入工具用的是前者。
为什么单独说一个词容易错,说一整句反而准?
因为很多词的发音相同,只靠声音分不出来,模型要靠前后的字来判断。我们的实测里,12 个同音词单独说只认对两个,放进句子后 12 个全对。所以用语音输入时,说完整的句子比说一个词更准。
语音识别会越用越懂我吗?
识别模型本身一般不会因为你用得多而改变。各家产品常见的做法是在模型之外加一层:个人词典提高特定词的优先级,或者记住你的纠正,下次自动替换。听笔的个人词典和 AI 学习属于这一层。
模型会不会听到没说过的话?
会。这叫幻觉输出,在静音或者很轻的声音上更容易发生。研究发现 Whisper 约 1% 的转写包含音频里没有的短语或句子。个人词典也可能把没说过的词带进来,我们在发音不清时遇到过。
语音识别和 AI 整理是同一个模型吗?
通常不是。语音识别把声音变成文字,AI 整理再用大语言模型把文字改成书面语。前者处理声音,后者只看文字,所以识别错得太离谱时,整理也救不回来。
参考资料
- Jurafsky D, Martin J H. Speech and Language Processing(第 3 版草稿)第 16 章 Automatic Speech Recognition. 2026. 查看原文
- Jurafsky D, Martin J H. Speech and Language Processing(第 3 版草稿)第 15 章 Phonetics and Speech Feature Extraction. 2026. 查看原文
- Radford A, et al. Robust Speech Recognition via Large-Scale Weak Supervision. arXiv:2212.04356, 2022. 查看原文
- Hannun A, et al. Deep Speech: Scaling up end-to-end speech recognition. arXiv:1412.5567, 2014. 查看原文
- Gulati A, et al. Conformer: Convolution-augmented Transformer for Speech Recognition. arXiv:2005.08100, 2020. 查看原文
- Xiong W, et al. Achieving Human Parity in Conversational Speech Recognition. arXiv:1610.05256, 2016. 查看原文
- Koenecke A, et al. Careless Whisper: Speech-to-Text Hallucination Harms. arXiv:2402.08021, 2024. 查看原文
- Koenecke A, et al. Racial disparities in automated speech recognition. PNAS, 2020, 117(14): 7684–7689. 查看原文
- Microsoft Learn. 使用短语列表提高识别准确度。 查看原文