一个完整的语音识别系统通常可以划分为几个核心模块,虽然不同公司和系统的具体实现细节(如模型架构、优化方法)可能有所不同,但其基本结构和流程是相似的。

我们可以将整个系统从宏观上分为两个主要部分:离线训练阶段 和 在线识别阶段。
整体架构概览
用一个简化的流程图来展示整个识别过程:
[语音信号] -> [前端处理] -> [声学模型] -> [发音词典] -> [语言模型] -> [解码器] -> [识别文本]
↑ ↑ ↑
| | |
+---- [特征提取] ------+ |
| |
+---- [声学模型训练] <----------+
|
+---- [语言模型训练] <----------+
下面我们分阶段详细拆解每个模块。
离线训练阶段
这个阶段的目标是利用海量的标注语音数据和文本数据,训练出核心的模型,这是一个计算密集型且耗时的过程,通常在强大的服务器集群上完成。

数据准备与处理
- 语音数据收集与标注:收集大量的语音数据(通常是几万到几百万小时),并由人工进行标注,将语音内容转换为对应的文本。
"你好世界"对应的音频波形。 - 文本语料收集:收集海量的文本数据,如新闻、书籍、网页、社交媒体帖子等,用于训练语言模型。
特征提取
虽然这是识别阶段的第一步,但其提取的特征(如MFCC)的定义和参数也是在训练阶段确定的。
- 目的:将原始的、非结构化的音频波形信号,转换为计算机更容易处理的、包含关键语音信息的特征向量序列。
- 常用特征:
- 梅尔频率倒谱系数:这是最经典和广泛使用的特征,它模拟了人耳的听觉特性,对语音的共振峰等关键信息有很好的表征能力。
- 滤波器组特征:比MFCC更简单,计算量更小,在端到端模型中非常流行。
- 谱图:直接将音频波形转换为二维的时频图,可以被深度学习模型(如CNN)直接处理。
声学模型训练
- 目的:学习语音信号和发音单元之间的映射关系,听到一段声音,知道它最可能对应哪个音素/字/词”。
- 核心单元:
- 传统方法:通常以音素作为基本单元,音素是语言中最小的声音单位,例如中文的 "sh", "eng", "a"。
- 现代端到端方法:直接以字符或词作为基本单元,简化了流程。
- 模型架构演进:
- GMM-HMM (高斯混合模型-隐马尔可夫模型):早期经典方法,HMM建模音素的时序变化,GMM对每个状态下的特征概率进行建模。
- DNN-HMM (深度神经网络-隐马尔可夫模型):里程碑式的进步,用DNN替代GMM来计算HMM每个状态的输出概率,极大地提升了识别准确率。
- 端到端模型:这是当前的主流,它将声学模型、发音词典和语言模型统一到一个神经网络中进行优化,简化了流程,性能也更强。
- CTC (Connectionist Temporal Classification):允许模型输出不定长的序列,通过引入一个“空白”符号来对齐,解决了训练时输入和输出长度不一致的问题。
- Attention-based Models (基于注意力机制的模型):类似于机器翻译中的Seq2Seq模型,通过一个“注意力”动态地关注输入音频的不同部分来生成输出文本。
- RNN-Transducer (RNN-T):结合了CTC和Attention的优点,是一个流式的、统一的端到端模型,非常适合实时语音识别。
语言模型训练
- 目的:学习语言的统计规律,判断一个句子或词序列出现的可能性。"今天天气很好" 是一个合理的句子,而 "今天天气很好天气" 就不合理,语言模型会赋予前者更高的概率。
- 核心作用:在识别时,如果有多个候选词("zhōng" 可能对应 "中"、"钟"、"终"),语言模型会根据上下文选择最通顺、最合理的那一个,起到“纠错”和“平滑”的作用。
- 模型类型:
- N-gram 模型:最经典和常用的统计模型,它基于一个假设:一个词出现的概率只与它前面的 N-1 个词有关,在三元文法中,P(w3|w1, w2)。
- 神经网络语言模型:使用神经网络(如RNN, LSTM, Transformer)来建模更复杂的、长距离的依赖关系,通常比N-gram模型性能更好,但计算成本也更高。
发音词典
- 目的:建立文字到发音的桥梁,它是一个字典,记录了每个词(或字)的标准发音,由一系列音素组成。
- 作用:在传统方法中,它连接了声学模型(输出音素)和语言模型(输入文字),在端到端模型中,这个角色被网络内部的结构所取代,但其概念仍然存在。
在线识别阶段
这个阶段是用户实际使用语音识别服务时,系统运行的过程,目标是实时或近实时地将用户的语音转换为文本。
前端处理
- 目的:对输入的原始音频进行预处理,去除噪声和干扰,并进行分帧。
- 主要步骤:
- 降噪:使用各种算法(如谱减法、维纳滤波)去除背景噪声。
- 语音活动检测:判断哪些时间段包含有效语音,哪些是静音或噪声,这样可以静音时不进行识别,节省计算资源。
- 分帧与加窗:将连续的音频流切分成一个个短小的帧(通常每帧20-40毫秒),并在帧两端加上窗函数(如汉明窗),以减少频谱泄露。
特征提取
与训练阶段使用相同的算法和参数,将实时音频帧转换为特征向量序列。
解码
这是识别阶段的核心,也是最复杂的部分,解码器的作用是:

-
结合声学模型的输出(每个时间点对应各个发音单元的概率)。
-
结合语言模型的输出(各个词序列的概率)。
-
通过发音词典(在传统方法中)或端到端模型的结构,寻找一条总的概率最大的路径,即最可能的文本输出。
-
解码算法:
- 维特比算法:在HMM-based系统中,用于找到最可能的状态序列。
- 束搜索:在端到端模型中常用的一种启发式搜索算法,它不像暴力搜索那样遍历所有可能性,而是在每一步只保留概率最高的几个候选路径(形成一个“束”),从而在保证一定质量的前提下,大大降低计算复杂度,实现实时解码。
后处理
- 目的:对解码器输出的原始文本进行优化和格式化,使其更符合人类的使用习惯。
- 常见操作:
- 数字和单位格式化:将 "yi ling ling er" 转换为 "2025"。
- 标点符号恢复:自动添加逗号、句号等。
- 专有名词识别:根据特定领域知识,对地名、人名等进行修正。
- 结果平滑:对一些识别结果进行微调,使其更通顺。
现代端到端系统的简化视图
随着深度学习的发展,特别是Transformer架构的兴起,现代语音识别系统越来越趋向于“端到端”,这种架构极大地简化了传统流程:
[语音信号] -> [前端处理] -> [特征提取] -> [统一的端到端模型] -> [识别文本]
这个统一的模型(如RNN-Transducer或基于Transformer的模型)内部已经隐式地学习了声学信息、发音规则和语言规律,训练时,只需要将音频和对应的文本直接喂给模型进行监督学习即可,不再需要分别训练和组合多个独立的模块。
| 阶段 | 核心模块 | 主要任务 | 关键技术/模型 |
|---|---|---|---|
| 离线训练 | 数据处理 | 准备和标注海量数据 | 人工标注、爬虫 |
| 特征提取 | 定义语音特征 | MFCC, Fbank | |
| 声学模型 | 学习声音到文字的映射 | HMM, DNN-HMM, CTC, Attention, RNN-T | |
| 语言模型 | 学习语言统计规律 | N-gram, NNLM, Transformer | |
| 发音词典 | 建立文字到发音的映射 | 文本-音素对齐 | |
| 在线识别 | 前端处理 | 音频预处理 | 降噪, VAD, 分帧 |
| 特征提取 | 实时特征转换 | 与训练阶段相同 | |
| 解码 | 寻找最优文本路径 | 束搜索, 维特比算法 | |
| 后处理 | 结果优化与格式化 | 数字格式化, 标点恢复 |
理解这个系统结构,有助于我们明白语音识别技术为何能取得今天的成就,以及未来可能的发展方向(如更强大的上下文理解、多模态融合等)。
