emolia-balanced-5M-subset
收藏资源简介:
emolia-balanced-5M-subset 是从 laion/Emolia 数据集中提取的一个平衡子集,包含约 5.26M 个语音样本,以 WebDataset 兼容的 tar 分片形式提供,便于直接用于训练流程。该子集通过两种标准筛选样本:1) 情感阈值,每个样本需满足 40 种情感(Emonet 分类法)中至少一种的分数阈值,每种情感目标约 100,000 个样本;2) 说话人多样性,每个样本的 WavLM 音色嵌入被分配到 3,000 个说话人中心之一,每个中心最多收集 1,000 个样本以确保广泛的语音类型覆盖。数据集经过去重处理,最终包含 5,256,683 个独特样本。数据格式为每分片 5,000 个样本的 tar 文件,包含 .mp3 音频文件和 .json 元数据文件。元数据包括原始 Emolia 样本 ID、语言代码、音频时长、音频质量评分、说话人 ID、情感注释字典等字段。适用于情感识别、语音合成等任务。
emolia-balanced-5M-subset 数据集概述
数据集基本信息
- 数据集名称: emolia-balanced-5M-subset
- 来源数据集: laion/Emolia (包含8050万个语音样本)
- 样本数量: 5,256,683个唯一语音样本
- 数据格式: 以WebDataset兼容的tar分片形式打包,便于直接用于训练流程
- 分片数量: 1,052个分片,每个分片包含5,000个样本
数据子集构建方法
该子集通过两种筛选标准从源数据集中选取样本,满足任一标准即可入选。
1. 情感阈值筛选
- 每个样本包含40种情感(基于Emonet分类法)的注释分数。
- 为每种情感设定一个阈值,当样本的对应情感分数达到或超过该阈值时,该样本即被归入该情感类别。
- 阈值根据完整Emolia数据集的分布计算,目标是使每种情感类别收集约100,000个样本。
- 每种情感最多收集100,000个样本(样本可同时属于多种情感类别)。
2. 说话人多样性筛选
- 使用每个样本的128维WavLM音色嵌入。
- 将嵌入向量分配到3,000个说话人质心(经过k-means修剪)中最近的一个。
- 为确保涵盖罕见声音类型,每个质心最多收集1,000个样本。
去重处理
- 在提取后,对样本ID进行全局检查,移除了259个跨分片的重复样本,最终得到5,256,683个唯一样本。
情感类别与样本分布
数据集覆盖40种情感类别,除“Astonishment/Surprise”外,其余类别均收集了100,000个样本。
- Astonishment/Surprise: 阈值≥2.00,收集了96,332个样本(这是完整数据集中最罕见的情感,所有符合条件的样本均已包含)。
- 其他39种情感(如Affection, Anger, Sadness等)均收集了100,000个样本,具体阈值详见README中的表格。
数据集格式与内容
文件结构
- 每个分片是一个tar文件,包含连续的
.mp3(音频)和.json(元数据)文件对。 - 命名示例:
emolia-000000.tar包含000000.mp3,000000.json, ...,004999.mp3,004999.json。
音频数据
- 格式:MP3
- 质量:源自Emolia的原始质量
元数据(JSON字段)
每个.json文件包含原始Emolia样本的元数据,并进行了以下调整:
- 移除了
wavelm_timbre_embedding字段(减少了约50%的JSON大小)。 - 添加了
__emolia_id__字段,即原始Emolia样本ID。 - 保留的关键字段包括:
id: 与__emolia_id__相同language: BCP-47语言代码duration: 音频时长(秒)dnsmos: DNSMOS音频质量分数speaker: 说话人IDemotion_annotation: 包含40多种*_best情感分数的字典characters_per_second: 语速
使用与加载
在PyTorch中加载(推荐使用WebDataset)
python import webdataset as wds dataset = ( wds.WebDataset("data/emolia-{000000..001051}.tar") .decode("torch") .to_tuple("mp3", "json") ) for audio, meta in dataset: emotion_scores = meta["emotion_annotation"]
直接加载单个分片
python import tarfile, json with tarfile.open("data/emolia-000000.tar") as tar: members = {m.name: m for m in tar.getmembers()} for i in range(5000): key = f"{i:06d}" audio = tar.extractfile(members[key + ".mp3"]).read() meta = json.load(tar.extractfile(members[key + ".json"]))
源数据集关键信息
- 情感注释: 来自微调音频模型的连续回归分数,存储在
emotion_annotation.*_best字段中。 - 说话人嵌入: 使用128维WavLM音色嵌入进行质心分配(在该子集的JSON中已剥离)。
- 阈值计算基础: 基于完整数据集86%的样本(约6900万),并通过×1.16的缩放因子外推至每情感100,000个样本的目标。
许可证
继承自源数据集laion/Emolia的许可证。具体使用条款请参考源数据集。




