torchaudio.pipelines¶
torchaudio.pipelines
模块将预训练模型与支持函数和元数据打包成针对特定任务量身定制的简单 API。
在使用预训练模型执行任务时,除了使用预训练权重实例化模型外,客户端代码还需要以与训练期间相同的方式构建特征提取和后处理的流水线。这需要保留训练期间使用的信息,例如变换的类型及其参数(例如,采样率和 FFT bin 的数量)。
为了使这些信息与预训练模型相关联并易于访问,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, speech-to-text) 推理所需组件的数据类。 |
|
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 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,未微调。 |
|
Wav2vec 2.0 模型(“large”架构),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,未微调。 |
|
Wav2vec 2.0 模型(“large-lv60k”架构),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,未微调。 |
|
Wav2vec 2.0 模型(“base”架构),在多个数据集( Multilingual LibriSpeech [Pratap et al., 2020]、 CommonVoice [Ardila et al., 2020] 和 BABEL [Gales et al., 2014])的 56,000 小时无标签音频上预训练,未微调。 |
|
参数量为 3 亿的 XLS-R 模型,在来自多个数据集( 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])的 436,000 小时无标签音频上预训练(涵盖 128 种语言),未微调。 |
|
参数量为 10 亿的 XLS-R 模型,在来自多个数据集( 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])的 436,000 小时无标签音频上预训练(涵盖 128 种语言),未微调。 |
|
参数量为 20 亿的 XLS-R 模型,在来自多个数据集( 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])的 436,000 小时无标签音频上预训练(涵盖 128 种语言),未微调。 |
|
HuBERT 模型(“base”架构),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,未微调。 |
|
HuBERT 模型(“large”架构),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,未微调。 |
|
HuBERT 模型(“extra large”架构),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,未微调。 |
|
WavLM Base 模型(“base”架构),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频上预训练,未微调。 |
|
WavLM Base+ 模型(“base”架构),在 60,000 小时 Libri-Light 数据集 [Kahn et al., 2020]、10,000 小时 GigaSpeech [Chen et al., 2021] 和 24,000 小时 VoxPopuli [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 - 微调 ASR¶
接口¶
Wav2Vec2ASRBundle
实例化能够生成预定义标签概率分布的模型,这些模型可用于 ASR。

数据类,捆绑了使用预训练 |
使用 Wav2Vec2ASRBundle
的教程
预训练模型¶
Wav2vec 2.0 模型(“base”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并在 Libri-Light 数据集 [Kahn et al., 2020] 的 10 分钟转录音频(“train-10min”子集)上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“base”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并在“train-clean-100”子集的 100 小时转录音频上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“base”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并使用相应的转录文本对相同的音频为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并在 Libri-Light 数据集 [Kahn et al., 2020] 的 10 分钟转录音频(“train-10min”子集)上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并在相同数据集的 100 小时转录音频(“train-clean-100”子集)上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large”架构,包含额外的线性模块),在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时无标签音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上预训练,并使用相应的转录文本对相同的音频为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large-lv60k”架构,包含额外的线性模块),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,并在相同数据集的 10 分钟转录音频(“train-10min”子集)上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large-lv60k”架构,包含额外的线性模块),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,并在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 100 小时转录音频(“train-clean-100”子集)上为 ASR 任务进行了微调。 |
|
Wav2vec 2.0 模型(“large-lv60k”架构,包含额外的线性模块),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时无标签音频上预训练,并在 LibriSpeech 数据集 [Panayotov et al., 2015] 的 960 小时转录音频(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)上为 ASR 任务进行了微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 1 万小时无标注音频上进行预训练 [Wang et al., 2021] ("10k" 子集,包含 23 种语言),并在 "de" 子集的 282 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 1 万小时无标注音频上进行预训练 [Wang et al., 2021] ("10k" 子集,包含 23 种语言),并在 "en" 子集的 543 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 1 万小时无标注音频上进行预训练 [Wang et al., 2021] ("10k" 子集,包含 23 种语言),并在 "es" 子集的 166 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 1 万小时无标注音频上进行预训练 [Wang et al., 2021] ("10k" 子集,包含 23 种语言),并在 "fr" 子集的 211 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型("base" 架构),在来自 VoxPopuli 数据集的 1 万小时无标注音频上进行预训练 [Wang et al., 2021] ("10k" 子集,包含 23 种语言),并在 "it" 子集的 91 小时转录音频上针对 ASR 进行微调。 |
|
HuBERT 模型("large" 架构),在来自 Libri-Light 数据集的 6 万小时无标注音频上进行预训练 [Kahn et al., 2020] ,并在来自 LibriSpeech 数据集的 960 小时转录音频上针对 ASR 进行微调 [Panayotov et al., 2015] (结合了 "train-clean-100"、"train-clean-360" 和 "train-other-500" 子集)。 |
|
HuBERT 模型("extra large" 架构),在来自 Libri-Light 数据集的 6 万小时无标注音频上进行预训练 [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
的教程
预训练模型¶
在来自 Scaling Speech Technology to 1,000+ Languages 的 3.1 万小时(1130 种语言)数据上进行训练 [Pratap et al., 2023]。 |
Tacotron2 文本到语音¶
Tacotron2TTSBundle
定义了文本到语音的管道,包含三个步骤:分词、声谱图生成和声码器。声谱图生成基于 Tacotron2
模型。

TextProcessor
可以是基于规则的字符分词,也可以是基于神经网络的 G2P 模型,用于从输入文本生成音素序列。
类似地,Vocoder
可以是一个不含学习参数的算法,如 Griffin-Lim,也可以是基于神经网络的模型,如 Waveglow。
接口¶
用于打包关联信息的数据类,以便使用预训练的 Tacotron2 和声码器。 |
|
Tacotron2TTS 管道中文本处理部分的接口 |
|
Tacotron2TTS 管道中声码器部分的接口 |
使用 Tacotron2TTSBundle
的教程
预训练模型¶
基于音素的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上训练了 1,500 轮的 |
|
基于字符的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上训练了 1,500 轮的 |
|
基于音素的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上训练了 1,500 轮的 |
|
基于字符的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上训练了 1,500 轮的 |
音源分离¶
接口¶
SourceSeparationBundle
实例化音源分离模型,该模型接收单通道音频并生成多通道音频。

用于打包执行音源分离所需组件的数据类。 |
使用 SourceSeparationBundle
的教程
预训练模型¶
预训练的音源分离管道,使用在 Libri2Mix dataset [Cosentino et al., 2020] 上训练的 ConvTasNet [Luo and Mesgarani, 2019] 模型。 |
|
预训练的音乐音源分离管道,使用在 MUSDB-HQ [Rafii et al., 2019] 的训练集和测试集以及专为 Meta 制作的内部数据库中的额外 150 首歌曲上训练的 Hybrid Demucs [Défossez, 2021] 模型。 |
|
预训练的音乐音源分离管道,使用在 MUSDB-HQ [Rafii et al., 2019] 的训练集上训练的 Hybrid Demucs [Défossez, 2021] 模型。 |
Squim 客观指标¶
接口¶
SquimObjectiveBundle
定义了语音质量和可懂度测量 (SQUIM) 管道,可以根据输入波形预测**客观**度量分数。
用于打包关联信息的数据类,以便使用预训练的 |
预训练模型¶
SquimObjective 管道,使用 [Kumar et al., 2023] 中描述的方法在 DNS 2020 Dataset [Reddy et al., 2020] 上进行训练。 |
Squim 主观指标¶
接口¶
SquimSubjectiveBundle
定义了语音质量和可懂度测量 (SQUIM) 管道,可以根据输入波形预测**主观**度量分数。
用于打包关联信息的数据类,以便使用预训练的 |
预训练模型¶
SquimSubjective 管道,按照 [Manocha and Kumar, 2022] 和 [Kumar et al., 2023] 中描述的方法在 BVCC [Cooper and Yamagishi, 2021] 和 DAPS [Mysore, 2014] 数据集上进行训练。 |