torchaudio.pipelines¶
torchaudio.pipelines
模块将预训练模型与支持函数和元数据打包到简单的 API 中,这些 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 等人,2015] 上进行预训练,能够执行流式和非流式推理。 |
wav2vec 2.0 / HuBERT / WavLM - SSL¶
接口¶
Wav2Vec2Bundle
实例化生成声学特征的模型,这些特征可用于下游推理和微调。
一个数据类,捆绑了使用预训练 |
预训练模型¶
Wav2vec 2.0 模型(“base” 架构),在来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和“train-other-500” 的组合)的 960 小时未标记音频上进行预训练,未进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构),在来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和“train-other-500” 的组合)的 960 小时未标记音频上进行预训练,未进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构),在来自 Libri-Light 数据集 [Kahn 等人,2020] 的 60,000 小时未标记音频上进行预训练,未进行微调。 |
|
Wav2vec 2.0 模型(“base” 架构),在来自多个数据集的 56,000 小时未标注音频上进行预训练(Multilingual LibriSpeech [Pratap 等人,2020]、CommonVoice [Ardila 等人,2020] 和 BABEL [Gales 等人,2014]),未进行微调。 |
|
XLS-R 模型,拥有 3 亿个参数,在来自多个数据集的 436,000 小时未标注音频上进行预训练(Multilingual LibriSpeech [Pratap 等人,2020]、CommonVoice [Ardila 等人,2020]、VoxLingua107 [Valk 和 Alumäe,2021]、BABEL [Gales 等人,2014] 和 VoxPopuli [Wang 等人,2021])涵盖 128 种语言,未进行微调。 |
|
XLS-R 模型,拥有 10 亿个参数,在来自多个数据集的 436,000 小时未标注音频上进行预训练(Multilingual LibriSpeech [Pratap 等人,2020]、CommonVoice [Ardila 等人,2020]、VoxLingua107 [Valk 和 Alumäe,2021]、BABEL [Gales 等人,2014] 和 VoxPopuli [Wang 等人,2021])涵盖 128 种语言,未进行微调。 |
|
XLS-R 模型,拥有 20 亿个参数,在来自多个数据集的 436,000 小时未标注音频上进行预训练(Multilingual LibriSpeech [Pratap 等人,2020]、CommonVoice [Ardila 等人,2020]、VoxLingua107 [Valk 和 Alumäe,2021]、BABEL [Gales 等人,2014] 和 VoxPopuli [Wang 等人,2021])涵盖 128 种语言,未进行微调。 |
|
HuBERT 模型(“base” 架构),在 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标注音频上进行预训练,未进行微调。 |
|
HuBERT 模型(“large” 架构),在 Libri-Light 数据集 [Kahn 等人,2020]的 60,000 小时未标注音频上进行预训练,未进行微调。 |
|
HuBERT 模型(“extra large” 架构),在 Libri-Light 数据集 [Kahn 等人,2020]的 60,000 小时未标注音频上进行预训练,未进行微调。 |
|
WavLM Base 模型(“base” 架构),在 LibriSpeech 数据集 [Panayotov 等人,2015]的 960 小时未标注音频上进行预训练,未进行微调。 |
|
WavLM Base+ 模型(“base” 架构),在 Libri-Light 数据集 [Kahn 等人,2020]的 60,000 小时、GigaSpeech [Chen 等人,2021] 的 10,000 小时和 VoxPopuli [Wang 等人,2021] 的 24,000 小时未标注音频上进行预训练,未进行微调。 |
|
WavLM Large 模型(“large” 架构),在 Libri-Light 数据集 [Kahn 等人,2020]的 60,000 小时、GigaSpeech [Chen 等人,2021] 的 10,000 小时和 VoxPopuli [Wang 等人,2021] 的 24,000 小时未标注音频上进行预训练,未进行微调。 |
wav2vec 2.0 / HuBERT - 微调的 ASR¶
接口¶
Wav2Vec2ASRBundle
实例化生成预定义标签概率分布的模型,可用于 ASR。
一个数据类,捆绑了使用预训练 |
使用 Wav2Vec2ASRBundle
的教程
预训练模型¶
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在来自 Libri-Light 数据集[Kahn 等人,2020](“train-10min” 子集)的 10 分钟转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在 “train-clean-100” 子集的 100 小时转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在相同音频及其对应的转录文本上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在来自 Libri-Light 数据集[Kahn 等人,2020](“train-10min” 子集)的 10 分钟转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在相同数据集(“train-clean-100” 子集)的 100 小时转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,并在相同音频及其对应的转录文本上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在来自 Libri-Light 数据集[Kahn 等人,2020] 的 60,000 小时未标记音频上进行预训练,并在相同数据集(“train-10min” 子集)的 10 分钟转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在来自 Libri-Light 数据集[Kahn 等人,2020] 的 60,000 小时未标记音频上进行预训练,并在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100” 子集)的 100 小时转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在来自 Libri-Light [Kahn 等人,2020]数据集的 60,000 小时未标记音频上进行预训练,并在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集[Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标记音频上进行预训练,并在 “de” 子集的 282 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集[Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标记音频上进行预训练,并在 “en” 子集的 543 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集[Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标记音频上进行预训练,并在 “es” 子集的 166 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集[Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标记音频上进行预训练,并在 “fr” 子集的 211 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集[Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标记音频上进行预训练,并在 “it” 子集的 91 小时转录音频上针对 ASR 进行微调。 |
|
HuBERT 模型(“large” 架构),在来自 Libri-Light 数据集[Kahn 等人,2020] 的 60,000 小时未标记音频上进行预训练,并在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时转录音频上针对 ASR 进行微调。 |
|
HuBERT 模型(“超大”架构),在来自 Libri-Light 数据集[Kahn 等人,2020] 的 60,000 小时未标记音频上进行预训练,并在来自 LibriSpeech 数据集[Panayotov 等人,2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合)的 960 小时转录音频上针对 ASR 进行微调。 |
wav2vec 2.0 / HuBERT - 强制对齐¶
接口¶
Wav2Vec2FABundle
将预训练模型及其关联字典捆绑在一起。此外,它支持追加 star
令牌维度。
数据类,捆绑相关信息以使用预训练的 |
|
分词器的接口 |
|
对齐器的接口 |
使用 Wav2Vec2FABundle
的教程
预训练模型¶
在来自 Scaling Speech Technology to 1,000+ Languages [Pratap 等人,2023] 的 1,130 种语言的 31K 小时数据上训练。 |
Tacotron2 文本转语音¶
Tacotron2TTSBundle
定义了文本转语音管道,包括三个步骤:分词、频谱图生成和声码器。频谱图生成基于 Tacotron2
模型。
TextProcessor
可以是基于规则的分词(字符的情况下),也可以是基于神经网络的 G2P 模型,该模型从输入文本生成音素序列。
类似地,Vocoder
可以是不带学习参数的算法,如 Griffin-Lim,也可以是基于神经网络的模型,如 Waveglow。
接口¶
数据类,捆绑相关信息以使用预训练的 Tacotron2 和声码器。 |
|
Tacotron2TTS 管道文本处理部分的接口 |
|
Tacotron2TTS 管道声码器部分的接口 |
使用 Tacotron2TTSBundle
的教程
预训练模型¶
基于音素的 TTS 管道,使用在 LJSpeech [Ito 和 Johnson,2017] 上训练了 1,500 个 epoch 的 |
|
基于字符的 TTS 管道,使用在 LJSpeech [Ito 和 Johnson,2017] 上训练了 1,500 个 epoch 的 |
|
基于音素的 TTS 管道,使用在 LJSpeech [Ito 和 Johnson,2017] 上训练了 1,500 个 epoch 的 |
|
基于字符的 TTS 管道,使用在 LJSpeech [Ito 和 Johnson,2017] 上训练了 1,500 个 epoch 的 |
声源分离¶
接口¶
SourceSeparationBundle
实例化声源分离模型,这些模型接收单通道音频并生成多通道音频。
数据类,捆绑用于执行声源分离的组件。 |
使用 SourceSeparationBundle
的教程
预训练模型¶
预训练的声源分离管道,使用在 Libri2Mix 数据集 [Cosentino 等人,2020] 上训练的 ConvTasNet [Luo 和 Mesgarani,2019]。 |
|
预训练的音乐声源分离管道,使用在 MUSDB-HQ [Rafii 等人,2019] 的训练集和测试集以及 Meta 内部数据库中额外 150 首专门制作的歌曲上训练的 Hybrid Demucs [Défossez,2021]。 |
|
预训练的音乐声源分离管道,使用在 MUSDB-HQ [Rafii 等人,2019] 的训练集上训练的 Hybrid Demucs [Défossez,2021]。 |
Squim 目标¶
接口¶
SquimObjectiveBundle
定义了语音质量和可懂度测量 (SQUIM) 管道,该管道可以根据输入波形预测**客观**指标得分。
数据类,捆绑相关信息以使用预训练的 |
预训练模型¶
使用 [Kumar 等人,2023] 中描述的方法在 DNS 2020 数据集 [Reddy 等人,2020] 上训练的 SquimObjective 管道。 |
Squim 主观¶
接口¶
SquimSubjectiveBundle
定义了语音质量和可懂度测量 (SQUIM) 管道,该管道可以根据输入波形预测**主观**指标得分。
用于捆绑相关信息以使用预训练的 |
预训练模型¶
SquimSubjective 管道根据[Manocha 和 Kumar,2022] 和 [Kumar 等人,2023] 中描述的方法,在 BVCC [Cooper 和 Yamagishi,2021] 和 DAPS [Mysore,2014] 数据集上进行了训练。 |