从声波到文字:语音识别技术是如何“听懂”你说话的
把一段录音丢给电脑,几秒钟后出来一份文字稿。这个看似简单的操作,背后是一条持续演进了几十年的技术链路。
这篇文章聊聊语音识别(ASR)的核心原理,以及近几年的关键突破。
传统方案:两段式架构的得与失
早期的语音识别用的是“声学模型 + 语言模型”两段式架构。
声学模型负责第一步:把音频信号转成音素序列。输入的是一段波形,经过傅里叶变换提取频谱特征(MFCC 或 Filter Bank),声学模型再把这些特征映射到一个个音素——就像把连续的声音拆成了离散的「发音符号」。
这个阶段的经典模型是 HMM-GMM(隐马尔可夫模型 + 高斯混合模型)。HMM 建模音素之间的转移概率,GMM 建模每个音素对应的声学特征分布。后来又升级到 HMM-DNN,用深度神经网络替代 GMM 来做声学特征的判别。
但声学模型的输出只是音素序列,离可读的文字还有距离。比如「wǒ yào qù běi jīng」这个音素序列,既可能是「我要去北京」,也可能是「我要去背景」。这时候语言模型出场——它是一个统计模型,用来判断在当前上下文下,哪个词序列的概率更高。
这套两段式架构统治了语音识别很多年,准确率也在持续提升。但它有一个结构性问题:声学模型和语言模型是独立训练的,中间的信息是割裂的。声学模型不知道自己产生的某个音素歧义会对后续的语言理解造成多大影响,语言模型也无法反馈信号去优化声学特征提取。
端到端的革命:一个模型做到头
2015 年前后,端到端模型开始打破这个格局。
核心思路很简单:把音频直接输入一个神经网络,输出就是文字。不再分两步走,一个模型学会从声波到文字的全部映射。
这里的关键技术有几个:
- CTC(连接时序分类):解决的是音频和文字长度不对齐的问题。一段 3 秒的音频可能有几百帧,但对应的文字可能只有几个字。CTC 引入了一个「空白」标记,允许模型在多个音频帧上输出同一个字或跳过,自动找到最优的对齐路径,不需要人工标注每帧对应哪个字。
- 注意力机制的引入:直接把 Transformer 的编码器-解码器架构搬到了音频上。编码器处理音频帧序列,解码器逐字生成文本,注意力权重告诉解码器当前应该关注音频的哪一段。这个架构的一个巧妙之处在于:注意力权重天然提供了时间对齐信息,不再需要 CTC 那样的间接方案。
- Conformer 架构:Google 在 2020 年提出的 Conformer 是目前语音识别领域的主流骨干网络。它把 CNN 和 Transformer 结合在一起——CNN 的卷积层擅长捕捉局部的声学特征(比如某个辅音的短时频谱变化),Transformer 的自注意力层擅长建模全局的上下文依赖(比如整句话的语调走向)。两者交替堆叠,取长补短。
工程落地中的棘手问题
原理说完了,但在真实场景中跑语音识别,还需要解决几个工程问题:
- 口音和方言:普通话说得标准的时候准确率很高,但带四川口音、广东口音之后准确率明显下降。解决办法不是换个模型,而是在训练数据里做针对性覆盖。金融、医学等垂直领域的语料库也是同样的逻辑——让模型见过足够多的专业术语发音。
- 多人对话与说话人分离:一场会议有五六个人说话,语音识别系统不能只给一份混合文字稿。需要先做声纹聚类——把音频按说话人的声学特征分成几组,再对每组独立做语音识别。声纹聚类的难点在于:你不知道有几个人、不知道谁在什么时候说话、不知道说话人的声纹长什么样,全靠无监督学习。
- 流式识别:不是等整段录音结束再出结果,而是边说边出字幕。这要求在延迟和准确率之间做权衡:等更多上下文能提高准确率,但延迟越大用户体验越差。典型的流式 ASR 会在几百毫秒的延迟窗口内做局部注意力计算。
应用落地
语音识别技术现在已经落地到了很多场景。会议纪要自动生成、网课字幕、播客转文字——这些应用背后都是 ASR 在支撑。
比如我平时用的 Ai好记,把视频或录音丢进去之后自动出文字稿,支持说话人分离,中英文混合识别也能处理。本质上就是把 ASR、声纹聚类、后处理这些技术串成了一个完整的产品链路。技术原理不复杂,但把工程细节打磨到用户无感知的程度,还是需要不少功夫的。
从 HMM-GMM 到 Conformer,从两段式到端到端,语音识别这几十年的演进其实是一个不断“减少人工干预”的过程——让模型自己去学声波和文字之间的映射,学得越多,需要人去定义的规则就越少。
浙公网安备 33010602011771号