Skip to content
Published on

SOTA 语音识别与合成解析 — 从 Whisper 到编解码器语言模型

分享
Authors

引言

语音技术早已深深融入我们的日常生活。手机的语音听写、会议记录的自动生成、导航的语音播报、有声书的朗读,全都是语音识别(ASR, Automatic Speech Recognition)与语音合成(TTS, Text-to-Speech)的产物。

近几年,这一领域借助深度学习、尤其是大规模预训练与 Transformer 的力量取得了巨大飞跃。识别方面出现了 Whisper 这类大规模弱监督模型;合成方面则出现了难以与真人区分的自然语音,以及仅凭简短样本就能复刻声音的编解码器语言模型。

本文沿着语音识别与合成的脉络,审视其核心架构与原理。由于 AI 的 SOTA 变化非常快,本文更侧重概念与结构,而非具体排名或数值,并且只对确切了解的模型与论文下断言。

全局:发展脉络

在深入细节之前,先一览语音技术发展的整体脉络。

[语音识别(ASR)脉络]
 HMM/GMM  ->  DNN声学模型  ->  CTC/注意力端到端  ->  Whisper大规模弱监督

[语音合成(TTS)脉络]
 拼接/参数化  ->  Tacotron+神经声码器  ->  神经编解码器  ->  编解码器语言模型

整体趋势可以归纳为两点。第一,从多个部件手工组装的方式,转向了用数据端到端学习的方式。第二,随着数据规模增大、表示形式趋向 token 化,识别与合成都开始共享与大语言模型相似的工具。下面依次审视每个阶段。

语音识别(ASR)的脉络

从声音到文字

语音识别的目标是把语音波形转换为文本。问题的本质在于,把连续的声音信号对齐到离散的文字序列。声音随时间流动,发音速度也因人而异,因此判断哪个声音区间对应哪个文字,是核心难题。

[语音波形]  ~~~~~~/\/\~~~~/\~~~~~
     |  特征提取 (例如: 梅尔频谱图)
     v
[声学特征]  逐帧向量序列
     |  声学模型 + 对齐
     v
[文本]     "你好"

HMM 时代

早期语音识别由隐马尔可夫模型(HMM, Hidden Markov Model)与高斯混合模型(GMM)的组合主导。声学模型把声音特征映射到音素状态,发音词典把音素映射到单词,语言模型给单词序列打分——这是多个部件组合而成的系统。

这种方式长期作为标准,但部件繁多、各自需要单独构建,因此相当复杂。后来深层神经网络(DNN)取代了声学模型中的 GMM,性能大幅提升,并逐渐开启了向端到端(end-to-end)神经网络转变的趋势。

CTC:对齐问题的突破口

端到端神经网络语音识别的重要转折点是 CTC(Connectionist Temporal Classification)。CTC 让模型无需逐一对齐声音帧与文字即可完成训练。

核心思路是引入空白(blank)token,并将所有可能对齐路径的概率相加,从而计算出最终文本的概率。

帧:      f1  f2  f3  f4  f5  f6
路径1:   你  你  _   好  _   好
路径2:   _   你  _   好  好  _
         (_ 为空白 token,合并重复/空白后得到 "你好")

对所有有效路径的概率求和 -> "你好" 的概率

得益于 CTC,即便没有逐帧对齐的标签,仅凭声音与文本的配对也能完成训练。不过 CTC 假设各输出彼此独立,存在局限,若要反映语言层面的上下文,往往需要与单独的语言模型结合使用。

基于注意力机制的编码器-解码器

另一条脉络是基于注意力机制的编码器-解码器。编码器把声音转换为表示,解码器通过注意力挑选所需的声音区间,逐字生成文本。Transformer 出现后,这一结构变得大为强劲。

CTC 与注意力机制相互互补,因此同时使用两者的混合结构也被广泛采用——由 CTC 稳定地把握单调对齐,再由注意力灵活地反映上下文。

Whisper:大规模弱监督学习

Whisper 的核心

Whisper 是 OpenAI 公开的语音识别模型,发表于论文《Robust Speech Recognition via Large-Scale Weak Supervision》(arXiv 2212.04356)。正如其名,核心在于大规模弱监督(weak supervision)学习。

Whisper 的特点在于,它使用从网络上收集的海量(据称达数十万小时规模)语音-文本配对数据进行训练。这证明了即便标签并不完美,只要数据量足够大,也能训练出稳健的模型。

[从网络收集的大规模语音-文本]
 涵盖多种语言、口音、噪声、领域
              |
              v
[Transformer 编码器-解码器]
 log-mel 频谱图输入 -> 编码器
 文本 token 输出 <- 解码器 (注意力)
              |
              v
[单一模型执行多种任务]
 多语言识别、翻译、语言识别、时间戳

多任务结构

Whisper 的另一个特点是单一模型可以处理多种任务。通过特殊 token 给出「识别当前语言」「翻译成英语」「加上时间戳」之类的指示,同一个模型就能执行相应任务。得益于这种多任务设计,无需额外部件即可用一个模型处理多种功能。

Whisper 的强项在于稳健性,据称在嘈杂环境或不同口音下也能相对良好地运作。不过就基本结构而言,它并不直接适合实时流式处理,而且在长音频上也有可能出现幻觉(hallucination)或重复的问题。

流式 vs 离线

语音识别大致有两种使用场景。

[离线(批处理)识别]
 接收完整音频后再识别
 - 优点: 可利用前后全部上下文,精度有利
 - 用途: 会议记录、字幕生成、播客转写

[流式(实时)识别]
 声音一进来就立即识别
 - 优点: 延迟短
 - 限制: 看不到未来的上下文,需要修正部分结果
 - 用途: 实时字幕、语音助手、通话识别

像 Whisper 这样的编码器-解码器离线模型在精度上占优,但延迟较大。相反,流式场景更适合只稍微窥探未来、或完全不看未来的结构(例如 transducer 系列)。实务中会根据用途分别采用这两种方式。

提升稳健性的训练技巧

实际环境中的语音夹杂着噪声、混响以及各式各样的麦克风特性,十分「杂乱」。只用干净数据训练出的模型,在这种环境下性能会大幅下滑。因此,通过数据增强(data augmentation)刻意让训练数据变得多样化的技巧被广泛使用。

[常见的语音数据增强]
 - 速度/音高变形: 略微改变语速或音高
 - 添加噪声: 混入背景噪声、混响
 - SpecAugment: 遮盖频谱图中的部分时间/频率区间
 - 音量/增益变形: 让音量多样化

尤其是 SpecAugment,这是一种在梅尔频谱图上遮盖部分时间轴与频率轴的简单技巧,却大幅提升了语音识别性能,因而被广泛采用。像 Whisper 那样用大规模、多样化的数据训练,本身也可以看作是提升稳健性的一种方法。数据越能充分涵盖真实环境的多样性,模型在部署后就越经得起考验。

语音合成(TTS)的演进

早期:拼接合成与参数化合成

早期 TTS 有两种路线:拼接事先录制的语音片段的拼接合成(concatenative),以及用统计模型生成语音特征的参数化合成。拼接合成能以特定说话人的声音听起来自然,但灵活性低;参数化合成灵活,但听起来带有机械感。

Tacotron:端到端神经网络 TTS

深度学习 TTS 的转折点是 Tacotron 系列。Tacotron 接收文本输入,通过基于注意力机制的序列到序列(sequence-to-sequence)模型生成梅尔频谱图(声音的时间-频率表示)。随后由声码器(vocoder)把梅尔频谱图转换为实际波形。

[文本]
   |  文本编码器 + 注意力解码器 (Tacotron 系列)
   v
[梅尔频谱图]  声音的时间-频率表示
   |  声码器 (波形生成)
   v
[语音波形]

这种「文本 → 梅尔频谱图 → 波形」的两阶段结构,长期以来一直是神经网络 TTS 的标准范式。

神经声码器

把梅尔频谱图转换为波形的声码器,其质量决定了最终音质。早期的 WaveNet 能发出非常自然的声音,但由于逐个样本生成,速度极慢。此后,能够并行生成的多种声码器(例如基于 flow、基于 GAN 的系列)相继出现,在保持音质的同时实现了快得多的合成速度。在实务中被广泛使用的基于 GAN 的声码器系列,凭借速度与音质之间的平衡而广受欢迎。

韵律与风格控制

优秀的语音合成,不能只满足于发音清晰,还要承载自然的韵律(prosody)。韵律指的是语调、重音、节奏、停顿这类决定句子「语感」的要素。同一句话,根据韵律的不同,可以听起来像疑问、像陈述,也可以听起来像惊讶。

[韵律控制的例子]
 "真的吗"
   - 平缓的语调 -> 淡然的反应
   - 尾音上扬的语调 -> 惊讶的疑问
   - 带重音的语调 -> 强烈的感叹

 相同的文字,不同的韵律 -> 不同的含义/情感

早期 TTS 难以精细控制韵律,但最近的模型可以把参考语音、风格 token、情感标签等作为条件,在一定程度上调节韵律与说话人风格。编解码器语言模型的零样本(zero-shot)复刻,也具有连带模仿参考语音韵律的特性,因此仅凭简短样本就能有利地再现特定说话人的语气。

神经音频编解码器

把音频变成 token

最新语音合成的核心材料是神经音频编解码器(neural audio codec)。神经编解码器是一种用神经网络压缩音频的技术,能把连续的声音转换为离散的 token 序列。

[连续音频波形]
   |  编码器
   v
[向量量化(VQ)]  -> 离散 token 序列 (音频的"单词")
   |  解码器
   v
[还原后的音频波形]

关键在于,通过残差向量量化(RVQ, Residual Vector Quantization)之类的技术,把音频表示为多层离散代码。这样一来,音频也和文本一样变成了 token 序列。具有代表性的神经编解码器包括 SoundStream、EnCodec 系列。

一旦音频变成了 token,就可以让语言模型像预测文本 token 一样预测音频 token。这正是接下来要看的编解码器语言模型的出发点。

编解码器语言模型:VALL-E 系列的概念

把语音合成变成语言建模

用神经编解码器把语音 token 化之后,可以把 TTS 重新定义为「预测下一个音频 token」的问题。也就是说,把文本和一段简短的参考语音作为条件,语言模型就会生成以该说话人声音延续下去的音频 token。这一方向具有代表性的概念是 VALL-E 系列。

[文本]  +  [简短的参考语音 (3 秒示例)]
              |  用编解码器 token 化
              v
[条件: 文本 token + 参考语音 token]
              |  语言模型 (预测下一个音频 token)
              v
[生成的音频 token 序列]
              |  编解码器解码器
              v
[以参考说话人声音合成的语音]

零样本语音复刻

编解码器语言模型令人印象深刻的能力是零样本(zero-shot)语音复刻。无需另行再训练,仅凭几秒钟的参考语音,就能模仿这个人的声音特征(音色、语调)来合成新的句子。这种性质,与把简短的参考当作上下文(context)、并据此续接生成的上下文学习(in-context learning)相似。

这种方式仅用少量数据就能打造个性化的声音,十分强大,但随之而来的,是后文将谈到的伦理风险也在同步增大。

与基于扩散的方法并存

除了编解码器语言模型(自回归)之外,基于扩散(diffusion)或基于流匹配(flow matching)生成语音的方法也十分活跃。自回归是按顺序逐个生成 token,而扩散系列则是从噪声中逐步生成语音。两者各有优劣,正并存发展。

零样本语音复刻与伦理

零样本语音复刻在无障碍应用(例如为声带疾病患者再现声音)以及内容创作方面具有很大的价值。但与此同时,也伴随着严重的风险。

  • 冒充与诈骗:用他人的声音欺骗熟人的语音钓鱼、金融诈骗风险增大。
  • 未经同意的复刻:未经本人同意复刻声音,可能构成肖像权/人格权侵害。
  • 深度伪造语音:把虚假发言做得以假乱真,可能误导舆论。

正因存在这些风险,许多研究与服务都强调同意确认、水印(在生成的音频中植入识别信号)以及使用限制政策。在运用这项技术时,应当把这些安全防护和责任,和技术能力本身放在同等重要的位置一并考虑。

多语言支持

语音技术的一大重要课题是多语言与低资源语言支持。世界上有数千种语言,但训练数据丰富的语言只占少数。

像 Whisper 这样用大规模多语言数据训练出的模型,具有用一个模型处理多种语言的优势。语言之间的知识得以共享,数据稀少的语言也能借助相关语言的帮助。不过,在数据极度稀少的低资源语言上,性能依然会下降,代码切换(code-switching,一句话中混用多种语言)与方言处理,也仍然是难题。

把声音变成特征:梅尔频谱图

我们再进一步看看前面多次出现的梅尔频谱图。语音信号是由每秒数万个采样点构成的长波形。与其把它直接丢进神经网络,更常见的做法是通过预处理,把它转换为契合人类听觉特性的特征。

[语音波形]  随时间变化的振幅
   |  切成短时区间后做傅里叶变换 (STFT)
   v
[频谱图]  时间 x 频率的能量图
   |  应用契合人类听觉的梅尔刻度
   v
[梅尔频谱图]  时间 x 梅尔频率

梅尔刻度反映了人类对低频差异更敏感、对高频差异较不敏感的特性。因此梅尔频谱图相比原始频谱图,在听觉意义上是更有意义的表示。识别与合成都常常把这种表示用作中间桥梁。不过最近,直接处理波形、或使用前面提到的神经编解码器 token 的方向,也在同步发展。

评估指标

识别评估:WER

语音识别性能主要用词错误率(WER, Word Error Rate)来衡量。把标准答案句子与识别结果做比较,数出被替换、被删除、被插入的单词数,再计算为比例。

WER = (替换 + 删除 + 插入) / 标准答案单词数

- 数值越低越好 (越接近 0 越准确)
- 对于韩语/日语这类分词标准不同的语言,
  有时也会一并参考字符错误率(CER)

WER 很有用,但也有局限。它把无伤大雅的小错误和会改变句意的致命错误一视同仁地计数,因此不一定总与实际可用性一致。所以,根据用途的不同,人工评估或下游性能(例如根据识别结果命令是否能被正确执行)也会一并纳入考量。

合成评估:MOS

语音合成的自然度主要用平均意见得分(MOS, Mean Opinion Score)来衡量。人类评估者听完合成语音后,给自然度打 1 到 5 分,再取平均值。最近也开始使用模仿人工评估的自动化指标,但合成音质的最终判断,依然高度依赖人工听感评估。

实务流水线示例

整理一下把语音技术投入实际服务时的典型流程。

[语音识别服务流程]
 1. 音频输入 (麦克风/文件)
 2. 预处理 (重采样、归一化、特征提取)
 3. ASR 模型推理 (Whisper 等)
 4. 后处理 (标点恢复、数字归一化、过滤)
 5. 结果应用 (字幕、指令处理、搜索等)

[语音合成服务流程]
 1. 文本输入
 2. 文本归一化 (把数字/缩写/符号转换为朗读形式)
 3. TTS 模型推理 (Tacotron/编解码器 LM 等)
 4. 后处理 (音量归一化、静音整理)
 5. 音频输出/流式传输

前后处理对实际使用品质的影响尤其大。举例来说,在识别中标点符号与数字归一化决定着可读性;在合成中,一旦文本归一化出错,数字或缩写就会被读错。打磨这些周边处理,和打磨模型本身同样重要。

对比:各类方法一览

类别代表概念优势注意点
ASR HMM/GMM声学+发音+语言模型组合历经长期验证、易于解释部件多、复杂
ASR CTC空白 token 对齐、端到端训练无需对齐标签假设输出相互独立
ASR 注意力编码器-解码器灵活反映上下文用于流式场景需要调整
ASR Whisper大规模弱监督多任务稳健、多语言流式/长音频存在局限
TTS Tacotron+声码器文本->梅尔->波形合成自然两阶段流水线
TTS 编解码器 LM音频 token 预测零样本复刻伦理风险大

上表只是概念层面的比较,各种方法都在持续演进,具体优劣会因情况而异。

说话人分离与附加任务

实际音频中经常混有多个人说话的情况。在会议记录或通话转写场景中,需要用说话人分离(speaker diarization)来区分「谁在何时说了话」。

[说话人分离流程]
 音频
   |  语音活动检测 (VAD, 区分语音/静音)
   v
 语音片段
   |  提取说话人嵌入 + 聚类
   v
 "说话人A: 0~5秒,说话人B: 5~9秒 ..." 标签

这里的关键工具是说话人嵌入(speaker embedding)。把声音特征转换为向量,并训练成同一个人的发话对应相近的向量。这正是前面嵌入相关文章中出现过的对比学习(contrastive learning)思路,应用到语音领域的一个例子。除了说话人分离之外,情感识别、语言识别、语音活动检测(VAD)等附加任务,也一并出现在实务流水线中。

语音对语音与统一模型

传统上,语音助手分为三个阶段:用 ASR 把声音转成文字,用 LLM 生成回答,再用 TTS 把文字重新变回声音。然而这种方式阶段繁多,延迟较大,中间还会丢失情感、语调之类的信息。

[分阶段语音对话]
 声音 -> ASR -> 文字 -> LLM -> 文字 -> TTS -> 声音
        (情感/语调信息可能在中途消失)

[统一式语音对语音]
 声音 -> [单一模型] -> 声音
        (能更自然地保留语调、笑声、情感)

因此,最近正在研究把声音直接连到声音的统一语音对语音(speech-to-speech)模型。前面提到的神经编解码器 token,在这里同样是核心材料——只要能把音频当作 token 来处理,就可以设想一个用同一套方式处理文本与音频的统一模型。不过这类统一模型仍在发展之中,在延迟、质量、可控性方面还有许多有待解决的课题。

整体流程图

把语音识别与合成整理成一张图,如下所示。

[语音输入]
   |  ASR (Whisper 等)
   v
[文本]  <->  [LLM 处理 (可选)]
   |  TTS (Tacotron / 编解码器 LM 等)
   v
[语音输出]

语音助手: 以 ASR -> LLM -> TTS 的连接实现对话

像这样把 ASR 与 TTS 通过 LLM 连接起来,就完成了语音对话式界面。最近,试图把这三个阶段统合进单一模型的语音对语音(speech-to-speech)方法也在被研究。

端侧部署与轻量化

不依赖云端、直接在设备内部处理语音的需求也很大。因为延迟短、无需联网即可运行,而且语音数据不会离开设备,有利于隐私保护。

[云端 vs 端侧]
 云端: 大模型,高精度 / 延迟·成本·隐私负担
 端侧: 小模型,低延迟 / 性能受限,需要优化

要实现端侧部署,需要通过轻量化让模型变小。常用的技术包括降低权重精度的量化(quantization)、让小模型模仿大模型的知识蒸馏(distillation),以及去除不必要连接的剪枝(pruning)。Whisper 系列也公开了体积更小的变体,可以根据实际情况在精度与成本之间做出权衡。

局限与注意事项

  • 准确性的局限:ASR 在专业术语、专有名词、浓重口音、噪声环境下,错误会增多。用于重要场景时需要人工核查。
  • 幻觉与重复:大规模生成模型可能编造出实际不存在的话语,或重复相同的语句。
  • 实时性:精度较高的离线模型延迟较大,可能不适合实时场景。
  • 伦理与安全:语音复刻存在较大的冒充/诈骗风险,因此需要同意机制与水印之类的安全防护。
  • 时效性:这一领域的 SOTA 变化非常快。本文的说明是为了帮助理解概念,具体规格与排名仍需以官方文档为准。
  • 低资源语言:在数据稀少的语言上,性能可能大幅下降。

结语

语音技术从 HMM 时代多个部件的组合出发,经过 CTC 与注意力机制的端到端学习,一路发展到 Whisper 的大规模弱监督学习以及编解码器语言模型的零样本复刻,进步令人惊叹。

需要记住的核心要点有三个。第一,语音识别的根本课题是把连续声音对齐到离散文字,CTC 与注意力机制以端到端的方式解决了这个问题。第二,神经编解码器把音频转换为 token,使语音合成得以被重新定义为语言建模问题。第三,能力越强,语音复刻所伴随的伦理责任也就越重。AI 的 SOTA 变化很快,但这些原理与责任意识会长久有效。

参考资料