语音合成之二十六 TTS情感控制技术开源数据集
在前一篇博客中介绍了当前开源TTS情感控制技术的四个主要类别:
-
基于参考音频的风格迁移(Reference-based Style Transfer)
原理:这是目前最主流且效果最好的方法。该方法通过一个“风格编码器”(Style Encoder)从一小段参考音频中提取其韵律和情感特征,生成一个固定维度的向量,称为“风格嵌入”(Style Embedding)。然后,这个风格嵌入会作为TTS声学模型的一个额外条件输入,引导模型生成与参考音频情感、风格相似的语音。
优势:极为灵活,可以实现“零样本”(Zero-shot)情感迁移,即使用模型在训练中未见过的任意音频作为情感参考。
代表模型:VITS 、StyleTTS、Coqui XTTS 。 -
基于文本提示的生成(Text-Prompted Generation)
原理:这类模型通常是大型的生成式音频模型,它们将文本和特殊的“提示标签”(Prompt Tags)一起作为输入,直接生成音频。用户可以通过在文本中插入 [laughter](笑声)、[sighs](叹息)或描述性词语来引导模型产生相应的情感或非语言声音。
优势:控制方式直观,能生成包括笑声、哭声、音乐在内的复杂音频,创造力强。
代表模型:Bark 、Cosyvoice、SparkTTS。 -
基于离散标签的控制(Discrete Label Control)
原理:在训练数据中,为每条语音标注明确的情感类别(如:happy, sad, angry)。在训练时,将这些标签转换为独热编码(One-hot Encoding)或嵌入向量,与文本一同输入模型。推理时,用户通过指定情感标签来控制输出。
优势:简单直接,易于理解和实现。
劣势:情感类别是预定义且有限的,无法生成类别之外的混合或细微情感,表现力受限。
代表模型:一些早期的Tacotron2改进模型,或在特定数据集上微调的VITS模型。 -
基于扩散模型(Diffusion Models)的风格建模
原理:扩散模型通过一个逐步去噪的过程从随机噪声中生成高质量的语音。在情感控制方面,它可以将风格建模为一个潜在随机变量,在没有参考音频的情况下,也能为文本生成最合适的韵律风格。
优势:能够生成多样性极高且非常自然的韵律,被认为是达到人类水平TTS的关键技术之一。
代表模型:StyleTTS 2。
不论是学术研究还是生产环境都需要数据集去验证改进、新技术或者fine-tune、重训模型。本篇看一下TTS领域开源的情感数据集。
一、 各类情感/风格TTS对应的开源数据集
基于参考音频的风格迁移 (Reference-based)
这类模型需要能够从中学习到“风格”的数据。因此,数据集的关键在于说话人多样性和情感/风格多样性。
- 多说话人数据集 (用于学习音色和基础韵律)
- LibriTTS & LibriTTS-R: 这是一个取自有声书、大规模(约585小时)、多说话人的英语语音数据集,源自LibriSpeech。音色多样但情感有限,它非常干净,适合作为训练VITS、StyleTTS等模型的基础。StyleTTS 2的论文中就明确提到了使用LibriTTS进行训练。
- VCTK (Voice Cloning Toolkit): 包含110位带有不同口音的英语母语者录音。 虽然每个人的数据量不大(约400句),但其多样性非常适合用于学习零样本声音克隆(Zero-shot Voice Cloning)。StyleTTS 2也用它在多说话人场景下进行了评测。
- LJSpeech: 这是一个被广泛使用的单人(女性)英语数据集,包含约24小时的高质量录音。 虽然是单人,但其高质量和稳定性使其成为许多模型(包括StyleTTS 2)的基准测试标准。
- AISHELL-3 (中文): 包含218位中文母语者的录音,部分还带有情感标注,非常适合中文多说话人及情感TTS研究。共计约85小时数据。
- 情感/表现力数据集 (用于学习情感风格)
- ESD (Emotional Speech Dataset): 包含10位英语使用者和10位中文使用者,在5种情感状态(neutral, happy, angry, sad and surprise)下的录音。 这个数据集是专门为情感语音合成和转换设计的。
- EmoV-DB: 包含4位英语演员(两男、两女)在5种情感(neutral, sleepiness, anger, disgust and amused)下的录音,专门为情感语音合成构建,共6811个文件。
- RAVDESS: 包含24位演员以8种不同情感(neutral, calm, happy, sad, angry, fearful, surprise, and disgust )朗读句子的录音,数据量大且情感标注清晰。共1440个文件。
- MELD (Multimodal EmotionLines Dataset)
取自影视剧《老友记》中1400个场景的多人对话,共计7个情感标签(Anger, Disgust, Sadness, Joy, Neutral, Surprise and Fear),适合训练参考风格编码器。
基于文本提示的生成 (Text-Prompted)
这类模型(如Bark)的强大之处在于其能够理解文本中的提示标签,如 [laughter]
。这要求训练数据不仅有语音和文本,还需要文本中包含这些非语言声音的精确标注。
- 这类模型的训练数据通常是巨大的、未公开的私有数据集。它们往往通过抓取海量网络音视频数据,并使用先进的ASR模型进行“富文本转录”(Rich Transcription)来构建。
- 公开的替代或补充数据集:
- Nonverbal Vocalization Dataset: 包含笑声、哭声、叹气、咳嗽等16种人类非语言声音。 这类数据集可以用来增强模型生成非语言声音的能力。
- VocalSound: 一个众包数据集,包含超过21,000个笑声、叹息、喷嚏、咳嗽等自发的非语言表达录音。
- NonverbalTTS: 这是一个17小时的英语语音库,专门为非语言发声(如呼吸、笑声、叹息)和情感类别提供了对齐的文本注释,旨在推动表现力强的TTS研究。
- CNVVE: 包含950个音频样本,涵盖6类非语言声音表情,是人机交互和辅助技术领域非语言声音识别的重要基准。
- Audioset (Google)
包含大规模环境声、音乐、情绪标签,可扩展到文本提示生成。
- AudioCaps / Clotho
每条音频有人工描述(caption),适合做 text-to-audio 预训练。
基于离散标签的控制 (Discrete Label)
这种方法最直接,需要的数据集也最明确:带有清晰情感分类标签的语音。
- IEMOCAP: 对话式的情感语音,它包含10位演员在即兴和脚本对话中的录音,标注了愤怒、快乐、悲伤、中性等多种情感。约12小时时长的音视频多模态数据。
- EmoDB (Berlin Database of Emotional Speech): 德语情感数据库,包含10位演员在7种情感下的录音,是情感研究领域的经典数据集。
- SAVEE (Surrey Audio-Visual Expressed Emotion): 包含4位男性演员在7种情感下的录音。
- 以上提到的 ESD、EmoV-DB 和 RAVDESS 也完全适用于此方法,因为它们都有明确的离散情感标签。
基于扩散模型 (Diffusion Models)
以StyleTTS 2为代表的模型,其核心优势在于能从数据中学习到风格的潜在分布,而无需显式标签。因此,它们需要的是大规模、多样化、高质量的语音数据。
- LibriTTS / LibriTTS-R: StyleTTS 2的论文明确指出,在LibriTTS上训练后,模型在零样本说话人适应方面表现出色,超越了之前的公开模型。
- VCTK: 同样被StyleTTS 2用于多说话人模型的训练和评测,以验证其在音色和韵律模仿上的能力。
- LJSpeech: 作为单人数据集的黄金标准,被StyleTTS 2用来展示其在自然度上超越真人录音的性能。
上面的数据集并不是严格意义上的划分,对于大模型,不如Cosyvoice,很可能使用了所有上面提到的数据集,虽然在基于文本提示的生成中只罗列了少量几个开源数据集。
总的来说,受限于TTS情感数据量的制约,训练通常始于一个大规模的多人标准数据集(如LibriTTS),然后可以在特定的情感数据集上进行微调(Fine-tuning)以增强其情感表现力。
当然在license合规的情况下,也可以用各自领域的模型,大量生成该放下的语音作为training样本,比如用CosyVoice大量带[angry] [laugh]等标签的数据用于模型的训练。
方法类型 | 代表模型 | 典型开源数据集 | 可用工具/方法 |
---|---|---|---|
参考音频驱动的风格迁移 (Reference-based Style Transfer) | VITS, StyleTTS, Coqui XTTS | - LibriTTS / LibriTTS-R(多说话人) - EmoV-DB(多语言情感) - IEMOCAP(对话式情感) - RAVDESS(演员情感语音) - MELD(多模态情感对话) | - Coqui TTS(XTTS, 多说话人+风格迁移) - StyleTTS/StyleTTS2 - Prosody 特征提取:Praat, pyWorld, Parselmouth - 数据准备:MFA/Gentle 对齐 |
基于文本提示的生成 (Text-Prompted Generation) | Bark, CosyVoice, SparkTTS | - AudioSet(大规模音频标签) - AudioCaps(音频-文本对齐) - Clotho(音频描述) - EmoV-DB + 自建 prompt 描述 | - Bark / CosyVoice 开源实现 - 人工/众包生成 prompt 标签 - LLM 自动生成音频描述 |
基于离散标签的控制 (Discrete Label Control) | Tacotron2 改进版, VITS(情感标签) | - IEMOCAP(多情感对话) - CREMA-D(6类情感) - RAVDESS(情感+歌曲) - EmoV-DB(多语言情感) | - SpeechBrain(SER 识别/标注) - pyAudioAnalysis(情感分类特征) - One-hot / embedding 标签输入 |
基于扩散模型的风格建模 (Diffusion-based Style Modeling) | StyleTTS2, DiffSinger | - LibriTTS(大规模英语朗读) - VCTK(109说话人,多口音) - AISHELL-3(中文多说话人) - OpenSLR 系列(多语言自由语音) - Opencpop / NUS-48E(歌声韵律丰富) | - StyleTTS2, ESPnet, DiffSinger - 数据对齐:MFA, Aeneas - 需大规模多样语料 |
数据集 | 语种 | 规模 | 情感类别 | 典型用途 | 开源情况 |
---|---|---|---|---|---|
LibriTTS / LibriTTS-R | 英语 | ~585h, >2000 说话人 | 无显式情感标签(主要是朗读) | 大规模基础语料,多说话人 TTS | ✅ OpenSLR-60 |
VCTK | 英语 (多口音) | ~44h, 109 说话人 | 无显式情感标签 | 多说话人、口音建模 | ✅ CSTR VCTK |
AISHELL-3 | 中文 | ~85h, 218 说话人 | 无显式情感标签 | 中文多说话人 TTS | ✅ AISHELL-3 |
EmoV-DB | 英语、法语、日语、中文 | 每语种 ~20min/说话人 | Neutral, Happy, Angry, Sleepy, Disgust | 情感 TTS,风格迁移 | ✅ GitHub |
IEMOCAP | 英语 | ~12h, 10演员 | Happy, Angry, Sad, Neutral, Excited, Frustrated 等 | SER、情感 TTS | 研究可用 官网 |
RAVDESS | 英语 | 24演员, 7356 语句 | Neutral, Calm, Happy, Sad, Angry, Fearful, Disgust, Surprised | 情感语音/歌声合成 | ✅ Zenodo |
CREMA-D | 英语 | 91演员, 7,442 样本 | Anger, Disgust, Fear, Happy, Neutral, Sad | SER/TTS 标签控制 | ✅ GitHub |
MELD | 英语 (对话) | 13k 语句, 1.4k 对话 | 7类情感(joy, anger, sadness, surprise, disgust, fear, neutral) | 多模态对话式情感建模 | ✅ GitHub |
ESD (Emotional Speech Dataset) | 英语/中文 | ~20h, 10说话人 | Neutral, Happy, Angry, Sad, Surprise | 情感转换/风格建模 | ✅ GitHub |
TESS (Toronto Emotional Speech Set) | 英语 | 2000+ 样本, 2位女说话人 | 7类情感 | SER 基准 | ✅ TESS |
JL-Corpus | 日语 | ~20h, 多说话人 | 多类情感 | 日语情感 TTS | ✅ JL-Corpus |
Opencpop | 中文(歌唱) | ~5h, 单一女声 | 含韵律/歌唱风格 | 歌声合成/扩散建模 | ✅ Opencpop |
NUS-48E | 英语(歌唱) | 48 首歌曲 | 歌唱情感/风格 | 歌声合成、韵律研究 | ✅ NUS-48E |
二、 自建数据集的开源工具与方法
构建一个高质量的语音数据集是一项系统工程,但借助强大的开源社区和工具,这个过程变得越来越可行。以下是构建流程和推荐的工具。
第1步:收集原始音频 (Audio Collection)
- 自行录制: 这是质量最可控的方式。你需要一个高质量的麦克风和安静的录音环境(如使用隔音罩或在衣柜里录音以减少混响)。
- 利用现有资源:
- 有声读物: LibriVox等网站提供了大量公共领域的有声读物,是LibriSpeech和LibriTTS的来源。
- 公开演讲/播客: TED演讲等资源提供了多样化的内容和口音。
- 影视剧/游戏音频: 可以提供丰富的情感和风格,youtube、电视剧字幕等,但需注意版权问题。
第2步:文本转录 (Transcription)
如果你的音频没有现成的文本,需要进行转录。
- 工具: OpenAI Whisper 或者阿里巴巴的Fun ASR,他们是比较先进的开源ASR模型。不仅准确率高,支持多语言,还能在一定程度上识别人声的起始和结束,可以输出带时间戳的文本,为后续的对齐工作打下良好基础。
第3步:音文对齐 (Audio-Text Alignment)
这是最关键的一步,目的是将文本中的每个词或音素与音频中对应的时间点精确匹配。
- 工具: Montreal Forced Aligner (MFA) 是这个领域的标准工具。
- 原理: MFA使用预训练的声学模型和发音词典,将你的文本“强制”对齐到音频上,生成精确到词和音素级别的时间戳。
- 输出: 通常是 Praat TextGrid 文件。 这是一个分层的时间标注文件,可以清晰地展示每个词或音素的开始和结束时间。
- 优势: 支持多种语言,社区活跃,有大量的预训练模型可供下载。
第4步:数据切分与预处理 (Segmentation & Preprocessing)
长段的音频和对齐好的TextGrid需要被切分成一条条的训练样本(通常是一句话)。
- 工具:
- Praat: 一款功能强大的语音学分析软件。你可以使用它的脚本功能,根据MFA生成的TextGrid文件,自动将长音频切分成以句子为单位的短音频片段。
- Pydub / Librosa: Python音频处理库,可以用来进行音量归一化、重采样(如统一到24kHz)、去除静音等预处理操作。
- NVIDIA NeMo: 提供了一个名为
CTC-Segmentation
的工具,可以方便地将长音频根据文本切分成短片段。
第5步:情感/风格标注 (Annotation)
如果你的目标是构建情感或风格数据集,这一步必不可少。
- 工具:
- Praat: 再次推荐Praat。它的TextGrid功能允许你创建新的“层”(Tier),在句子级别或词级别上添加情感标签(如 “happy”, “sad”)或风格描述。
- MIKU-PAL: 使用多模态技术自动给语音贴情绪标签:MIKU-PAL如何突破情感语音合成的瓶颈,支持25种情绪识别。
- Label Studio: 一个非常灵活的开源数据标注工具,支持音频、文本、图像等多种数据类型。你可以自定义标注界面,让多人协作进行情感或风格的标注。
- Audino: 一个开源的音频标注工具,支持转录和标签功能,适用于情感识别等任务。