torchaudio.pipelines¶
The torchaudio.pipelines 模块将预训练模型与支持函数及元数据打包,提供专为执行特定任务而设计的简单 API。
在使用预训练模型执行任务时,除了使用预训练权重实例化模型外,客户端代码还需要以与训练期间相同的方式构建特征提取和后处理流程。这需要传递训练过程中使用的信息,例如变换类型及其参数(例如采样率和 FFT 频带数量)。
为了使这些信息与预训练模型关联并易于访问,torchaudio.pipelines模块使用了Bundle类的概念,该类定义了一组用于实例化流水线以及流水线接口的API。
下图说明了这一点。
预训练模型及其相关流程被表达为 Bundle 的一个实例。相同 Bundle 的不同实例共享接口,但其实现不受限于必须为相同类型。例如,SourceSeparationBundle 定义了执行源分离的接口,但其实例 CONVTASNET_BASE_LIBRI2MIX 实例化了 ConvTasNet 的模型,而 HDEMUCS_HIGH_MUSDB 则实例化了 HDemucs 的模型。尽管如此,由于它们共享相同的接口,因此用法是相同的。
注意
在底层,Bundle 的实现使用了来自其他 torchaudio 模块的组件,例如 torchaudio.models 和 torchaudio.transforms,甚至是第三方库如 SentencPiece 和 DeepPhonemizer。但这一实现细节对库用户是抽象隐藏的。
RNN-T 流式/非流式 ASR¶
接口¶
RNNTBundle 定义 ASR 流程,包含三个步骤:特征提取、推理和去标记化。
用于捆绑组件以执行基于 RNN-T 模型的自动语音识别(ASR,即语音转文本)推理的数据类。 |
|
RNN-T 流水线中特征提取部分的接口 |
|
RNN-T 流水线中令牌处理器部分的接口 |
使用 RNNTBundle 的教程
预训练模型¶
基于 Emformer-RNNT 的 ASR 流水线,在 LibriSpeech 数据集上预训练 [Panayotov et al., 2015],能够执行流式和非流式推理。 |
wav2vec 2.0 / HuBERT / WavLM - SSL¶
接口¶
Wav2Vec2Bundle 实例化生成声学特征的模型,这些特征可用于下游推理和微调。
数据类,用于捆绑相关信息以使用预训练的 |
预训练模型¶
Wav2vec 2.0 模型("base"架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),未经过微调。 |
|
Wav2vec 2.0 模型("large"架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上预训练 [Panayotov et al., 2015]("train-clean-100"、"train-clean-360"和"train-other-500"的组合),未经过微调。 |
|
Wav2vec 2.0 模型("large-lv60k" 架构),在来自 Libri-Light 数据集的 60,000 小时未标记音频上预训练 [Kahn et al., 2020],未经微调。 |
|
Wav2vec 2.0 模型("base"架构),在来自多个数据集的 56,000 小时无标签音频上进行预训练(多语言 LibriSpeech [Pratap et al., 2020]、CommonVoice [Ardila et al., 2020] 和 BABEL [Gales et al., 2014]),未经过微调。 |
|
XLS-R 模型,包含 3 亿参数,在来自多个数据集的 436,000 小时无标签音频上进行预训练(Multilingual LibriSpeech [Pratap et al., 2020]、CommonVoice [Ardila et al., 2020]、VoxLingua107 [Valk and Alumäe, 2021]、BABEL [Gales et al., 2014]以及VoxPopuli [Wang et al., 2021]),涵盖 128 种语言,未经过微调。 |
|
XLS-R 模型,拥有 10 亿参数,在来自多个数据集的 436,000 小时未标记音频上进行预训练(Multilingual LibriSpeech [Pratap et al., 2020]、CommonVoice [Ardila et al., 2020]、VoxLingua107 [Valk and Alumäe, 2021]、BABEL [Gales et al., 2014]以及VoxPopuli [Wang et al., 2021]),涵盖 128 种语言,未经过微调。 |
|
XLS-R 模型,拥有 20 亿参数,在来自多个数据集的 436,000 小时未标记音频上进行预训练(Multilingual LibriSpeech [Pratap et al., 2020]、CommonVoice [Ardila et al., 2020]、VoxLingua107 [Valk and Alumäe, 2021]、BABEL [Gales et al., 2014]以及VoxPopuli [Wang et al., 2021]),涵盖 128 种语言,未经过微调。 |
|
HuBERT 模型("base"架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),未经过微调。 |
|
HuBERT 模型("large"架构),在来自 Libri-Light 数据集的 60,000 小时无标签音频上进行了预训练 [Kahn et al., 2020],未经过微调。 |
|
HuBERT模型(“超大”架构),在60,000小时的未标记音频上预训练,数据集来自Libri-Light [Kahn et al., 2020],未经微调。 |
|
WavLM 基础模型("base"架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015],未经过微调。 |
|
WavLM Base+ 模型("base"架构),在 Libri-Light 数据集的 60,000 小时 [Kahn et al., 2020]、GigaSpeech 的 10,000 小时 [Chen et al., 2021] 以及 VoxPopuli 的 24,000 小时 [Wang et al., 2021] 上进行了预训练,未进行微调。 |
|
WavLM Large 模型("large"架构),在 60,000 小时的 Libri-Light 数据集 [Kahn et al., 2020]、10,000 小时的 GigaSpeech [Chen et al., 2021] 以及 24,000 小时的 VoxPopuli [Wang et al., 2021] 上进行预训练,未经过微调。 |
wav2vec 2.0 / HuBERT - 微调后的自动语音识别¶
接口¶
Wav2Vec2ASRBundle 实例化生成预定义标签上概率分布的模型,可用于自动语音识别(ASR)。
数据类,用于捆绑相关信息以使用预训练的 |
使用 Wav2Vec2ASRBundle 的教程
预训练模型¶
Wav2vec 2.0 模型(带有额外线性模块的 "base" 架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在来自 Libri-Light 数据集的 10 分钟转录音频上针对 ASR 进行了微调 [Kahn et al., 2020]("train-10min" 子集)。 |
|
Wav2vec 2.0 模型(带有额外线性模块的 "base" 架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包括 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在 "train-clean-100" 子集的 100 小时转录音频上针对 ASR 进行了微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的 "base" 架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在相同音频及其对应的转录文本上针对自动语音识别(ASR)任务进行了微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的"large"架构),在来自 LibriSpeech 数据集的 960 小时未标注音频上进行预训练 [Panayotov et al., 2015](包括 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在来自 Libri-Light 数据集的 10 分钟已转录音频上针对 ASR 进行了微调 [Kahn et al., 2020]("train-10min" 子集)。 |
|
Wav2vec 2.0 模型(采用带有额外线性模块的“large”架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在同一数据集的 100 小时已转录音频("train-clean-100" 子集)上针对自动语音识别(ASR)进行了微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large”架构),在来自 LibriSpeech 数据集的 960 小时无标签音频上进行了预训练 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合),并在相同音频及其对应的转录文本上针对自动语音识别(ASR)任务进行了微调。 |
|
Wav2vec 2.0 模型("large-lv60k" 架构,带有一个额外的线性模块),在来自 Libri-Light 数据集的 60,000 小时无标签音频上预训练 [Kahn et al., 2020],并在同一数据集的 10 分钟转录音频上进行微调("train-10min" 子集)。 |
|
Wav2vec 2.0 模型(采用带有额外线性模块的 "large-lv60k" 架构),在来自 Libri-Light 数据集的 60,000 小时无标签音频上进行预训练 [Kahn et al., 2020],并在来自 LibriSpeech 数据集的 100 小时转录音频上针对 ASR 进行微调 [Panayotov et al., 2015]("train-clean-100" 子集)。 |
|
Wav2vec 2.0 模型(“large-lv60k”架构,带有一个额外的线性模块),在来自Libri-Light [Kahn et al., 2020] 数据集的60,000小时未标记音频上预训练,并在来自LibriSpeech数据集LibriSpeech数据集 [Panayotov et al., 2015](“train-clean-100”,“train-clean-360”和“train-other-500”的组合)上进行ASR微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 10k 小时无标签音频上进行了预训练 [Wang et al., 2021]("10k" 子集,包含 23 种语言),并在来自 "de" 子集的 282 小时转录音频上针对 ASR 进行了微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 10k 小时无标签音频上进行了预训练 [Wang et al., 2021]("10k" 子集,包含 23 种语言),并在来自 "en" 子集的 543 小时转录音频上针对 ASR 进行了微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 10k 小时无标签音频上进行了预训练 [Wang et al., 2021]("10k" 子集,包含 23 种语言),并在来自 "es" 子集的 166 小时转录音频上针对 ASR 进行了微调。 |
|
wav2vec 2.0 模型("base"架构),在来自 VoxPopuli 数据集的 10k 小时无标签音频上进行了预训练 [Wang et al., 2021]("10k"子集,包含 23 种语言),并在来自 "fr" 子集的 211 小时转录音频上针对 ASR 进行了微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 10k 小时无标签音频上进行了预训练 [Wang et al., 2021]("10k" 子集,包含 23 种语言),并在来自 "it" 子集的 91 小时转录音频上针对 ASR 进行了微调。 |
|
HuBERT 模型("large"架构),在来自 Libri-Light 数据集的 60,000 小时无标签音频上进行预训练 [Kahn et al., 2020],并在来自 LibriSpeech 数据集的 960 小时转录音频上针对 ASR 进行微调 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合)。 |
|
HuBERT 模型(“超大”架构),在来自 Libri-Light 数据集的 60,000 小时无标签音频上进行预训练 [Kahn et al., 2020],并在来自 LibriSpeech 数据集的 960 小时转录音频上针对 ASR 进行微调 [Panayotov et al., 2015](包含 "train-clean-100"、"train-clean-360" 和 "train-other-500" 的组合)。 |
wav2vec 2.0 / HuBERT - 强制对齐¶
接口¶
Wav2Vec2FABundle 捆绑了预训练模型及其关联的词典。此外,它还支持附加 star 个 token 维度。
数据类,用于捆绑相关信息以使用预训练的 |
|
分词器的接口 |
|
对齐器的界面 |
使用 Wav2Vec2FABundle 的教程
预训练模型¶
在31,000小时的数据上训练,涵盖1,130种语言,来自将语音技术扩展到1,000多种语言 [Pratap et al., 2023]。 |
Tacotron2 文本转语音¶
Tacotron2TTSBundle 定义了文本到语音的生成流程,包含三个步骤:分词、语谱图生成和声码器。其中语谱图的生成基于 Tacotron2 模型。
TextProcessor 在字符情况下可以是基于规则的标记化,也可以是基于神经网络的 G2P 模型,该模型从输入文本生成音素序列。
同样地,Vocoder 可以是一种不学习参数的算法,如 Griffin-Lim,也可以是基于神经网络的模型,如 Waveglow。
接口¶
用于捆绑关联信息以使用预训练 Tacotron2 和声码器的数据类。 |
|
Tacotron2TTS 流程中文本处理部分的接口 |
|
Tacotron2TTS 流程中声码器部分的接口 |
使用 Tacotron2TTSBundle 的教程
预训练模型¶
基于音素的TTS流水线,使用 |
|
基于字符的 TTS 流水线,其中 |
|
基于音素的TTS流水线,使用 |
|
基于字符的TTS管道,使用 |
源分离¶
接口¶
SourceSeparationBundle 实例化源分离模型,该模型接收单通道音频并生成多通道音频。
用于执行源分离的组件捆绑数据类。 |
使用 SourceSeparationBundle 的教程
预训练模型¶
使用 ConvTasNet [Luo and Mesgarani, 2019] 训练的预训练源分离流程,基于 Libri2Mix 数据集 [Cosentino et al., 2020]。 |
|
预训练的音乐源分离流程,采用 Hybrid Demucs [Défossez, 2021],在 MUSDB-HQ 的训练集和测试集 [Rafii et al., 2019] 以及来自 Meta 内部数据库的额外 150 首专门制作的歌曲上进行训练。 |
|
使用 Hybrid Demucs 预训练的音乐源分离流程 [Défossez, 2021],该模型在 MUSDB-HQ 的训练集上进行了训练 [Rafii et al., 2019]。 |
Squim 目标¶
接口¶
SquimObjectiveBundle 定义了语音质量和可懂度测量(SQUIM)流程,该流程可以根据输入波形预测客观指标分数。
数据类,用于捆绑相关信息以使用预训练 |
预训练模型¶
SquimObjective 管道使用在 [Kumar et al., 2023] 中描述的方法,基于 DNS 2020 数据集 [Reddy et al., 2020] 进行训练。 |
Squim 主观¶
接口¶
SquimSubjectiveBundle 定义了语音质量和可懂度测量 (SQUIM) 流程,可根据输入波形预测主观指标分数。
数据类,用于捆绑相关信息以使用预训练 |
预训练模型¶
SquimSubjective 管道如 [Manocha 和 Kumar, 2022] 和 [Kumar 等人, 2023] 所述,在 BVCC [Cooper 和 Yamagishi, 2021] 和 DAPS [Mysore, 2014] 数据集上进行了训练。 |