1. 项目概述:为什么我们需要一个“非言语”的语音合成评测基准?
如果你最近在关注语音合成领域,可能会发现一个有趣的现象:无论是学术论文还是商业产品发布会,大家展示的合成语音,几乎清一色都是“说话”——清晰、流畅、富有表现力地朗读一段文字。这当然很重要,但我们的日常交流,远不止于文字。想想看,当你在电话里听到朋友的一声叹息,或者在看电影时被一声恰到好处的抽泣声击中,这些没有具体语义、却饱含情绪的声音,是不是同样关键?这就是“非言语发声”的范畴,它包括了笑声、哭声、咳嗽、叹息、清嗓子、甚至是一些语气词(如“嗯”、“啊”)。长久以来,这个领域在语音合成评测中几乎是一片空白。我们没有一个标准化的“尺子”去衡量一个合成系统生成的叹息是否足够“疲惫”,或者笑声是否足够“真诚”。
这就是NVBench诞生的背景。作为首个公开的双语(中文和英文)非言语发声语音合成评测基准,它试图填补这个空白。简单来说,NVBench提供了一个包含多种非言语发声类别的数据集,并设计了一套评测指标和方法,让研究者和开发者能够客观、系统地评估和比较不同模型在生成这些“无词之声”上的能力。这不仅仅是技术上的一个补全,更是推动语音合成向更自然、更富情感、更接近真人交流体验迈进的关键一步。对于从事语音合成、情感计算、人机交互,甚至是游戏和影视后期制作的朋友来说,NVBench的出现,意味着我们终于有了一个可以共同对话和比较的“靶场”。
2. NVBench的核心设计思路与数据构建
2.1 为什么是“双语”?为什么是这些类别?
NVBench选择中英双语,背后有非常实际的考量。首先,中文和英文是全球使用最广泛的两种语言,其背后的语音合成研究社区和产业应用也最为活跃。其次,非言语发声具有强烈的文化特异性。例如,中文语境下的“呵呵”笑声与英文中的“haha”或“lol”所传递的情绪和社交信号可能截然不同。一个能生成地道中文叹息的模型,未必能生成地道的英文叹息。因此,构建双语基准,是为了确保评测的全面性和公平性,避免技术方案在单一语言上的过拟合,也为了促进跨语言、跨文化的情感语音合成研究。
在非言语发声类别的选择上,NVBench并非随意列举,而是基于语言学、心理学和实际语音数据库的统计分析。它主要涵盖了以下几大类:
- 情感性发声:这是核心,包括笑声(开心的、尴尬的)、哭声(悲伤的、啜泣的)、叹息(疲惫的、放松的)。
- 生理性发声:如咳嗽、清嗓子、打哈欠。这些声音虽然不直接传递复杂情感,但对于构建一个“活生生”的虚拟角色至关重要。
- 填充词与犹豫声:如“嗯”、“呃”、“啊”。在自然对话中,这些声音占据了相当比例,是衡量对话流畅度和自然度的关键。
- 其他副语言现象:如吸气声、咂嘴声等。
NVBench的数据集构建,采用了高质量、高保真的录音,并由专业的标注人员对每段音频进行细致的标注,包括发声类别、情感强度、说话人身份、录音环境等元数据。这里有一个关键点:并非所有“笑声”录音都适合。数据集需要覆盖同一类别的不同变体(如轻笑、大笑、咯咯笑),以及同一说话人在不同情绪状态下的发声,这样才能全面考验模型的泛化能力和表现力。
注意:数据收集和标注是此类基准的生命线。NVBench团队必须严格处理说话人授权、隐私保护以及数据平衡性问题(避免某一类别或某一说话人的数据过多)。在复现或扩展类似工作时,这是首要考虑的法律和伦理门槛。
2.2 评测指标设计:如何量化“像不像”?
评测语音合成的传统指标,如梅尔倒谱失真(MCD)、短时客观可懂度(STOI)和语音质量感知评估(PESQ),主要针对的是语音的清晰度和可懂度。但对于非言语发声,这些指标往往失灵。一声完美的、频谱重建误差极低的“哭声”,听起来可能像机器蜂鸣,毫无感染力。
因此,NVBench引入了一套多维度的评测体系:
- 自然度与真实感:这是主观评测的核心。通过大规模的平均意见得分(MOS)测试,让人类听众直接打分,判断合成声音听起来是否像一个真人发出的自然声音。
- 情感识别准确率:这是一个巧妙的客观评测辅助手段。使用训练好的情感识别模型(或邀请人类标注员)去识别合成声音所表达的情感类别(如快乐、悲伤、惊讶)。如果合成的声音能被准确识别出预设的情感,说明其情感表达是有效的。
- 类别区分度:合成的“笑声”和“叹息”在听觉上应该有明确的区别。可以通过训练一个分类器来区分合成样本的类别,其准确率可以反映模型对不同类别特征的捕捉能力。
- 说话人相似度:对于基于特定说话人声音训练的模型,需要评估其合成的非言语发声是否保持了该说话人的音色特质。这同样可以通过MOS或基于编码器的相似度打分来实现。
- 声学特征分析:虽然传统指标不直接适用,但可以分析一些高阶声学特征,如基频(F0)轮廓的动态范围、频谱的平滑度、发声类型的转换(如正常嗓音到气嗓音)等,从信号层面提供洞察。
这套组合拳式的评测方法,兼顾了主观感受和客观量化,能够相对全面地评估一个非言语发声合成系统的性能。
3. 基于NVBench的模型实现与技术路线解析
有了评测基准,下一步就是构建能够在这个基准上取得好成绩的模型。目前主流的技术路线依然基于深度生成模型,但需要针对非言语发声的特点进行特殊设计。
3.1 主流架构选型:VITS与Diffusion的适配改造
当前最先进的语音合成架构,如VITS和基于扩散模型(Diffusion)的模型,是构建非言语发声合成系统的有力候选。
VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)因其高质量和端到端的便利性被广泛采用。要让它处理非言语发声,关键在以下几处改造:
- 输入表示:VITS的原始输入是文本音素序列。对于非言语发声,我们需要定义一套“非言语音素”或“发声符号”。例如,可以用
[LAUGH]、[CRY]、[SIGH]等标签作为输入。更精细的,还可以加入情感强度标签,如[LAUGH: intensity=high]。 - 时长预测器:非言语发声的时长变化比正常语音更自由、更不规则。一声叹息可能短促,也可能悠长。需要增强时长预测器的能力,或者允许通过外部参数(如一个表示时长的标量)进行控制。
- 声学模型与声码器:VITS的后验编码器和解码器(声码器)需要能够建模非言语发声更宽广、更不稳定的声学特征。这通常意味着需要更大的模型容量,以及在训练数据中充分覆盖各类发声的声学变异。
扩散模型(Diffusion Models)在生成高质量、多样化音频方面展现出巨大潜力。对于非言语发声这种高度随机且连续的声音,扩散模型通过逐步去噪的生成过程,可能更容易捕捉其细微的统计特性。实现时,可以将类别标签和情感标签作为条件输入,引导生成过程。例如,使用Classifier-Free Guidance技术,可以精确控制生成的声音是“强颜欢笑”还是“开怀大笑”。
实操心得:在资源有限的情况下,微调一个预训练的VITS模型往往是更快的起点。你可以找一个在大量普通话或英语语音上预训练好的VITS模型,然后用NVBench的中文或英文非言语发声数据对其进行微调。重点微调时长预测器和声码器部分。这种方法能利用预训练模型学到的通用声学知识,快速适配到新任务。
3.2 数据预处理与特征工程的独特性
处理NVBench这样的数据,预处理环节至关重要:
- 静音检测与切割:非言语发声前后常有大量静音或呼吸声,需要精确切割出“发声段”,避免模型学习到无关的静音模式。
- 音高(F0)提取:许多非言语发声(如笑声、哭声)的F0曲线波动剧烈,甚至出现“嘶哑”、“破裂”的音质。使用传统的如DIO或Harvest算法可能失效。需要采用更鲁棒的F0提取算法,或直接使用能从含噪信号中估计F0的神经网络方法(如Crepe)。
- 发声类型标识:对于哭声、气嗓音等,需要在特征中显式地标识发声类型(Voiced, Unvoiced, Mixed)。这可以作为额外的条件特征输入模型,帮助生成更逼真的音质。
- 数据增强:非言语发声数据通常比朗读语音更难获取,数量更少。需要谨慎使用数据增强。时间拉伸和音高变换可能会破坏发声的情感本质,因此更推荐使用添加轻微背景噪声、模拟不同房间混响等不影响核心声学特性的增强方法。
3.3 训练策略与损失函数设计
训练非言语发声合成模型,不能简单套用TTS的损失函数。
- 重建损失:除了梅尔谱重建损失(L1 Loss),可以考虑加入波形域的重建损失(如多尺度STFT损失),因为非言语发声的许多细节(如气息声、摩擦声)在梅尔谱的低分辨率下可能丢失。
- 对抗损失:VITS中的判别器需要能够区分真实和合成的非言语发声。可以设计多个判别器,分别关注不同时间尺度(如片段判别器、全局判别器)或不同频带的声音特征。
- 情感一致性损失:这是一个高级技巧。如果你有额外标注的情感标签,可以引入一个辅助的情感分类器,并添加一个损失项,要求合成音频被该分类器预测出的情感与输入标签一致。这能显式地引导模型学习情感表达。
- 多样性损失:对于同一输入标签(如
[SIGH]),我们希望模型能生成多种多样的叹息,而不是千篇一律。可以借鉴VAE的思路,鼓励潜在空间的多样性,或者使用扩散模型本身固有的随机性。
4. 评测实验与结果分析实操
当你按照上述思路训练好一个模型后,如何利用NVBench进行严谨的评测呢?以下是一个可复现的实操流程。
4.1 评测环境搭建与基线模型
首先,从NVBench的官方仓库(假设为GitHub)获取评测工具包和数据划分说明。通常,它会提供开发集和测试集。
基线模型选择:
- 传统拼接式合成:作为最基础的基线,可以使用简单的单元挑选拼接方法(尽管效果可能很差),用以凸显生成式模型的优势。
- 端到端TTS模型微调:选择如VITS、FastSpeech 2等主流模型,用NVBench数据微调,作为强基线。
- 扩散模型:如DiffWave或AudioLDM,进行条件化生成。
你需要确保所有对比模型在相同的数据划分上进行训练和测试,并使用NVBench提供的标准评测脚本来计算各项指标。
4.2 主观评测(MOS)执行细节
主观评测是黄金标准,但执行成本高,需精心设计。
- 测试集构建:从NVBench测试集中每种类别随机选取一定数量(如20条)的样本。同时,混入一定比例的真实录音作为“锚点”,用于校准评分者的尺度。
- 评分者招募:至少招募20名以上母语为中文或英文的评分者,确保其听力正常。最好能通过筛选,排除对合成语音过于宽容或苛刻的个体。
- 评测界面与流程:开发一个简单的网页界面。每次播放一条音频(合成或真实),让评分者在1-5分(1=非常不自然,5=非常自然)的Likert量表上打分。音频顺序随机,且评分者不知道音频来源。
- 数据清洗与分析:收集评分后,计算每个系统每个样本的平均MOS分。同时,可以计算评分者间的一致性(如科恩卡帕系数),以评估评测的可靠性。
注意事项:MOS测试极其耗时耗力。在科研的早期探索阶段,可以依赖自动化的MOS预测模型(如MOSNet、SSL-MOS)进行快速迭代。但这些模型的预测结果与真人评分始终存在偏差,在撰写论文或最终报告时,必须包含真人MOS测试结果,否则说服力会大打折扣。
4.3 客观指标计算与可视化
运行NVBench提供的脚本,计算每个模型的客观指标:
- 情感识别准确率:使用一个在真实非言语发声数据上预训练好的情感分类器(如Wav2Vec 2.0 + 分类头)对合成音频进行分类,计算其准确率、召回率、F1分数。
- 类别区分度:训练一个简单的分类器(如基于Log-Mel谱图的CNN)来区分不同类别的合成音频。分类准确率越高,说明模型生成的类别特征越鲜明。
- 说话人相似度:使用说话人验证模型(如ECAPA-TDNN)提取合成音频和真实目标说话人音频的嵌入向量,计算其余弦相似度。
将所有这些指标整理成表格,并进行可视化。例如,可以用雷达图来展示不同模型在“自然度”、“情感准确率”、“类别区分度”等多个维度上的表现,一目了然地看出模型的优缺点。
5. 常见问题、挑战与未来展望
在实际操作中,你会遇到一系列预料之中和预料之外的挑战。
5.1 典型问题排查表
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 合成声音“机械感”重,不自然 | 1. 模型容量不足或训练不充分。 2. 声码器质量差,无法重建细节。 3. 输入表征过于简单,缺乏情感、强度等控制信息。 | 1. 增加模型大小或延长训练时间。 2. 尝试更先进的声码器(如HiFi-GAN, BigVGAN)。 3. 在输入中引入更细粒度的控制特征(如强度值、持续时间标量)。 |
| 所有类别的发声听起来都差不多 | 模型没有学会区分不同类别的声学特征。 | 1. 检查数据标注质量,确保类别标签准确。 2. 在模型中加入类别对抗训练:添加一个分类器试图从生成的声音中识别类别,而生成器试图“欺骗”它,同时又要满足其他重建目标。 3. 使用类别条件化的归一化层(如SPADE, AdaIN)。 |
| 合成音频中有持续的底噪或杂音 | 1. 训练数据本身不干净。 2. 声码器在生成无声段或气息声时不稳定。 3. 扩散模型去噪步数不足或噪声调度不当。 | 1. 对训练数据进行更严格的降噪和筛选。 2. 在声码器训练中,明确加入“无声”或“噪声”段的数据,并设计相应的损失。 3. 调整扩散模型的采样步数和噪声方差表。 |
| 情感表达“不对味”或强度不足 | 模型未能建立输入情感标签与输出声学特征间的强关联。 | 1. 使用情感嵌入:用一个预训练的情感模型提取真实音频的情感嵌入,作为额外的条件输入进行训练。 2. 强化情感分类器损失的权重。 3. 收集更多带有精细情感强度标注的数据。 |
5.2 当前的技术挑战
- 数据稀缺与长尾分布:高质量的、标注好的非言语发声数据远比朗读语音难获取。某些稀有类别(如特定的哭泣变体)样本量极少,导致模型难以学习。
- 细粒度控制与解耦:如何独立控制发声的类别、情感、强度、持续时间、说话人身份等多个属性,并实现这些属性的解耦编辑,是一个巨大挑战。目前的方法往往牵一发而动全身。
- 评价指标仍需完善:尽管NVBench提供了多维指标,但如何更客观、自动地衡量合成声音的“情感真实性”和“社交恰当性”,仍是未解难题。
- 实时性与计算成本:特别是扩散模型,生成高质量音频需要数十甚至上百步迭代,难以满足实时交互应用的需求。
5.3 个人实践中的体会与建议
从我个人的实验经验来看,启动非言语发声合成项目,切忌一开始就追求大而全的复杂模型。一个有效的路径是:
从“精调”开始,而非“重建”:找一个在大量高质量语音上预训练好的、架构成熟的TTS模型(比如VITS)。它的声学编码器和声码器已经学到了非常丰富的发音和音色知识。你的任务不是教它从头学习发声,而是教它将这些知识“迁移”到非言语的领域。这意味着,你的训练数据质量必须极高,标注必须精准,初期可以聚焦在一两个类别(如笑声和叹息)上做深做透。
重视“听感”而非单纯“指标”:在开发过程中,要养成频繁聆听合成样本的习惯。一个指标上升了0.01,但听感变差了,这很常见。特别是对于非言语发声,人类的听觉极其敏感。建立自己的“关键样本集”,包含各种难例(如含泪的笑、强忍的叹息),每次模型迭代后都听听这些样本的表现。
拥抱“混合模型”思路:非言语发声合成可能没有银弹。对于规则性较强的填充词(如“嗯”),基于VITS的端到端方法可能很有效;对于高度随机、充满噪声的气息声,扩散模型或许更擅长。在实际系统中,可以根据输入标签动态选择或融合不同生成器的输出,这可能比用一个巨型统一模型效果更好。
NVBench为我们打开了一扇门,让我们开始系统地关注语音中那些“无声胜有声”的部分。它的价值不仅在于提供了一个评测标准,更在于定义了一个重要的研究方向。接下来的工作,将围绕如何生成更细腻、更可控、更具上下文感知能力的非言语发声展开。无论是为了打造更有同理心的虚拟助手,还是为了创造更沉浸式的游戏影视体验,这项技术都值得我们投入更多的热情和巧思。