数据集:

KBLab/rixvox

英文

RixVox 数据集卡片

数据集摘要

RixVox 是一个由瑞典议会 (Riksdag) 的演讲组成的语音数据集。它包括 2003 年至 2023 年期间辩论的演讲。使用 aeneas 工具,演讲的语音与书面记录的对话按句子级别进行了对齐。每个观察点可以由一个或多个连接的句子组成(持续时间最长为30秒)。对于每个观察点,都提供了详细的演讲者元数据,包括演讲者的姓名、性别、政党、出生年份以及他们所代表的选区。数据集总共包含5493小时的演讲与转录。

如何使用和支持的任务

支持的任务

默认不支持任务(没有标签字段)。但该数据集可能适用于以下任务:

  • 自动语音识别(ASR)。
  • 说话人识别和验证。
  • 创建合成的分割数据集。
  • 在ASR系统中研究偏见。

如何使用

您可以使用 load_dataset() 下载和本地提取文件。我们建议将 cache_dir 参数设置为指向具有足够磁盘空间(1.2TB+)的位置。以下是如何下载 train 数据集的示例:

from datasets import load_dataset
# To download/load all splits at once, don't specify a split
rixvox = load_dataset("KBLab/rixvox", split="train", cache_dir="data_rixvox")

您也可以流式传输数据集。这在您想要探索数据集或者没有足够磁盘空间下载整个数据集时非常有用。以下是如何流式传输 train 数据集的示例:

from datasets import load_dataset
rixvox = load_dataset("KBLab/rixvox", cache_dir="data_rixvox", split="train", streaming=True)
print(next(iter(rixvox)))

# Grab 5 observations
rixvox_subset = rixvox.take(5)
for example in rixvox_subset:
    print(example)

创建数据集时使用 PyTorch dataloader

本地模式:

from datasets import load_dataset
from torch.utils.data.sampler import BatchSampler, RandomSampler
# Dataset is not pre-shuffled, recommend shuffling it before training.
rixvox = load_dataset("KBLab/rixvox", split="train", cache_dir="data_rixvox")
batch_sampler = BatchSampler(RandomSampler(rixvox), batch_size=32, drop_last=False)
dataloader = DataLoader(rixvox, batch_sampler=batch_sampler)

流式模式:

from datasets import load_dataset
from torch.utils.data import DataLoader
rixvox = load_dataset("KBLab/rixvox", split="train", cache_dir="data_rixvox")
dataloader = DataLoader(rixvox, batch_size=32)

更多关于如何洗牌的信息,请参阅Huggingface的 streaming datasets 指南。

语言

  • 瑞典语。瑞典语的BCP 47语言标签是 sv 。

数据集结构

数据示例

数据集总共有835,044个观察点,来自1,194个不同的演讲者。每个观察点的持续时间最长为30秒。一个观察点属于一次辩论( dokid ),是从一次演讲中提取出来的( anforande_nummer ),并根据其在演讲中的顺序编号( observation_nr )。以下是一个观察点的示例:

{'dokid': 'GR01BOU3',
 'anforande_nummer': 191,
 'observation_nr': 0,
 'audio': {'path': 'GR01BOU3/2442210220028601121_anf191_1_25.wav',
           'array': array([0.01171875, 0.01242065, 0.01071167, ..., 0.00689697, 0.00918579,
       0.00650024]),
           'sampling_rate': 16000},
 'text': 'Kristdemokraterna står bakom alla reservationer med kristdemokratiska förtecken, men jag nöjer mig med att yrka bifall till reservation 1. Jag ska i det här inlägget beröra några av de åtta punkter som är föremål för reservationer från kristdemokratiskt håll, i vissa fall tillsammans med andra partier.',
 'debatedate': datetime.datetime(2003, 12, 4, 0, 0),
 'speaker': 'Göran Hägglund',
 'party': 'KD',
 'gender': 'male',
 'birth_year': 1959,
 'electoral_district': 'Hallands län',
 'intressent_id': '0584659199514',
 'speaker_from_id': True,
 'speaker_audio_meta': 'Göran Hägglund (Kd)',
 'start': 1.4,
 'end': 24.96,
 'duration': 23.560000000000002,
 'bleu_score': 0.7212783273624307,
 'filename': 'GR01BOU3/2442210220028601121_anf191_1_25.wav',
 'path': 'GR01BOU3/2442210220028601121_anf191_1_25.wav',
 'speaker_total_hours': 30.621333333333332}

dataset viewer 中可以看更多示例。

数据字段

  • dokid :瑞典议会用于辩论的文件ID。对于辩论中的所有演讲,该值相同。
  • anforande_nummer :辩论中的演讲编号,或者在特定日期的辩论会议上的演讲编号。与 dokid(有时存在重复,但已从此数据集中删除)一起用于为演讲创建唯一主键。
  • observation_nr :演讲中的观察点编号。与 dokid 和 anforande_nummer 结合使用,创建观察点的唯一标识符。
  • text :书面协议的文本记录。文本记录不总是逐字逐句。转录员在认为适合的情况下,可以调整句子的顺序、单词和措辞。
  • debatedate :辩论的日期。
  • start :观察点在演讲中的开始时间(以秒为单位)。
  • end :观察点在演讲中的结束时间(以秒为单位)。
  • duration :观察点的持续时间( end 减去 start )。
  • intressent_id :瑞典议会数据库中演讲者的唯一ID(参见瑞典议会的 person.csv.zip )。
  • speaker :通过 intressent_id 检索到的演讲者姓名。
  • party :通过 intressent_id 检索到的演讲者政党。
  • gender :通过 intressent_id 检索到的演讲者性别。
  • birth_year :通过 intressent_id 检索到的演讲者出生年份。
  • electoral_district :选举区,如果演讲者是/曾是议会成员,则表示其代表的选区(通过 intressent_id 检索)。
  • speaker_audio_meta :在瑞典议会原始文本格式的元数据中列出的演讲者姓名和职务(有时与 intressent_id 不符)。
  • speaker_from_id :演讲者元数据是通过 intressent_id 还是通过瑞典议会的原始元数据检索的(对于缺少 intressent_id 的演讲)。
  • bleu_score :自动语音识别(ASR)转录与瑞典议会书面协议的BLEU分数。根据从观察点(30秒片段)提取的演讲的全部内容进行计算。一次演讲的低分可能表明:i)ASR模型在转录演讲者的口音或方言时遇到了困难,或者ii)转录在编辑和改写演讲时存在某种程度的自由度。
  • speaker_total_hours :RixVox数据集中演讲者的演讲总时长。
  • filename :压缩的tar.gz文件中观察点的文件名。如果您不想使用 Huggingface 的 datasets ,而是手动从数据分片中下载和提取文件,则此信息很有用。
  • path :动态创建的变量。在使用 datasets 库中的 load_dataset() 下载和提取文件之后,包含观察点音频文件的本地路径。

数据拆分

数据集的拆分是在演讲者级别上随机采样的。也就是说,每个演讲者只在一个拆分中存在。对于每个拆分,我们根据以下条件对演讲者进行采样:

  • 训练集包含总演讲时长的98%。
  • 验证集包含总演讲时长的1%。
  • 测试集包含总演讲时长的1%。
Dataset Split Observations Total duration of speech (hours) Average duration obs. (seconds) Number of speakers
Train 818227 5383 23.69 1165
Validation 7933 52 23.50 18
Test 8884 59 23.74 11

数据集创建

有关此数据集创建的更多信息,请参阅我们博客中的文章 "Finding Speeches in the Riksdag's Debates"

策划理念

在 RixVox 之前,用于训练瑞典语的ASR模型的转录语音只有几百小时。像 Whisper 这样的 ASR 模型已经证明,通过在预训练或微调期间增加更多的监督数据,可以显著提高模型的性能。议会辩论的媒体发布在网上,与转录和其他元数据一起作为开放数据。瑞典议会的开放数据计划为创建一个高质量的瑞典语开放语音语料库提供了机会。

数据来源

瑞典议会。

初始数据收集和规范化

有关如何在辩论音频文件中对演讲进行分段和识别的信息,请参阅文章 "Finding Speeches in the Riksdag's Debates"

有关如何使用演讲分段创建最终的 RixVox 数据集的信息,请参阅文章 "RixVox: A Swedish Speech Corpus with 5500 Hours of Speech from Parliamentary Debates"

复制数据集创建的代码是开放且可在 GitHub 上获得,链接为 KBLab/riksdagen_anforanden 。使用消费级 GPU 的工作站处理所有内容可能需要1-3周的时间。

谁是数据源语言的生产者?

演讲的书面协议是由瑞典议会手动制作的。转录不总是逐字逐句,而是捕捉演讲者的意图。

演讲的分段以确定辩论中它们的开始和结束是自动完成的。将书面协议按句子级别与音频文件进行对齐也是使用 aeneas 工具自动完成的。有关详细信息,请参阅引文信息中的文章。

注释

注释过程

演讲对书面协议进行对齐的过程是自动完成的。它遵循以下一般步骤:

  • 我们使用 ASR 自动转录辩论音频文件,并为机器生成的转录获取单词时间戳。
  • 我们使用模糊字符串匹配确定演讲的大概开始/结束时间,将演讲的官方书面协议与辩论的机器生成转录进行匹配。
  • 我们使用 pyannote.audio 进行说话人辩论。
  • 我们根据模糊字符串匹配的大概开始/结束时间与说话人辩论段的重叠程度,将说话人辩论段分配给演讲。说话人辩论段的开始和结束被用作我们调整后的演讲的新开始/结束元数据。
  • 基于调整后的演讲的开始/结束元数据,我们从辩论中拆分和提取演讲的音频,然后使用 aeneas 工具将分段的演讲与书面协议进行对齐(句子级别的对齐)。
  • 谁是注释者?

    没有手动注释。

    个人信息和敏感信息

    演讲者是在瑞典议会中发表公开演讲的议会成员或部长。瑞典议会是一个公共机构,演讲作为开放数据公开在网上。

    使用数据的考虑事项

    数据的社会影响

    我们预计该数据集主要用于训练瑞典语的ASR模型。多语言ASR模型中瑞典语文本到语音的性能也可能从大规模瑞典语语音语料库的提供中受益。反过来,改进的ASR模型可以帮助增加听觉受损人士对音频和视频媒体内容的可访问性。

    该数据集还可用于训练其他音频任务的模型,如说话人分割、说话人验证和说话人识别。

    由于包含有关说话者的年龄、性别和选区的元数据,该数据集还可以用于研究ASR模型中的偏见。

    偏见讨论

    该数据集包含议会演讲,这些演讲通常比日常对话更正式。

    在创建数据集的过程中,我们发现基于说话人辩论的演讲分段在以下情况下更容易失败:前一位演讲者、议会议长和后一位演讲者全部是同一性别。然而,总体而言,只有很少的演讲被过滤出最终的 RixVox 数据集。在对数据集进行质量过滤之后,剩下了5500小时的音频。我们认为这种过滤没有引入任何显著的系统偏差。

    只对重复的常用短语进行了最小化去重。例如,"Fru talman!"、"Herr Talman!"等短语的使用很常见,属于形式上的用语。这些短语通常出现在大多数转录的开头,无论是演讲者是否说过。因此,在创建 RixVox 时,我们删除了每个演讲的第一个对齐句子。尽管如此,这些短语在演讲中经常重复。因此,在训练模型之前,进行更激进的数据去重可能会更有益。

    其他已知限制

    附加信息

    数据集策划者

    瑞典国家图书馆的 KBLab。

    未来更新

    RixVox 有可能被定期且不规则地更新,包括旧的和新的演讲。确实存在从 1966 年到 2002 年的较早录音的议会辩论,但它们尚未成为瑞典议会的开放数据的一部分。KBLab 正在探索将现有的演讲分段和对齐流程应用于这些音频,并为这些音频添加元数据的可能性。

    每年都会有新的议会辩论,近年来每年增加400-500小时的演讲时长。

    许可信息

    CC-BY 4.0

    引用瑞典议会。

    若要引用 RixVox,请随时引用引文信息中的 KBLab 博客文章。

    引文信息

    @misc{rekathati2023rixvox:,
      author = {Rekathati, Faton},
      title = {The KBLab Blog: RixVox: A Swedish Speech Corpus with 5500 Hours of Speech from Parliamentary Debates},
      url = {https://kb-labb.github.io/posts/2023-03-09-rixvox-a-swedish-speech-corpus/},
      year = {2023}
    }
    
    @misc{rekathati2023finding,
      author = {Rekathati, Faton},
      title = {The KBLab Blog: Finding Speeches in the Riksdag's Debates},
      url = {https://kb-labb.github.io/posts/2023-02-15-finding-speeches-in-the-riksdags-debates/},
      year = {2023}
    }
    

    瑞典议会。

    贡献

    感谢 @lhoestq 对数据集脚本的审查。