英文

同时还有一个新的libritts-r数据集的相同数据集。标识为 cdminix/libritts-r-aligned

带强制对齐的LibriTTS数据集卡片(以及度量标准)

该数据集会在您的计算机上下载LibriTTS并对其进行预处理,使用 montreal forced aligner 创建对齐。在使用该数据集之前,您需要先运行 pip install alignments phones。第一次运行可能需要一两个小时,但后续运行将非常快速。

需求

  • pip install alignments phones(必需)
  • pip install speech-collator(可选)

示例项目

{
    'id': '100_122655_000073_000002.wav',
    'speaker': '100',
    'text': 'the day after, diana and mary quitted it for distant b.',
    'start': 0.0,
    'end': 3.6500000953674316, 
    'phones': ['[SILENCE]', 'ð', 'ʌ', '[SILENCE]', 'd', 'eɪ', '[SILENCE]', 'æ', 'f', 't', 'ɜ˞', '[COMMA]', 'd', 'aɪ', 'æ', 'n', 'ʌ', '[SILENCE]', 'æ', 'n', 'd', '[SILENCE]', 'm', 'ɛ', 'ɹ', 'i', '[SILENCE]', 'k', 'w', 'ɪ', 't', 'ɪ', 'd', '[SILENCE]', 'ɪ', 't', '[SILENCE]', 'f', 'ɜ˞', '[SILENCE]', 'd', 'ɪ', 's', 't', 'ʌ', 'n', 't', '[SILENCE]', 'b', 'i', '[FULL STOP]'], 
    'phone_durations': [5, 2, 4, 0, 5, 13, 0, 16, 7, 5, 20, 2, 6, 9, 15, 4, 2, 0, 11, 3, 5, 0, 3, 8, 9, 8, 0, 13, 3, 5, 3, 6, 4, 0, 8, 5, 0, 9, 5, 0, 7, 5, 6, 7, 4, 5, 10, 0, 3, 35, 9],
    'audio': '/dev/shm/metts/train-clean-360-alignments/100/100_122655_000073_000002.wav'
}

这些电话是IPA电话,电话持续时间以帧为单位(假设跳跃长度为256,采样率为22050,窗口长度为1024)。可以使用hop_length、sample_rate和window_length参数来更改这些属性到LibriTTSAlign。

数据整合器

该数据集附带一个数据整合器,可以用于创建训练数据的批次。可以使用pip install speech-collator( MiniXC/speech-collator )进行安装,并按照以下方式使用:

import json
from datasets import load_dataset
from speech_collator import SpeechCollator
from torch.utils.data import DataLoader

dataset = load_dataset('cdminix/libritts-aligned', split="train")

speaker2ixd = json.load(open("speaker2idx.json"))
phone2ixd = json.load(open("phone2idx.json"))

collator = SpeechCollator(
    speaker2ixd=speaker2idx,
    phone2ixd=phone2idx ,
)
dataloader = DataLoader(dataset, collate_fn=collator.collate_fn, batch_size=8)

您可以从 here 下载speaker2idx.json和phone2idx.json文件,也可以使用以下代码自己创建它们:

import json
from datasets import load_dataset
from speech_collator import SpeechCollator, create_speaker2idx, create_phone2idx

dataset = load_dataset("cdminix/libritts-aligned", split="train")

# Create speaker2idx and phone2idx
speaker2idx = create_speaker2idx(dataset, unk_idx=0)
phone2idx = create_phone2idx(dataset, unk_idx=0)

# save to json
with open("speaker2idx.json", "w") as f:
    json.dump(speaker2idx, f)
with open("phone2idx.json", "w") as f:
    json.dump(phone2idx, f)

度量标准

当使用speech-collator时,还可以使用measures参数来指定要使用的度量标准。以下示例实时提取音高和能量。

import json
from torch.utils.data import DataLoader
from datasets import load_dataset
from speech_collator import SpeechCollator, create_speaker2idx, create_phone2idx
from speech_collator.measures import PitchMeasure, EnergyMeasure

dataset = load_dataset("cdminix/libritts-aligned", split="train")

speaker2idx = json.load(open("data/speaker2idx.json"))
phone2idx = json.load(open("data/phone2idx.json"))

# Create SpeechCollator
speech_collator = SpeechCollator(
    speaker2idx=speaker2idx,
    phone2idx=phone2idx,
    measures=[PitchMeasure(), EnergyMeasure()],
    return_keys=["measures"]
)

# Create DataLoader
dataloader = DataLoader(
    dataset,
    batch_size=8,
    collate_fn=speech_collator.collate_fn,
)

即将推出:详细说明如何使用度量标准,位置在 MiniXC/speech-collator

拆分

该数据集有以下拆分:

  • train:除了每个说话者的一个样本用于验证之外,所有训练数据。
  • dev:验证数据,每个说话者一个样本。
  • train.clean.100:从LibriSpeech的train-clean-100子集的原始材料派生的训练集。
  • train.clean.360:从LibriSpeech的train-clean-360子集的原始材料派生的训练集。
  • train.other.500:从LibriSpeech的train-other-500子集的原始材料派生的训练集。
  • dev.clean:从LibriSpeech的dev-clean子集的原始材料派生的验证集。
  • dev.other:从LibriSpeech的dev-other子集的原始材料派生的验证集。
  • test.clean:从LibriSpeech的test-clean子集的原始材料派生的测试集。
  • test.other:从LibriSpeech的test-other子集的原始材料派生的测试集。

环境变量

可以设置一些环境变量。

  • LIBRITTS_VERBOSE:如果设置,将打印出有关数据集创建过程的更多信息。
  • LIBRITTS_MAX_WORKERS:创建对齐时要使用的工作线程数。默认为cpu_count()。
  • LIBRITTS_PATH:下载LibriTTS的路径。默认为HF_DATASETS_CACHE的值。

引用

使用LibriTTS时,请引用以下论文:

使用度量标准时,请引用以下论文(我们的):