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 et al., 2015] 上进行预训练,能够执行流式和非流式推理。 |
wav2vec 2.0 / HuBERT / WavLM - SSL¶
接口¶
Wav2Vec2Bundle
实例化模型,这些模型生成可用于下游推理和微调的声学特征。

数据类,它捆绑了与使用预训练的 |
预训练模型¶
Wav2vec 2.0 模型(“base” 架构),在 LibriSpeech 数据集 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,未进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构),在 LibriSpeech 数据集 [Panayotov et al., 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” 架构),在来自多个数据集(Multilingual LibriSpeech [Pratap 等人,2020],CommonVoice [Ardila 等人,2020] 和 BABEL [Gales 等人,2014])的 56,000 小时未标注音频上进行预训练,未进行微调。 |
|
具有 3 亿个参数的 XLS-R 模型,在来自多个数据集(Multilingual LibriSpeech [Pratap 等人,2020],CommonVoice [Ardila 等人,2020],VoxLingua107 [Valk 和 Alumäe,2021],BABEL [Gales 等人,2014] 和 VoxPopuli [Wang 等人,2021])的 436,000 小时未标注音频上进行预训练,在 128 种语言中进行,未进行微调。 |
|
XLS-R 模型拥有 10 亿个参数,在来自多个数据集的 436,000 小时未标记音频上进行预训练(多语言 LibriSpeech [Pratap 等人,2020],CommonVoice [Ardila 等人,2020],VoxLingua107 [Valk 和 Alumäe,2021],BABEL [Gales 等人,2014],以及 VoxPopuli [Wang 等人,2021]),涵盖 128 种语言,未进行微调。 |
|
XLS-R 模型具有 20 亿个参数,在来自多个数据集的 436,000 小时未标注音频上进行预训练(多语言 LibriSpeech [Pratap 等人,2020],CommonVoice [Ardila 等人,2020],VoxLingua107 [Valk 和 Alumäe,2021],BABEL [Gales 等人,2014],以及 VoxPopuli [Wang 等人,2021])在 128 种语言中,未进行微调。 |
|
HuBERT 模型(“基础”架构),在来自 LibriSpeech 数据集的 960 小时未标注音频上进行预训练 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),未进行微调。 |
|
HuBERT 模型(“大型”架构),在来自 Libri-Light 数据集的 60,000 小时未标注音频上进行预训练 [Kahn 等人,2020],未进行微调。 |
|
HuBERT 模型(“超大型”架构),在来自 Libri-Light 数据集的 60,000 小时未标注音频上进行预训练 [Kahn 等人,2020],未进行微调。 |
|
WavLM 基础模型(“base” 架构),在 960 小时的未标注音频上进行预训练,这些音频来自 LibriSpeech 数据集 [Panayotov 等人,2015],未进行微调。 |
|
WavLM Base+ 模型(“base” 架构),在 60,000 小时的 Libri-Light 数据集 [Kahn 等人,2020]、10,000 小时的 GigaSpeech [Chen 等人,2021] 和 24,000 小时的 VoxPopuli [Wang 等人,2021] 上进行预训练,未进行微调。 |
|
WavLM 大型模型(“large” 架构),在 60,000 小时的 Libri-Light 数据集 [Kahn 等人,2020]、10,000 小时的 GigaSpeech [Chen 等人,2021] 和 24,000 小时的 VoxPopuli [Wang 等人,2021] 上进行预训练,未进行微调。 |
wav2vec 2.0 / HuBERT - 微调 ASR¶
接口¶
Wav2Vec2ASRBundle
实例化生成预定义标签概率分布的模型,可用于 ASR。

数据类,它捆绑了与使用预训练的 |
使用 Wav2Vec2ASRBundle
的教程
预训练模型¶
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在 960 小时来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的未标记音频上进行预训练,并针对 ASR 在 10 分钟来自 Libri-Light 数据集 [Kahn 等人,2020](“train-10min” 子集)的转录音频上进行微调。 |
|
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在 960 小时来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的未标记音频上进行预训练,并针对 ASR 在 100 小时来自 “train-clean-100” 子集的转录音频上进行微调。 |
|
Wav2vec 2.0 模型(“base” 架构,带有一个额外的线性模块),在 960 小时的未标记音频上进行预训练,这些音频来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合),并针对 ASR 在具有相应转录的相同音频上进行微调。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在 960 小时的未标记音频上进行预训练,这些音频来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合),并针对 ASR 在 10 分钟的转录音频上进行微调,这些音频来自 Libri-Light 数据集 [Kahn 等人,2020](“train-10min” 子集)。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在 960 小时的未标记音频上进行预训练,这些音频来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合),并针对 ASR 在 100 小时的转录音频上进行微调,这些音频来自相同数据集(“train-clean-100” 子集)。 |
|
Wav2vec 2.0 模型(“large” 架构,带有一个额外的线性模块),在 960 小时的未标记音频上进行预训练,这些音频来自 LibriSpeech 数据集 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合),并针对 ASR 在具有相应转录文本的相同音频上进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在 60,000 小时的未标记音频上进行预训练,这些音频来自 Libri-Light 数据集 [Kahn et al., 2020],并针对 ASR 在来自同一数据集的 10 分钟转录音频上进行微调(“train-10min” 子集)。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在来自 Libri-Light 数据集 [Kahn 等人,2020] 的 60,000 小时未标注音频上进行预训练,并在来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100” 子集)的 100 小时转录音频上进行微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构,带有一个额外的线性模块),在来自 Libri-Light [Kahn 等人,2020] 数据集的 60,000 小时未标注音频上进行预训练,并在来自 LibriSpeech 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时转录音频上进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 VoxPopuli 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的 10k 小时未标注音频上进行预训练,并在 “de” 子集的 282 小时转录音频上进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 *VoxPopuli* 数据集 [Wang 等人,2021] 的 10,000 小时未标记音频(“10k” 子集,包含 23 种语言)上进行预训练,并在来自“en”子集的 543 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 *VoxPopuli* 数据集 [Wang 等人,2021] 的 10,000 小时未标记音频(“10k” 子集,包含 23 种语言)上进行预训练,并在来自“es”子集的 166 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 *VoxPopuli* 数据集 [Wang 等人,2021] 的 10,000 小时未标记音频(“10k” 子集,包含 23 种语言)上进行预训练,并在来自“fr”子集的 211 小时转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在来自 *VoxPopuli* 数据集 [Wang 等人,2021] 的 10,000 小时未标记音频(“10k” 子集,包含 23 种语言)上进行预训练,并在来自“it”子集的 91 小时转录音频上针对 ASR 进行微调。 |
|
HuBERT 模型(“大型”架构),在来自 *Libri-Light* 数据集 [Kahn 等人,2020] 的 60,000 小时未标注音频上进行预训练,并在来自 *LibriSpeech* 数据集 [Panayotov 等人,2015] 的 960 小时转录音频上针对 ASR 进行微调(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。 |
|
HuBERT 模型(“超大型”架构),在来自 *Libri-Light* 数据集 [Kahn 等人,2020] 的 60,000 小时未标注音频上进行预训练,并在来自 *LibriSpeech* 数据集 [Panayotov 等人,2015] 的 960 小时转录音频上针对 ASR 进行微调(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。 |
wav2vec 2.0 / HuBERT - 强制对齐¶
接口¶
Wav2Vec2FABundle
包含预训练模型及其关联字典。此外,它支持追加 star
令牌维度。

将相关信息捆绑在一起的数据类,用于使用预训练的 |
|
分词器的接口 |
|
对齐器的接口 |
使用 Wav2Vec2FABundle
的教程
预训练模型¶
在来自 Scaling Speech Technology to 1,000+ Languages 的 1,130 种语言的 31,000 小时数据上训练 [Pratap 等人,2023]。 |
Tacotron2 文本到语音¶
Tacotron2TTSBundle
定义了文本到语音管道,包括三个步骤:分词、频谱图生成和声码器。频谱图生成基于 Tacotron2
模型。

TextProcessor
可以是基于规则的分词,例如字符,也可以是基于神经网络的 G2P 模型,从输入文本生成音素序列。
类似地,Vocoder
可以是无学习参数的算法,例如 Griffin-Lim,也可以是基于神经网络的模型,例如 Waveglow。
接口¶
将相关信息捆绑在一起的数据类,用于使用预训练的 Tacotron2 和声码器。 |
|
Tacotron2TTS 管道文本处理部分的接口 |
|
Tacotron2TTS 管道声码器部分的接口 |
使用 Tacotron2TTSBundle
的教程
预训练模型¶
基于音素的 TTS 管道,使用在 LJSpeech 上训练的 |
|
基于字符的 TTS 管线,使用 |
|
基于音素的 TTS 管线,使用 |
|
基于字符的 TTS 管线,使用 |
源分离¶
接口¶
SourceSeparationBundle
实例化源分离模型,该模型接收单声道音频并生成多声道音频。

用于执行源分离的组件的 Dataclass。 |
使用 SourceSeparationBundle
的教程
预训练模型¶
使用ConvTasNet [Luo 和 Mesgarani,2019] 预训练的语音分离管道,在Libri2Mix 数据集 [Cosentino 等人,2020] 上训练。 |
|
使用混合 Demucs [Défossez,2021] 预训练的音乐源分离管道,在 MUSDB-HQ 的训练集和测试集 [Rafii 等人,2019] 以及 Meta 内部数据库中专门为 Meta 制作的另外 150 首歌曲上训练。 |
|
使用混合 Demucs [Défossez,2021] 预训练的音乐源分离管道,在 MUSDB-HQ 的训练集 [Rafii 等人,2019] 上训练。 |
Squim 目标¶
接口¶
SquimObjectiveBundle
定义了语音质量和清晰度测量 (SQUIM) 管道,可以根据输入波形预测 **客观** 指标分数。
数据类,捆绑了使用预训练的 |
预训练模型¶
使用 [Kumar 等人,2023] 中描述的方法在 DNS 2020 数据集 [Reddy 等人,2020] 上训练的 SquimObjective 管道。 |
Squim 主观¶
接口¶
SquimSubjectiveBundle
定义了语音质量和清晰度测量 (SQUIM) 管道,可以根据输入波形预测 **主观** 指标分数。
数据类,捆绑了使用预训练的 |
预训练模型¶
Squim 主观管道,如 [Manocha 和 Kumar,2022] 和 [Kumar 等人,2023] 中所述,在 BVCC [Cooper 和 Yamagishi,2021] 和 DAPS [Mysore,2014] 数据集上训练。 |