torchaudio.pipelines¶
The 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 模型(“基础”架构),在 960 小时的 LibriSpeech 数据集 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)上的未标记音频上预训练,未经微调。 |
|
Wav2vec 2.0 模型(“大型”架构),在 960 小时的 LibriSpeech 数据集 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)上的未标记音频上预训练,未经微调。 |
|
Wav2vec 2.0 模型(“large-lv60k” 架构),在 60,000 小时的 Libri-Light 数据集 [Kahn et al., 2020] 上的未标记音频上预训练,未经微调。 |
|
Wav2vec 2.0 模型(“base” 架构),在来自多个数据集(Multilingual LibriSpeech [Pratap et al., 2020]、CommonVoice [Ardila et al., 2020] 和 BABEL [Gales et al., 2014])的 56,000 小时未标记音频上进行预训练,未进行微调。 |
|
XLS-R 模型,具有 3 亿个参数,在来自多个数据集(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 种语言,未进行微调。 |
|
XLS-R 模型,具有 10 亿个参数,在来自多个数据集(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 种语言,未进行微调。 |
|
XLS-R 模型,具有 20 亿个参数,在来自多个数据集(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](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的 960 小时未标记音频上进行预训练,未进行微调。 |
|
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” 架构),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时、GigaSpeech [Chen et al., 2021] 的 10,000 小时和 VoxPopuli [Wang et al., 2021] 的 24,000 小时未标记音频上进行预训练,未进行微调。 |
|
WavLM Large 模型(“large” 架构),在 Libri-Light 数据集 [Kahn et al., 2020] 的 60,000 小时、GigaSpeech [Chen et al., 2021] 的 10,000 小时和 VoxPopuli [Wang et al., 2021] 的 24,000 小时未标记音频上进行预训练,未进行微调。 |
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” 的组合)的未标记音频上进行预训练,并在 10 分钟来自 _Libri-Light_ 数据集 [Kahn 等人,2020](“train-10min” 子集)的转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“base”架构),在 960 小时来自 _LibriSpeech_ 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的未标记音频上进行预训练,并在 100 小时来自 “train-clean-100” 子集的转录音频上针对 ASR 进行微调。 |
|
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” 的组合)的未标记音频上进行预训练,并在 10 分钟来自 _Libri-Light_ 数据集 [Kahn 等人,2020](“train-10min” 子集)的转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large”架构),在 960 小时来自 _LibriSpeech_ 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的未标记音频上进行预训练,并在相同数据集(“train-clean-100” 子集)的 100 小时转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large”架构),在 960 小时来自 _LibriSpeech_ 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的未标记音频上进行预训练,并在相同音频及其对应转录本上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large-lv60k” 架构),在 60,000 小时来自 _Libri-Light_ 数据集 [Kahn 等人,2020] 的未标记音频上进行预训练,并在相同数据集(“train-10min” 子集)的 10 分钟转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large-lv60k” 架构),在 60,000 小时来自 _Libri-Light_ 数据集 [Kahn 等人,2020] 的未标记音频上进行预训练,并在 100 小时来自 _LibriSpeech_ 数据集 [Panayotov 等人,2015](“train-clean-100” 子集)的转录音频上针对 ASR 进行微调。 |
|
Wav2vec 2.0 模型(带有额外线性模块的“large-lv60k” 架构),在 60,000 小时来自 _Libri-Light_ [Kahn 等人,2020] 数据集的未标记音频上进行预训练,并在 960 小时来自 _LibriSpeech_ 数据集 [Panayotov 等人,2015](“train-clean-100”、“train-clean-360” 和 “train-other-500” 的组合)的转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在 10k 小时来自 _VoxPopuli_ 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的未标记音频上进行预训练,并在 282 小时来自 “de” 子集的转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在 10k 小时来自 _VoxPopuli_ 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的未标记音频上进行预训练,并在 543 小时来自 “en” 子集的转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在 10k 小时来自 _VoxPopuli_ 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的未标记音频上进行预训练,并在 166 小时来自 “es” 子集的转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在 10k 小时来自 _VoxPopuli_ 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的未标记音频上进行预训练,并在 211 小时来自 “fr” 子集的转录音频上针对 ASR 进行微调。 |
|
wav2vec 2.0 模型(“base” 架构),在 10k 小时来自 _VoxPopuli_ 数据集 [Wang 等人,2021](“10k” 子集,包含 23 种语言)的未标记音频上进行预训练,并在 91 小时来自 “it” 子集的转录音频上针对 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[Pratap 等人,2023] 的 1,130 种语言的 31,000 小时数据上进行训练。 |
Tacotron2 文本转语音¶
Tacotron2TTSBundle
定义了文本转语音管道,并包含三个步骤:分词、频谱图生成和声码器。频谱图生成基于 Tacotron2
模型。

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

数据类,将用于执行源分离的组件捆绑在一起。 |
使用 SourceSeparationBundle
的教程
预训练模型¶
预训练的源分离管道,使用在 Libri2Mix 数据集[Cosentino 等人,2020] 上训练的 ConvTasNet[Luo 和 Mesgarani,2019]。 |
|
预训练的音乐源分离管道,使用在 MUSDB-HQ 的训练集和测试集[Rafii 等人,2019] 以及来自 Meta 内部数据库的额外 150 首歌曲(专门为 Meta 制作)上训练的 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] 数据集上训练。 |