Skip to content

语音识别 ASR

ASR(Automatic Speech Recognition,自动语音识别)将语音转为文字,是语音助手、实时字幕、会议记录的技术基础。它是 语音与音频技术概览 中”耳朵”这一侧的核心,也是 NLP 应用的入口——转成文本后才能进入意图理解等后续环节。

ASR = 给 AI 装耳朵。 早期方法(HMM + GMM)把语音拆成一串音素,每个音素建一个统计模型,再用语言模型把音素拼成词句——像查音标字典。现代方法直接用 Transformer / Conformer 从波形端到端输出文字,模型自己学会”听”——像人一样整体理解一句话。

理解几个关键里程碑:

  • CTC 损失(2006):解决了”音频 10 秒但文字只有 30 个字”的长度不对齐问题——允许模型输出空白帧,再折叠重复,实现自动对齐(下面单独展开)。
  • RNN-T(2014):CTC 的升级版,增加了一个预测网络(prediction network),让模型在输出每个字符时能”看到”已经说过的文字,更适合流式实时识别。
  • Whisper(2022):OpenAI 用 68 万小时多语言数据训练的 Transformer,一个模型搞定多语种识别、翻译、标点——证明了大规模弱监督学习的威力。

ASR 有一个绕不开的工程难题:输入与输出的长度严重不匹配。一段音频以常用的 10ms 帧移(frame shift)提取特征时,每秒会产生约 100 个音频帧;而人正常说话每秒只说 3-5 个字。也就是说,一段 10 秒的语音会产出约 1000 个音频帧,但对应的文字可能只有 30 个字符。这 30 个字符散落在 1000 个帧里的哪些位置?传统的 HMM 方法需要人工标注每个音素的精确时间边界——标注成本极高。

CTC(Connectionist Temporal Classification,连接时序分类)用一个精巧的设计解决了这个问题。它引入两个机制:

  1. blank 符号:模型在每一帧既可以选择输出一个字符,也可以输出一个”空白”标记(blank),表示”这一帧没有有效字符”。这样,大量多余帧就被吸收成 blank,输出序列里只有少量字符帧。
  2. 折叠规则:最终把输出序列中的重复字符合并、blank 删除,得到真正的文本。例如 h-Blank-e-Blank-l-l-Blank-l-Blank-o → 先合并连续相同的字符(ll → l)→ 再删 blank → 得到 helo。

CTC 的妙处在于:不需要人工标注每个音素在音频中的时间位置,模型自己学习在哪几帧”说”字母、在哪些帧保持空白。这大大降低了数据标注成本。

不过 CTC 有一个关键假设:每一帧的输出是条件独立的,即模型输出第 N 个字符时并不参考前 N-1 个字符。这导致 CTC 可能输出”语法上说不通”的序列,因此实际系统中 CTC 徃往需要外部语言模型(Language Model, 用统计 n-gram 或神经 LM 做重评分)来纠正。RNN-T 正是为了从模型内部解决这一局限而提出的。

从统计模型到端到端深度学习,每一代都在减少人工设计的中间步骤:

音频帧数远多于输出字符,CTC 用”空白帧(blank)“和”重复折叠”来对齐:

传统 ASR 把系统拆成三块:声学模型(音频 → 音素概率)、发音字典(音素 → 词)、语言模型(词 → 合理句子)。其中声学模型经历了从 GMM 到 DNN 再到端到端的演化,核心动机是”用更强的函数去逼近 P(音素 | 音频)”:

为什么传统方法要做音素级建模? 音素(phoneme)是语言中最小的发音单位,数量非常有限——英语约 40 个音素,汉语拼音有约 60 个声母韵母组合。相比直接对成千上万个汉字或词建模,对几十个音素建统计模型在计算上是可行的(1980s 的算力约束),然后用发音字典把音素拼回词。GMM(Gaussian Mixture Model,高斯混合模型)用一组高斯分布来拟合”这个音素长什么样”,但它本质上只能建模浅层的、线性的特征分布。

DNN-HMM 混合系统的革命性在于:保留 HMM 做时间对齐,但把 GMM 替换为深度神经网络——DNN 能学习非线性、层次化的特征,用同一份 MFCC/filterbank 输入,准确率大幅提升。2012 年微软发布的论文证明 DNN-HMM 把商业 ASR 的词错率降低了 30%,直接引爆了语音行业的深度学习革命。然而 DNN-HMM 仍然依赖发音字典和外部语言模型,管线复杂、错误会逐级累积——这就是端到端模型(CTC、RNN-T、Attention/Transformer)登场的动机。

RNN-T:为流式识别而生的 CTC 升级版

Section titled “RNN-T:为流式识别而生的 CTC 升级版”

RNN-T(RNN Transducer,循环神经网络转导器)在 CTC 基础上增加了一个 prediction network(预测网络)。CTC 只看当前声学帧就决定输出什么,而 RNN-T 同时看”当前声学特征 + 已经输出的历史文字”,因此能避免输出前后矛盾的文本。

三个组件分工明确:

  • Encoder(编码器):对音频做声学编码,类似于 CTC 的声学模型部分。
  • Prediction Network(预测网络):对”已经输出的文本历史”建模,相当于内置了一个语言模型——这是 CTC 所没有的。
  • Joint Network(联合网络):把声学向量和文本向量融合(通常做简单的相加 + 非线性),再投影到词表分布。

RNN-T 的关键优势是流式友好:模型每收到一段音频帧就可以增量地输出新字符,而不需要等到整段音频结束——这正是实时字幕、语音助手这类延迟敏感场景所需要的。这也是为什么 Google Pixel 的”实时字幕”、Android 的 Gboard 语音输入都采用 RNN-T 架构。相比之下,Whisper 用的 seq2seq + attention 通常需要看完整段音频才能给出结果,更适合离线场景。

Conformer:局部 + 全局建模的黄金组合

Section titled “Conformer:局部 + 全局建模的黄金组合”

Conformer(Convolution-augmented Transformer,2020 年 Google 提出)是目前工业级 ASR 最主流的编码器架构。它结合了两种互补的能力:Transformer 的 self-attention 擅长建模长距离全局依赖(比如一个长句开头和结尾的呼应),CNN 的卷积层擅长捕捉局部模式(比如一个爆破音在几帧内的能量突变)。Conformer block 的结构是 FFN → Multi-Head Self-Attention → Convolution → FFN,相当于 Macaron-Net 风格的”夹心三明治”。

后来 NVIDIA 在 Canary-1B / Parakeet TDT 中采用的 FastConformer 进一步把卷积做成了 8 倍下采样的”因子化卷积”——前几层快速缩减序列长度(从 100 帧/秒 降到约 12.5 帧/秒),让后续 attention 层的计算量下降 8 倍,是工业部署的关键优化。

import torch # 导入 PyTorch
from transformers import pipeline
# 加载 Whisper 预训练模型(中文识别效果优秀)
asr = pipeline("automatic-speech-recognition",
model="openai/whisper-small")
# 传入音频文件路径(支持 wav/mp3,采样率自动重采样到 16kHz)
result = asr("example.wav", generate_kwargs={"language": "chinese"})
print("识别结果:", result["text"])
# 也可传入 numpy 数组(配合 librosa 加载任意音频)
# y, sr = librosa.load("audio.wav", sr=16000)
# result = asr({"raw": y, "sampling_rate": sr})

💡 Whisper 模型下载后即可离线运行。whisper-small 约 5GB,追求效果可换 whisper-large-v3,追求速度可用 whisper-tiny。如果需要同时跑多个文件,可用 batched 推理库(如 faster-whisper),在 GPU 上可提速 4-8 倍。

Whisper 完整流程:音频加载 → 特征提取 → 识别

Section titled “Whisper 完整流程:音频加载 → 特征提取 → 识别”
# pip install transformers librosa torch
import numpy as np
import librosa
from transformers import pipeline
# 第一步:加载音频并统一采样率(Whisper 期望 16kHz 单声道)
audio_path = "example.wav"
y, sr = librosa.load(audio_path, sr=16000) # 自动重采样 + 混为单声道
print(f"音频时长: {len(y) / sr:.1f} 秒")
# 第二步:提取声学特征(Mel 频谱是 Whisper 内部的模型输入,这里展示中间产物)
mel = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=80,
n_fft=400, hop_length=160)
mel_db = librosa.power_to_db(mel, ref=np.max) # 转为分贝刻度
print(f"Mel 频谱形状: {mel_db.shape}") # (80 个 Mel 频带, 时间帧数)
# 第三步:加载 Whisper 进行识别(内部流程:对数 Mel → Encoder → Decoder)
asr = pipeline("automatic-speech-recognition", model="openai/whisper-small")
result = asr({"raw": y, "sampling_rate": sr},
generate_kwargs={"language": "chinese"})
print("识别结果:", result["text"])
# pip install jiwer — 语音识别标准评估库
from jiwer import wer, cer
# 人工转写(gold 标准文本)与模型识别输出
reference = "今天天气很好 我们出去散步"
hypothesis = "今天天气很好 我们出去散步"
# 中文没有空格分词,直接按字符计算 CER(Character Error Rate,字符错误率)
char_err = cer(reference, hypothesis)
print(f"字符错误率 CER: {char_err * 100:.2f}%") # 0% 表示完全正确
# 英文场景则用整句按词计算 WER(Word Error Rate,词错率)
# err = wer("the weather is nice today", "the weather is good today")

💡 CER 与 WER 的选择:本质上都是编辑距离(Levenshtein distance)除以参考长度,区别只是”粒度”。

  • WER(词错率)适合英文等用空格分词的语言:"the cat sat" 拆成 3 个词来比对,替换/删除/插入都以”词”为单位计数。优点是直观(一个错词 ≈ 一个口语错误),缺点是英文中错一个标点或一个功能词(“a/the”)也算一个错。
  • CER(字符错率)适合中文/日文等无空格分隔符的语言:直接按汉字比较,避免了”该用什么分词器”的争议,颗粒度也更细。业界报告中文 ASR 时普遍用 CER。

两者数值上不可直接换算——同样一句话 CER 通常显著低于 WER(因为错一个字只是错一个字,而错一个英文词可能被算作整个词都错)。测试集应覆盖多种口音、噪声和语速,单独一句话不能代表模型真实水平。

Whisper 之后,ASR 领域进入了”专业化分工 + 语音原生大模型”两条路线并行的阶段。

路线一:更快、更准、更轻的专用 ASR

Section titled “路线一:更快、更准、更轻的专用 ASR”

大规模通用模型(如 Whisper large-v3)虽强,但部署成本高。社区与工业界围绕”同等质量下更快更省”做了大量优化:

  • Whisper large-v3-turbo(2024):OpenAI 在原 large-v3 基础上做了知识蒸馏(distillation),把 decoder 层数从 32 减到 4,推理速度提升约 8 倍,质量在多数任务上接近原版。这是目前”质量/速度”性价比最高的开源 Whisper 变体之一,适合 GPU 资源有限的实时场景。
  • Distil-Whisper:HuggingFace 社区的蒸馏项目,将 Whisper decoder 压缩到原来的 1/2 到 1/3 大小,推理快约 6 倍,专门针对英语长音频转写优化。
  • WhisperX:在 Whisper 之上增加了词级时间戳(word-level timestamp)对齐和说话人分离(speaker diarization),使得输出可以直接用于字幕制作、会议纪要——这两项功能是原生 Whisper 的弱项(Whisper 只给段级时间戳,不做说话人识别)。
  • Moonshine(2024, Useful Sensors):专为边缘设备设计的超轻量 ASR,模型仅数十 MB 级别,可在树莓派、微控制器等算力极弱的设备上实时运行,目标是用”够用就行”的质量换取可在端侧离线部署的能力。
  • NVIDIA Canary-1B / Parakeet TDT(2024):基于 FastConformer 编码器的工业级模型。Canary-1B 面向多语言(支持英/德/法/西 4 语种 ASR + 互译),Parakeet TDT 面向英语高精度转写。在 HuggingFace Open ASR Leaderboard 上多项指标超越 Whisper large-v3,并且因为用了 8 倍下采样的 FastConformer,推理速度也快得多——是目前工业部署的首选之一。
  • Conformer / 分支预测器 RNN-T 的进一步演化:Parakeet TDT 的全称是”Token-and-Duration Transducer”,它在 RNN-T 框架下用一种 TDT(Token and Duration Transducer)解码机制——模型不仅预测下一个 token,还预测每个 token 会持续多少帧——进一步提升了流式场景下的延迟/质量权衡。

另一条路线是直接把语音”喂”给大语言模型,让 LLM 既理解语音又输出文字(甚至做翻译、总结、情感分析):

  • Voxtral(Meta 2025):基于 Mistral 大语言模型架构,把语音编码后直接作为 LLM 的输入 token,输出可以是转录文本,也可以是翻译、摘要、问答。一个模型同时承担 ASR + 语音翻译 + 语音问答,体现了”统一多模态大模型”取代专用 ASR 管线的趋势。
  • 更广义地,2024-2025 年出现了 GPT-4o、Gemini 等原生多模态模型,它们内部并不一定走传统 ASR 路线,而是把语音视为一种与图像/文本并列的输入模态,由统一的 Transformer 直接处理。

这两条路线并不互斥:专用 ASR 在延迟、成本、可控性上仍有不可替代的优势(实时字幕、呼叫中心转写),而语音原生大模型在多任务理解和零样本能力上走得更远。未来的系统更可能是”专用 ASR 做前端 + LLM 做后端理解”的混合形态。

  • 实时字幕:YouTube、B 站、Zoom 会议自动生成字幕,结合说话人分离可区分不同发言者(WhisperX 这类工具让”字幕 + 说话人标签 + 词级对齐”成为标配)。
  • 会议记录:飞书妙记、Otter.ai 自动转写并总结会议要点,会后一键生成纪要;词级时间戳让用户可以跳到任意发言点回放。
  • 语音助手:Siri、小爱同学、Google Assistant——“打电话给妈妈”首先经 ASR 转文本,再进入意图理解。流式 ASR(如 RNN-T)让助手能在你说完后立刻响应。
  • 语音搜索:淘宝、微信搜索框旁的麦克风图标,让你不用打字就能搜索。
  • 听写输入法:讯飞输入法、苹果听写,用 ASR 实现连续语音转文字,速度超过手打;端侧轻量模型(如 Moonshine)让听写可以完全离线运行,保护隐私。
  • 呼叫中心质检:把客户来电实时转写,配合 NLP 做情绪检测、关键词检索,是客服质量监控的核心管线。
类库语言说明
OpenAI WhisperPython开源多语言 ASR 模型,支持 99 种语言识别和翻译
faster-whisperPython基于 CTranslate2 的 Whisper 高速推理引擎,GPU 上可快 4-8 倍
WhisperXPython增加词级时间戳对齐与说话人分离的 Whisper 增强管线
NVIDIA NeMoPythonCanary-1B / Parakeet TDT / FastConformer 的官方框架,工业部署首选
HuggingFace TransformersPython提供 Wav2Vec2、Whisper 等预训练 ASR 模型,pipeline 接口极简
ESPnetPython端到端语音处理工具包,支持 Conformer、RNN-T 等前沿 ASR 架构
KaldiC++/Shell经典 HMM 时代工业级 ASR 工具包,至今仍是许多系统的基座
torchaudioPythonPyTorch 官方音频库,提供 ASR 模型(如 Emformer)和数据增强
SpeechRecognitionPython轻量库,统一封装 Google/Bing/IBM 等云端 ASR API
术语英文解释
连接时序分类CTC (Connectionist Temporal Classification)解决输入输出长度不对齐的损失函数,通过 blank 符号和折叠规则实现自动对齐,无需帧级标注
RNN-TRNN TransducerCTC 的升级版,由 Encoder + Prediction Network + Joint Network 组成,结合声学特征与历史文本,适合流式识别
预测网络Prediction NetworkRNN-T 中对已输出文本历史建模的子网络,相当于内置语言模型
联合网络Joint NetworkRNN-T 中融合声学向量与文本向量的组件,输出下一字符分布
音素Phoneme语言中最小的发音单位,英语约 40 个、汉语拼音约 60 个声韵母组合
声学模型Acoustic Model把音频特征映射到音素/字符概率的模型,传统 ASR 的核心组件
GMMGaussian Mixture Model用一组高斯分布拟合音素特征分布的经典统计模型,HMM 时代的主力
语言模型重评分LM Rescoring用外部语言模型对 ASR 候选结果重新打分,提升语言流畅度
解码Decoding从模型输出概率中搜索最优文本的过程,常用 beam search
词错率WER (Word Error Rate)英文 ASR 标准评估指标,按词计算编辑距离除以参考词数
字符错率CER (Character Error Rate)中文/日文等无空格语言的常用指标,按字符计算编辑距离
说话人分离Speaker Diarization判断”谁在什么时间说了什么”,会议转写的关键前置步骤
词级时间戳Word-level Timestamp为每个输出词标注精确起止时间,字幕制作和回放定位的基础
热词Hotword为提升特定词(如人名、产品名)识别率而配置的加权词表
FastConformerFastConformerConformer 的工业优化版,用因子化卷积做 8 倍下采样以大幅降低计算量
  • CTC 损失函数:Graves, A., Fernández, S., Gomez, F., & Schmidhuber, J. (2006). Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks. ICML. —— 端到端 ASR 的奠基性工作。
  • RNN-T:Graves, A. (2012). Sequence Transduction with Recurrent Neural Networks. ICML Representation Learning Workshop. —— RNN Transducer 的原始论文,首次提出 prediction network + joint network 的架构。
  • DNN-HMM 混合系统:Dahl, G. et al. (2012). Context-Dependent Pre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition. IEEE Trans. on Audio, Speech, and Language Processing. —— 微软的工作引爆了语音行业的深度学习革命。
  • Whisper:Radford, A. et al. (2022). Robust Speech Recognition via Large-Scale Weak Supervision. OpenAI 技术报告。 —— 68 万小时多语言弱监督预训练,证明了大规模数据的威力。
  • Wav2Vec2:Baevski, A. et al. (2020). wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations. NeurIPS. —— 自监督语音预学习的里程碑。
  • Conformer:Gulati, A. et al. (2020). Conformer: Convolution-augmented Transformer for Speech Recognition. Interspeech. —— 结合 CNN 局部建模与 Transformer 全局建模的主流 ASR 架构。
  • Whisper large-v3-turbo:OpenAI (2024). Whisper large-v3-turbo 模型卡。 —— 8 倍加速、质量接近 large-v3 的蒸馏版本。
  • NVIDIA Canary-1B:Mdhaffar, A. et al. (2024). Canary-1B: A Multilingual Model for Automatic Speech Recognition and Translation. NVIDIA 技术报告。 —— FastConformer 工业级多语言 ASR。
  • Moonshine:Useful Sensors (2024). Moonshine: Fast and Accurate On-device Speech Recognition. —— 面向边缘设备的超轻量 ASR。
  • Voxtral:Maiti, S. et al. (2025). Voxtral: Efficient Language Model for Speech Understanding. Meta AI. —— 基于大语言模型架构的多语言语音理解模型。
  • 延伸路线:ASR 的”对口”任务是 语音合成 TTS,两者构成语音交互闭环。