语音与实时语音
语音不是接上麦克风的文本。它是随时间展开的信号:话语带有说话人的声音特征,听者会在一句话尚未结束时作出反应,两个人也可能同时说话。批量转写系统可以等录音结束后再处理;实时字幕必须持续修正局部假设,又不能让文字频繁跳动;语音助手还要判断何时回应、何时开始输出音频,并在自己说话时继续倾听。流式处理改变了什么才算正确。
本章按这条链路展开。先从音频帧与文本之间未被标注的对齐开始,再说明学习得到的表示和神经编解码器如何减少模型需要处理的音频量,最后讨论语音生成,以及可用语音对话背后的工程契约。
把语音视为带时间的流
语音系统首先把波形转换成一串短而彼此重叠的帧。后续处理方式取决于应用:
| 工作负载 | 可以使用未来音频吗 | 首个有用输出 | 首要故障指标 |
|---|---|---|---|
| 录音转写 | 可以 | 完整转写 | 词错误 |
| 实时字幕 | 只能有限前瞻 | 稳定的局部文本 | 修改次数与延迟 |
| 轮次式语音助手 | 可以等到轮次结束 | 第一段回应音频 | 过晚或错误的轮次终点 |
| 全双工对话 | 没有固定轮次边界 | 对说话、停顿或打断作出反应 | 重叠与状态错误 |
这些区别会直接改变评测。模型的最终转写很好,局部文本却可能变化得太频繁,因而不适合实时字幕。语音合成器可以用低于音频时长的时间生成自然语音,却仍可能迟迟不能输出第一帧。因此,「实时」必须对应明确指标,不能只作为一个形容词。
学习语音识别所需的对齐
自动语音识别(ASR) 接收声学帧 和较短的转写 ,其中 是声学帧数, 是输出符号数。训练数据并不标注每个符号来自哪些帧。CTC 和 RNN-T 会对潜在的单调对齐求和;基于注意力的编码器解码器则学习编码帧与输出步骤之间的软对应。
连接主义时序分类(CTC) 加入空白符号,并为所有长度为 、折叠后等于目标转写的路径求和 (Graves et al. 2006):
这里, 是由输出符号和空白符号组成的路径, 会合并连续重复标签并删除空白。前向后向动态规划无需枚举所有路径就能计算这项求和。给定编码器输出后,标准 CTC 会将不同帧的路径输出按条件独立方式分解。它没有显式的标签历史模型,但上下文编码器仍可以利用较大范围的声学上下文,也可以选择外接语言模型。
RNN-T 进一步加入输出历史 (Graves 2012)。它的预测网络汇总此前的非空白标签,联合网络再把这个状态与声学编码器状态结合起来。在对齐网格中,空白会推进声学时间,标签则推进输出位置,因此模型可以在同一个编码器步骤发出多个标签。若编码器采用因果上下文或有限上下文,这种分解适合在线解码;但 RNN-T 本身并不保证流式处理。原始模型使用双向转写网络,后续工作才展示了因果的端侧系统 (He et al. 2019)。
Listen, Attend and Spell 这类基于注意力的编码器解码器把概率写成 (Chan et al. 2016)
其中, 是编码器状态, 是输出步骤 对该状态的注意力权重。原始系统可以关注整段话语,因此只能离线运行。单调注意力、分块注意力或有限前瞻注意力,可以用一部分未来上下文换取更低延迟。
这些对齐目标可以与多种编码器搭配。Conformer 是编码器架构,不是对齐目标。每个 Conformer 块用卷积捕捉局部声学模式,再用自注意力建模更长距离的关系 (Gulati et al. 2020)。原始版本使用完整上下文,也只能离线运行;流式实现必须限制上下文范围。
先预训练表示,再做转写
转写标注成本高,而原始音频却很充足。自监督与弱监督解决的是不同的数据问题:
| 方法 | 训练信号 | 模型预测什么 |
|---|---|---|
| wav2vec 2.0 | 无转写音频 | 从干扰项中找出被掩码时间步的量化目标 |
| HuBERT | 无转写音频与离线聚类 | 被掩码位置的聚类标签 |
| WavLM | 输入带噪声或重叠,目标来自干净语音 | 主说话人的聚类标签 |
| Whisper | 音频与带噪声的人工或机器文本配对 | 文本、语言、任务与时间戳词元 |
wav2vec 2.0 会掩掉潜在序列中的若干片段。在被掩码位置 上,上下文向量 必须从集合 中区分正确的量化目标 与干扰项 (Baevski et al. 2020):
这里, 是余弦相似度, 是温度参数。这些目标对应被掩码的时间步,并不是对未来延续的预测。在论文报告的一项低资源设置中,大模型先用 53,000 小时 Libri-Light 预训练,再用十分钟标注微调,在 LibriSpeech test-clean 与 test-other 上分别得到 4.8 和 8.2 的词错误率;论文的代表性解码器还使用了 Transformer 语言模型。
HuBERT 不做对比选择,而是预测离线聚类得到的掩码标签 (Hsu et al. 2021)。第一阶段可以从人工设计的特征聚类开始,后续阶段再用上一阶段模型产生的表示重新聚类。目标在每个训练阶段内保持固定。论文的重要发现是,即使标签并不完全对应音素,只要保持一致,仍可提供有用的学习信号。WavLM 延续这种掩码伪标签目标,但有时会给输入加入噪声或另一位说话人。目标仍来自原始主说话人的聚类标签,所以模型学习的是在干扰下识别内容,而不是重建干净波形 (Chen et al. 2022)。
Whisper 采用另一种配方:用 680,000 小时带弱监督的多语言音频文本对训练一个编码器解码器 Transformer (Radford et al. 2023)。解码器序列包含语言词元、转写或翻译任务词元、时间戳控制与正文;启用时间戳时,相应词元会穿插在转写片段两侧。其主要结果是跨留出数据集的广泛零样本迁移,而不是普遍优于针对单一领域调优的系统。
把波形转换成编解码器索引
神经编解码器把波形压缩成离散索引。编码器以每帧一个潜向量 表示音频,量化器用码本项替换每个向量,解码器再重建波形。SoundStream 建立了端到端的残差向量量化设计,并通过随机停用部分量化器支持多种比特率 (Zeghidour et al. 2021)。EnCodec 则把流式编码器解码器、残差向量量化、对抗训练和可选熵编码组合起来 (Défossez et al. 2023)。两篇论文中的质量结论都只适用于其报告的比特率、数据集和听感测试。
残差向量量化(RVQ)依次应用多个码本。对于第 帧,令 。在深度 ,选择最近的码本项,并把尚未解释的残差交给下一层:
这里, 是码本 中的第 项, 是对应索引, 是启用的量化深度。后续码本会继续描述此前码本尚未解释的部分,通常能改善重建,但也会产生更多索引。
如果编解码器每秒产生 帧,并启用 个码本,原始索引流量如下。其中, 是帧率, 是启用的码本数:
如果码本 含有 个条目,且索引使用固定宽度整数,名义数据率如下。其中, 是码本 的每个索引所需的比特数:
词元速率不等于比特率。两者都不能单独决定生成模型的解码成本,因为模型可能顺序预测不同码本,也可能并行或分组预测。
下面的确定性示例压缩一个二维帧。每个码本含四个条目,因此每个选中索引占两比特。
from math import dist, log2
target = (1.0, -0.5)
codebooks = [
[(0.0, 0.0), (0.75, -0.25), (-0.75, 0.25), (1.0, 0.0)],
[(0.0, 0.0), (0.25, -0.125), (-0.25, 0.125), (0.0, 0.25)],
[(0.0, 0.0), (0.0, -0.125), (0.0, 0.125), (0.125, 0.0)],
]
frame_hz = 50
residual = target
for depth, codebook in enumerate(codebooks, start=1):
index = min(range(len(codebook)), key=lambda i: dist(residual, codebook[i]))
chosen = codebook[index]
residual = tuple(x - q for x, q in zip(residual, chosen))
indices_per_second = frame_hz * depth
bits_per_second = indices_per_second * int(log2(len(codebook)))
print(
f"深度={depth} 误差={dist(residual, (0.0, 0.0)):.3f} "
f"索引/秒={indices_per_second} 比特/秒={bits_per_second}"
)
「语义」与「声学」描述的是作用,并不是边界清楚的二分法。自监督语音模型产生的词元往往保留语言内容,却舍弃一部分说话人和录音细节。编解码器词元要保存足够信息以重建信号,因此也必然携带内容信息。系统可以主动强化两种作用:SpeechTokenizer 把第一层 RVQ 蒸馏到接近 HuBERT 单元,后续层再补充声学细节 (Zhang et al. 2024);AudioLM 用 w2v-BERT 单元表示长程结构,再用 SoundStream 码保存保真度 (Chung et al. 2021; Borsos et al. 2023)。Descript Audio Codec 面向高保真 44.1 kHz 音频,并改善量化器利用率 (Kumar et al. 2023)。Moshi 使用的 Mimi 以每秒 12.5 帧工作,把一个语义量化器与多层声学 RVQ 结合起来 (Défossez et al. 2024)。低帧率会缩短时间轴,但实际成本仍取决于质量、码本深度与生成调度。
选择生成表示与调度
AudioLM 先建模语义单元,再建模粗粒度与细粒度声学词元。这样的层级能使样本保持更好的长程一致性,无需让一个扁平编解码器模型同时学习所有时间尺度 (Borsos et al. 2023)。文本到语音(TTS),也就是从文本合成语音的任务,还需要以转写文本为条件,通常也会给出一小段声学提示,用来指定目标声音。
VALL-E 以文本和三秒注册录音为条件,预测 EnCodec 词元。自回归阶段生成第一个码本,非自回归阶段再逐层填充残差码本,同一层内的帧位置可以并行处理 (Wang et al. 2023)。SoundStorm 使用按置信度工作的掩码解码;在作者使用 TPU v4 的设置中,半秒可生成三十秒音频 (Borsos et al. 2023)。VALL-E 2 改变了编解码器分组与采样方式,以减少重复。其「达到人类水平」只指论文在 LibriSpeech 与 VCTK 上的偏好测试,不能推广到所有说话人、语言或录音条件 (Chen et al. 2024)。
连续生成器提供了另一条路线。Voicebox 用条件流匹配填补被掩码的梅尔频谱片段,让同一个模型支持合成、编辑、去噪和风格迁移 (Le et al. 2023)。NaturalSpeech 3 则把语音拆成内容、韵律、说话人身份与声学细节,再用离散掩码扩散生成这些因素 (Ju et al. 2024)。F5-TTS 在训练中去掉显式对齐搜索和时长预测器,但推断时仍要用目标时长确定待生成片段 (Chen et al. 2024)。
| 表示与调度 | 有用特性 | 设计约束 |
|---|---|---|
| 自回归编解码器词元 | 自然支持可变长度生成 | 串行依赖可能造成重复或漂移 |
| 掩码编解码器词元 | 可以同时更新许多帧位置 | 可能需要多轮精修 |
| 在频谱图上做流或扩散 | 便于全局条件控制与编辑 | 必须选择采样调度与输出长度 |
这些路线本身既不保证流式,也不排斥流式。音频何时能够离开系统,取决于分块、因果上下文、前瞻范围和声码器。
语音克隆也要求技术设计考虑授权与来源追踪。AudioSeal 会联合训练水印生成器与检测器,并能定位嵌入信号的位置 (San Roman et al. 2024)。它是一种主动标记方法,不是通用检测器:它只能识别带有该水印的内容,不能证明未带水印的录音一定来自人类。
在增量状态上构建对话
轮次式级联系统依次连接 ASR、文本模型和 TTS。各组件容易检查和替换,文本也提供了清楚的控制边界;但如果没有额外通道,时序、重叠、发音与情绪就可能在文本边界丢失。直接的语音到语音模型保留更多信号,却更难控制和诊断。
对于完全串行的级联,首段音频延迟可以拆成
各项依次表示轮次终点检测、输入传输、语音识别、回应生成、语音合成与输出传输。真实系统会让多个阶段重叠,因此观测延迟取决于关键路径,并不总等于这项串行求和。首段音频时间必须与轮次终点规则和网络条件一起报告。实时因子用总生成时间除以音频时长,回答的是另一个问题。
全双工是一项系统契约:输入捕获与处理在回应音频播放期间仍要继续。系统需要声学回声消除,避免把自己的声音当成用户输入;还需要语音活动与轮次终点判断、打断检测、输出取消,以及回滚用户打断之后产生的文本或工具操作。「嗯哼」一类附和声同样属于输出,不能意外占据说话轮次或触发操作。
Moshi 展示了一种模型内部的实现方式。它把用户与系统音频表示为并行流,并在每一步的系统音频之前预测一段文本「内在独白」。论文报告理论延迟为 160 毫秒,实际设置约为 200 毫秒 (Défossez et al. 2024)。这些数字只描述该系统,并不是通用的对话阈值。
人类对话不是一项 200 毫秒服务等级目标。Stivers 等人研究十种语言后发现,回应时间分布的众数在 0 到 200 毫秒之间,中位偏移在 0 到 300 毫秒之间,不同语言和回应类型之间仍有很大差异 (Stivers et al. 2009)。停顿本身也可能传递意义。语音产品应当按自己的任务测量:听写、翻译、客服、辅导和闲聊对延迟的容忍度并不相同。
端到端音频产品可以提供有价值的系统证据,但公开的架构细节有限。OpenAI 报告 GPT-4o 音频的最低响应时间为 232 毫秒、平均为 320 毫秒,并称其使用一个跨音频、视觉与文本训练的网络 (OpenAI 2024)。这项报告本身不能证明系统支持全双工。语音翻译是相邻的另一类工作负载:SeamlessM4T 支持最多一百种语言的语音和文本翻译与识别,但不同任务与方向的语言覆盖范围并不相同 (Seamless Communication 2023)。Seamless Streaming 使用单调注意力做同声传译,同一工作还介绍了富有表现力的语音到语音模型 (Seamless Communication 2023)。
评测每一道边界
一个端到端分数无法指出故障发生在哪一层。除任务级听感测试外,还要保留各道边界的指标:
| 边界 | 能回答工程问题的指标 |
|---|---|
| 识别 | 词错误率、局部假设稳定性、输出延迟 |
| 编解码器 | 指定比特率下的听感质量、算法延迟、丢包鲁棒性 |
| TTS | 可懂度、说话人相似度、自然度、实时因子、首段音频时间 |
| 对话 | 轮次终点错误、打断响应、重叠处理、回声泄漏、工具取消正确性 |
| 安全 | 说话人同意、冒充测试、水印存活率与误报、语音数据保留 |
若参考转写含 个词,词错误率为
其中,、、 分别是替换、删除与插入的数量。WER 不衡量标点、说话人归属、韵律、自然度,也不说明局部转写是否及时到达。这些性质需要单独测试。
语音与文本之间不存在普遍最优的边界。级联会暴露转写、策略检查和可替换组件;端到端音频模型可以保留时序与韵律,也可能让更多计算重叠,但其错误更难归因。语音生成领域同样尚未解决自回归、掩码与连续调度之间如何选择。应当按实测工作负载需求选择,而不是按架构标签选择。
对话要求会传导到每一层。打断目标会约束音频块大小、轮次终点检测、传输、模型调度、合成缓冲与取消机制。编解码器的帧率与码本布局会限制生成器需要处理的索引数量,但不能单独决定延迟。先写清交互契约,再为每一道边界分配可测量的预算。
评论
登录后评论