• 文档 >
  • torchaudio.pipelines >
  • 旧版本 (稳定版)
快捷方式

torchaudio.pipelines

The torchaudio.pipelines 模块将预训练模型与支持函数和元数据打包成简单的 API,以执行特定任务。

在使用预训练模型执行任务时,除了使用预训练权重实例化模型外,客户端代码还需要像训练期间那样构建用于特征提取和后处理的管道。这需要传递训练期间使用的信息,例如转换的类型及其参数(例如,采样率,FFT 单元的数量)。

为了使这些信息与预训练模型关联并易于访问,torchaudio.pipelines 模块使用了 Bundle 类概念,该类定义了一组用于实例化管道的 API 以及管道的接口。

下图对此进行了说明。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-intro.png

预训练模型和相关管道表示为 Bundle 的实例。同一 Bundle 的不同实例共享接口,但其实现不限于同一类型。例如,SourceSeparationBundle 定义了执行源分离的接口,但其实例 CONVTASNET_BASE_LIBRI2MIX 实例化了 ConvTasNet 模型,而 HDEMUCS_HIGH_MUSDB 实例化了 HDemucs 模型。尽管如此,由于它们共享相同的接口,因此使用方式是相同的。

注意

在底层,Bundle 的实现使用了来自其他 torchaudio 模块(如 torchaudio.modelstorchaudio.transforms)的组件,甚至第三方库(如 SentencPieceDeepPhonemizer)的组件。但这些实现细节对库用户是抽象的。

RNN-T 流式/非流式 ASR

接口

RNNTBundle 定义了 ASR 管道,并包含三个步骤:特征提取、推理和解码。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-rnntbundle.png

RNNTBundle

用于执行具有 RNN-T 模型的自动语音识别 (ASR,语音到文本) 推理的数据类。

RNNTBundle.FeatureExtractor

RNN-T 管道特征提取部分接口

RNNTBundle.TokenProcessor

RNN-T 管道 token 处理部分接口

使用 RNNTBundle 的教程

预训练模型

EMFORMER_RNNT_BASE_LIBRISPEECH

基于 Emformer-RNNT 的 ASR 管道,在 *LibriSpeech* 数据集上预训练 [Panayotov et al., 2015],能够执行流式和非流式推理。

wav2vec 2.0 / HuBERT / WavLM - SSL

接口

Wav2Vec2Bundle 实例化生成声学特征的模型,这些特征可用于下游推理和微调。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-wav2vec2bundle.png

Wav2Vec2Bundle

用于使用预训练的 Wav2Vec2Model 的数据类。

预训练模型

WAV2VEC2_BASE

Wav2vec 2.0 模型(“base”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),未进行微调。

WAV2VEC2_LARGE

Wav2vec 2.0 模型(“large”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),未进行微调。

WAV2VEC2_LARGE_LV60K

Wav2vec 2.0 模型(“large-lv60k”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],未进行微调。

WAV2VEC2_XLSR53

Wav2vec 2.0 模型(“base”架构),在来自多个数据集的 56,000 小时无标签音频上预训练(*Multilingual LibriSpeech* [Pratap et al., 2020],*CommonVoice* [Ardila et al., 2020] 和 *BABEL* [Gales et al., 2014]),未进行微调。

WAV2VEC2_XLSR_300M

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 种语言,未进行微调。

WAV2VEC2_XLSR_1B

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 种语言,未进行微调。

WAV2VEC2_XLSR_2B

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

HuBERT 模型(“base”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),未进行微调。

HUBERT_LARGE

HuBERT 模型(“large”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],未进行微调。

HUBERT_XLARGE

HuBERT 模型(“extra large”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],未进行微调。

WAVLM_BASE

WavLM Base 模型(“base”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015],未进行微调。

WAVLM_BASE_PLUS

WavLM Base+ 模型(“base”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时 [Kahn et al., 2020],10,000 小时的 GigaSpeech [Chen et al., 2021],以及 24,000 小时的 *VoxPopuli* [Wang et al., 2021],未进行微调。

WAVLM_LARGE

WavLM Large 模型(“large”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时 [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。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-wav2vec2asrbundle.png

Wav2Vec2ASRBundle

用于使用预训练的 Wav2Vec2Model 的数据类。

使用 Wav2Vec2ASRBundle 的教程

Speech Recognition with Wav2Vec2

使用 Wav2Vec2 进行语音识别

使用 Wav2Vec2 进行语音识别
Forced Alignment with Wav2Vec2

使用 Wav2Vec2 进行强制对齐

使用 Wav2Vec2 进行强制对齐

预训练模型

WAV2VEC2_ASR_BASE_10M

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”子集)。

WAV2VEC2_ASR_BASE_100H

Wav2vec 2.0 模型(带额外线性模块的“base”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),并在该数据集的 100 小时转录音频(“train-clean-100”子集)上为 ASR 进行了微调。

WAV2VEC2_ASR_BASE_960H

Wav2vec 2.0 模型(带额外线性模块的“base”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),并在相同的音频和对应的转录本上为 ASR 进行了微调。

WAV2VEC2_ASR_LARGE_10M

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”子集)。

WAV2VEC2_ASR_LARGE_100H

Wav2vec 2.0 模型(带额外线性模块的“large”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),并在该数据集的 100 小时转录音频(“train-clean-100”子集)上为 ASR 进行了微调。

WAV2VEC2_ASR_LARGE_960H

Wav2vec 2.0 模型(带额外线性模块的“large”架构),在 *LibriSpeech* 数据集上预训练了 960 小时的无标签音频 [Panayotov et al., 2015](“train-clean-100”、“train-clean-360”和“train-other-500”的组合),并在相同的音频和对应的转录本上为 ASR 进行了微调。

WAV2VEC2_ASR_LARGE_LV60K_10M

Wav2vec 2.0 模型(带额外线性模块的“large-lv60k”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],并在该数据集的 10 分钟转录音频上为 ASR 进行了微调(“train-10min”子集)。

WAV2VEC2_ASR_LARGE_LV60K_100H

Wav2vec 2.0 模型(带额外线性模块的“large-lv60k”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],并在 *LibriSpeech* 数据集(“train-clean-100”子集)的 100 小时转录音频上为 ASR 进行了微调 [Panayotov et al., 2015]

WAV2VEC2_ASR_LARGE_LV60K_960H

Wav2vec 2.0 模型(带额外线性模块的“large-lv60k”架构),在 *Libri-Light* [Kahn et al., 2020] 数据集上预训练了 60,000 小时的无标签音频,并在 *LibriSpeech* 数据集(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)的 960 小时转录音频上为 ASR 进行了微调 [Panayotov et al., 2015]

VOXPOPULI_ASR_BASE_10K_DE

wav2vec 2.0 模型(“base”架构),在 *VoxPopuli* 数据集上预训练了 10k 小时的无标签音频 [Wang et al., 2021](“10k”子集,包含 23 种语言),并在“de”子集的 282 小时转录音频上为 ASR 进行了微调。

VOXPOPULI_ASR_BASE_10K_EN

wav2vec 2.0 模型(“base”架构),在 *VoxPopuli* 数据集上预训练了 10k 小时的无标签音频 [Wang et al., 2021](“10k”子集,包含 23 种语言),并在“en”子集的 543 小时转录音频上为 ASR 进行了微调。

VOXPOPULI_ASR_BASE_10K_ES

wav2vec 2.0 模型(“base”架构),在 *VoxPopuli* 数据集上预训练了 10k 小时的无标签音频 [Wang et al., 2021](“10k”子集,包含 23 种语言),并在“es”子集的 166 小时转录音频上为 ASR 进行了微调。

VOXPOPULI_ASR_BASE_10K_FR

wav2vec 2.0 模型(“base”架构),在 *VoxPopuli* 数据集上预训练了 10k 小时的无标签音频 [Wang et al., 2021](“10k”子集,包含 23 种语言),并在“fr”子集的 211 小时转录音频上为 ASR 进行了微调。

VOXPOPULI_ASR_BASE_10K_IT

wav2vec 2.0 模型(“base”架构),在 *VoxPopuli* 数据集上预训练了 10k 小时的无标签音频 [Wang et al., 2021](“10k”子集,包含 23 种语言),并在“it”子集的 91 小时转录音频上为 ASR 进行了微调。

HUBERT_ASR_LARGE

HuBERT 模型(“large”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],并在 *LibriSpeech* 数据集(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)的 960 小时转录音频上为 ASR 进行了微调 [Panayotov et al., 2015]

HUBERT_ASR_XLARGE

HuBERT 模型(“extra large”架构),在 *Libri-Light* 数据集上预训练了 60,000 小时的无标签音频 [Kahn et al., 2020],并在 *LibriSpeech* 数据集(“train-clean-100”、“train-clean-360”和“train-other-500”的组合)的 960 小时转录音频上为 ASR 进行了微调 [Panayotov et al., 2015]

wav2vec 2.0 / HuBERT - Forced Alignment

接口

Wav2Vec2FABundle 捆绑了预训练模型及其关联的词典。此外,它还支持附加 star token 维度。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-wav2vec2fabundle.png

Wav2Vec2FABundle

用于使用预训练的 Wav2Vec2Model 进行强制对齐的数据类。

Wav2Vec2FABundle.Tokenizer

Tokenizer 接口

Wav2Vec2FABundle.Aligner

Aligner 接口

使用 Wav2Vec2FABundle 的教程

CTC forced alignment API tutorial

CTC 强制对齐 API 教程

CTC 强制对齐 API 教程
Forced alignment for multilingual data

多语言数据的强制对齐

多语言数据的强制对齐
Forced Alignment with Wav2Vec2

使用 Wav2Vec2 进行强制对齐

使用 Wav2Vec2 进行强制对齐

预训练模型

MMS_FA

在 *Scaling Speech Technology to 1,000+ Languages* [Pratap et al., 2023] 的 1,130 种语言中训练了 31K 小时的数据。

Tacotron2 文本转语音

Tacotron2TTSBundle 定义了文本转语音管道,并包含三个步骤:tokenization、spectrogram generation 和 vocoder。spectrogram generation 基于 Tacotron2 模型。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-tacotron2bundle.png

TextProcessor 在字符情况下可以是基于规则的 tokenization,也可以是基于神经网络的 G2P 模型,该模型从输入文本生成音素序列。

同样,Vocoder 可以是无学习参数的算法,例如 Griffin-Lim,也可以是基于神经网络的模型,例如 Waveglow

接口

Tacotron2TTSBundle

用于使用预训练的 Tacotron2 和 vocoder 的数据类。

Tacotron2TTSBundle.TextProcessor

Tacotron2TTS 管道的文本处理部分接口

Tacotron2TTSBundle.Vocoder

Tacotron2TTS 管道的 vocoder 部分接口

使用 Tacotron2TTSBundle 的教程

Text-to-Speech with Tacotron2

使用 Tacotron2 进行文本到语音转换

使用 Tacotron2 进行文本到语音转换

预训练模型

TACOTRON2_WAVERNN_PHONE_LJSPEECH

基于音素的 TTS 管道,使用在 *LJSpeech* 上训练了 1,500 个 epoch 的 Tacotron2 [Ito and Johnson, 2017],以及在 *LJSpeech* 上训练了 10,000 个 epoch 的 8 位深度波形的 WaveRNN vocoder [Ito and Johnson, 2017]

TACOTRON2_WAVERNN_CHAR_LJSPEECH

基于字符的 TTS 管道,使用在 *LJSpeech* 上训练了 1,500 个 epoch 的 Tacotron2 [Ito and Johnson, 2017],以及在 *LJSpeech* 上训练了 10,000 个 epoch 的 8 位深度波形的 WaveRNN vocoder [Ito and Johnson, 2017]

TACOTRON2_GRIFFINLIM_PHONE_LJSPEECH

基于音素的 TTS 管道,使用在 *LJSpeech* 上训练了 1,500 个 epoch 的 Tacotron2 [Ito and Johnson, 2017],以及 GriffinLim 作为 vocoder。

TACOTRON2_GRIFFINLIM_CHAR_LJSPEECH

基于字符的 TTS 管道,使用在 *LJSpeech* 上训练了 1,500 个 epoch 的 Tacotron2 [Ito and Johnson, 2017],以及 GriffinLim 作为 vocoder。

源分离

接口

SourceSeparationBundle 实例化源分离模型,这些模型接受单通道音频并生成多通道音频。

https://download.pytorch.org/torchaudio/doc-assets/pipelines-sourceseparationbundle.png

SourceSeparationBundle

用于执行源分离的组件的数据类。

使用 SourceSeparationBundle 的教程

Music Source Separation with Hybrid Demucs

使用 Hybrid Demucs 进行音乐源分离

使用 Hybrid Demucs 进行音乐源分离

预训练模型

CONVTASNET_BASE_LIBRI2MIX

预训练的源分离管道,使用在 *Libri2Mix dataset* 上训练的 *ConvTasNet* [Luo and Mesgarani, 2019] [Cosentino et al., 2020]

HDEMUCS_HIGH_MUSDB_PLUS

预训练的音乐源分离管道,使用 *Hybrid Demucs* [Défossez, 2021],该模型在 MUSDB-HQ [Rafii et al., 2019] 的训练集和测试集以及 Meta 公司专门制作的 150 首额外歌曲上进行了训练。

HDEMUCS_HIGH_MUSDB

预训练的音乐源分离管道,使用 *Hybrid Demucs* [Défossez, 2021],该模型在 MUSDB-HQ [Rafii et al., 2019] 的训练集上进行了训练。

Squim 客观指标

接口

SquimObjectiveBundle 定义了语音质量和可懂度测量 (SQUIM) 管道,该管道可以根据输入波形预测 **客观** 指标分数。

SquimObjectiveBundle

用于使用预训练的 SquimObjective 模型的相关信息的数据类。

预训练模型

SQUIM_OBJECTIVE

SquimObjective 管道,使用 *DNS 2020 Dataset* [Kumar et al., 2023] [Reddy et al., 2020] 上描述的方法训练,如 [Kumar et al., 2023] 所述。

Squim 主观指标

接口

SquimSubjectiveBundle 定义了语音质量和可懂度测量 (SQUIM) 管道,该管道可以根据输入波形预测 **主观** 指标分数。

SquimSubjectiveBundle

用于使用预训练的 SquimSubjective 模型的相关信息的数据类。

预训练模型

SQUIM_SUBJECTIVE

SquimSubjective 管道,根据 [Manocha and Kumar, 2022][Kumar et al., 2023] 中所述的方法,在 *BVCC* [Cooper and Yamagishi, 2021] 和 *DAPS* [Mysore, 2014] 数据集上训练。

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源