目录

torchaudio.models

models 子包包含用于解决常见音频任务的模型定义。

ConvTasNet 公司

num_sources:int = 2,enc_kernel_size:int = 16,enc_num_feats:int = 512,msk_kernel_size:int = 3,msk_num_feats:int = 128,msk_num_hidden_feats:int = 512,msk_num_layers:int = 8,msk_num_stacks:int = 3[来源]torchaudio.models.ConvTasNet

Conv-TasNet:全卷积时域音频分离网络 1.

参数
  • num_sourcesint) – 要拆分的源数。

  • enc_kernel_sizeint) – 编码器/解码器的卷积核大小 <L>。

  • enc_num_featsint) – 传递给掩码生成器的特征维度 <N>。

  • msk_kernel_sizeint) - 掩码生成器的卷积核大小 <P>。

  • msk_num_featsint) - 掩码生成器中 conv 块的输入/输出特征维度,<B, Sc>。

  • msk_num_hidden_featsint) - 掩码生成器的 conv 块的内部特征维度 <H>。

  • msk_num_layersint) – 蒙版生成器的一个 conv 块中的层数 <X>。

  • msk_num_stacksint) - 掩码生成器 <R> 的 conv 块的数量。

注意

此实现对应于论文中的 “non-causal” 设置。

forward(输入:Torch。Tensor) → torch 的 Tensor 中。张量[来源]

执行源分离。生成音频源波形。

参数

inputTorch.Tensor) – 形状为 [batch, channel==1, frames] 的 3D Tensor

返回

形状为 [batch, channel==num_sources, frames] 的 3D 张量

返回类型

torch.Tensor

深度语音

n_feature:int,n_hidden:int = 2048,n_class:int = 40,dropout:float = 0.0[来源]torchaudio.models.DeepSpeech

DeepSpeech 模型架构来自 2.

参数
  • n_feature – 输入特征的数量

  • n_hidden – 内部隐藏单元大小。

  • n_class – 输出类的数量

forward(x:Torch。Tensor) → torch 的 Tensor 中。张量[来源]
参数

xTorch。Tensor) - 维度的张量 (batch, channel, time, feature).

返回

维度 (batch, time, class) 的预测因子张量。

返回类型

张肌

Wav2字母

num_classes:int = 40,input_type:str = '波形'num_features:int = 1[来源]torchaudio.models.Wav2Letter

Wav2Letter 模型架构来自 3.

\(\text{padding} = \frac{\text{ceil}(\text{kernel} - \text{stride})}{2}\)

参数
  • num_classesintoptional) – 要分类的类数。(默认:40)

  • input_typestroptional) – Wav2Letter 可以用作输入: , 或 (Default: )。waveformpower_spectrummfccwaveform

  • num_featuresintoptional) – 网络将接收的输入特征数 (Default: )。1

forward(x:Torch。Tensor) → torch 的 Tensor 中。张量[来源]
参数

xTorch。Tensor) - 维度 (batch_size, num_features, input_length) 的张量。

返回

维度 (batch_size, number_of_classes, input_length) 的预测因子张量。

返回类型

张肌

Wav2Vec2.0 格式

Wav2Vec2模型

feature_extractor:torch.nn.modules.module.Module编码器:torch.nn.modules.module.Module[来源]torchaudio.models.Wav2Vec2Model

[4] 中使用的编码器模型。

注意

要构建模型,请使用其中一个工厂函数。

参数
  • feature_extractortorch.nn.Module) – 从原始音频 Tensor 中提取特征向量的特征提取器。

  • encodertorch.nn.Module) – 将音频特征转换为概率序列的编码器 标签上的分布(负对数似然)。

extract_features(waveforms(波形):Torch(Torch)。Tensorlengths: 可选[torch.Tensor] = None → Tuple[torch.Tensor,可选[torch.张量]][来源]

从原始波形中提取特征向量

参数
  • waveformsTensor) - 形状为 的音频张量。(batch, frames)

  • lengths (Tensor, optional) (张量可选) – 指示批处理中每个音频样本的有效长度。 形状:。(batch, )

返回

特征向量。

形状:(batch, frames, feature dimention)

Tensor,可选:

指示批处理中每个特征的有效长度,计算 基于给定的参数。 形状:。lengths(batch, )

返回类型

张肌

forward(waveforms(波形):Torch(Torch)。Tensorlengths: 可选[torch.Tensor] = None → Tuple[torch.Tensor,可选[torch.张量]][来源]

计算标签上的概率分布序列。

参数
  • waveformsTensor) - 形状为 的音频张量。(batch, frames)

  • lengths (Tensor, optional) (张量可选) – 指示批处理中每个音频样本的有效长度。 形状:。(batch, )

返回

标签上的概率分布序列(以 logit 为单位)。

形状:。(batch, frames, num labels)

Tensor,可选:

指示批处理中每个特征的有效长度,计算 基于给定的参数。 形状:。lengths(batch, )

返回类型

张肌

工厂功能

wav2vec2_base

torchaudio.models.wav2vec2_base(num_out:int → torchaudio.models.wav2vec2.model.Wav2Vec2Model[来源]

使用 [4] 中的 “Base” 配置构建 wav2vec2.0 模型。

参数

num_out – 整数 输出标签的数量。

返回

生成的模型。

返回类型

Wav2Vec2模型

示例 — 从 Hugging Face 重新加载微调模型:
>>> # Session 1 - Convert pretrained model from Hugging Face and save the parameters.
>>> from torchaudio.models.wav2vec2.utils import import_huggingface_model
>>>
>>> original = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = import_huggingface_model(original)
>>> torch.save(model.state_dict(), "wav2vec2-base-960h.pt")
>>>
>>> # Session 2 - Load model and the parameters
>>> model = wav2vec2_base(num_out=32)
>>> model.load_state_dict(torch.load("wav2vec2-base-960h.pt"))

wav2vec2_large

torchaudio.models.wav2vec2_large(num_out:int → torchaudio.models.wav2vec2.model.Wav2Vec2Model[来源]

使用 [4] 中的“Large”配置构建 wav2vec2.0 模型。

参数

num_out – 整数 输出标签的数量。

返回

生成的模型。

返回类型

Wav2Vec2模型

示例 — 从 Hugging Face 重新加载微调模型:
>>> # Session 1 - Convert pretrained model from Hugging Face and save the parameters.
>>> from torchaudio.models.wav2vec2.utils import import_huggingface_model
>>>
>>> original = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-960h")
>>> model = import_huggingface_model(original)
>>> torch.save(model.state_dict(), "wav2vec2-base-960h.pt")
>>>
>>> # Session 2 - Load model and the parameters
>>> model = wav2vec2_large(num_out=32)
>>> model.load_state_dict(torch.load("wav2vec2-base-960h.pt"))

wav2vec2_large_lv60k

torchaudio.models.wav2vec2_large_lv60k(num_out:int → torchaudio.models.wav2vec2.model.Wav2Vec2Model[来源]

使用 [4] 中的“大型 LV-60k”配置构建 wav2vec2.0 模型。

参数

num_out – 整数 输出标签的数量。

返回

生成的模型。

返回类型

Wav2Vec2模型

示例 — 从 Hugging Face 重新加载微调模型:
>>> # Session 1 - Convert pretrained model from Hugging Face and save the parameters.
>>> from torchaudio.models.wav2vec2.utils import import_huggingface_model
>>>
>>> original = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-960h-lv60-self")
>>> model = import_huggingface_model(original)
>>> torch.save(model.state_dict(), "wav2vec2-base-960h.pt")
>>>
>>> # Session 2 - Load model and the parameters
>>> model = wav2vec2_large_lv60k(num_out=32)
>>> model.load_state_dict(torch.load("wav2vec2-base-960h.pt"))

效用函数

import_huggingface_model

torchaudio.models.wav2vec2.utils.import_huggingface_model(原文:torch.nn.modules.module.Module) → torchaudio.models.wav2vec2.model.Wav2Vec2Model[源]

从 Hugging Face 的 Transformers 导入 wav2vec2 模型。

参数

originaltorch.nn.Module) – from 的实例。Wav2Vec2ForCTCtransformers

返回

导入的模型。

返回类型

Wav2Vec2模型

>>> from torchaudio.models.wav2vec2.utils import import_huggingface_model
>>>
>>> original = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = import_huggingface_model(original)
>>>
>>> waveforms, _ = torchaudio.load("audio.wav")
>>> logits, _ = model(waveforms)

import_fairseq_model

torchaudio.models.wav2vec2.utils.import_fairseq_model(原文:torch.nn.modules.module.Module,num_out:可选[int] = None → torchaudio.models.wav2vec2.model.Wav2Vec2Model[来源]

fairseq 发布的预训练参数构建 Wav2Vec2Model。

参数
  • originaltorch.nn.Module) – fairseq 的 Wav2Vec2.0 模型类的实例。 或 .fairseq.models.wav2vec.wav2vec2_asr.Wav2VecEncoderfairseq.models.wav2vec.wav2vec2.Wav2Vec2Model

  • num_outintoptional) – 输出标签的数量。仅当原始模型为 的实例。fairseq.models.wav2vec.wav2vec2.Wav2Vec2Model

返回

导入的模型。

返回类型

Wav2Vec2模型

示例 — 加载仅预训练模型
>>> from torchaudio.models.wav2vec2.utils import import_fairseq_model
>>>
>>> # Load model using fairseq
>>> model_file = 'wav2vec_small.pt'
>>> model, _, _ = fairseq.checkpoint_utils.load_model_ensemble_and_task([model_file])
>>> original = model[0]
>>> imported = import_fairseq_model(original, num_out=28)
>>>
>>> # Perform feature extraction
>>> waveform, _ = torchaudio.load('audio.wav')
>>> features, _ = imported.extract_features(waveform)
>>>
>>> # Compare result with the original model from fairseq
>>> reference = original.feature_extractor(waveform).transpose(1, 2)
>>> torch.testing.assert_allclose(features, reference)
示例 - 微调模型
>>> from torchaudio.models.wav2vec2.utils import import_fairseq_model
>>>
>>> # Load model using fairseq
>>> model_file = 'wav2vec_small_960h.pt'
>>> model, _, _ = fairseq.checkpoint_utils.load_model_ensemble_and_task([model_file])
>>> original = model[0]
>>> imported = import_fairseq_model(original.w2v_encoder)
>>>
>>> # Perform encoding
>>> waveform, _ = torchaudio.load('audio.wav')
>>> emission, _ = imported(waveform)
>>>
>>> # Compare result with the original model from fairseq
>>> mask = torch.zeros_like(waveform)
>>> reference = original(waveform, mask)['encoder_out'].transpose(0, 1)
>>> torch.testing.assert_allclose(emission, reference)

WaveRNN

upsample_scales:List[int],n_classes:int,hop_length:int,n_res_block:int = 10,n_rnn:int = 512,n_fc:int = 512,kernel_size:int = 5,n_freq:int = 128,n_hidden:int = 128,n_output:int = 128[源]torchaudio.models.WaveRNN

基于 fatchord 实现的 WaveRNN 模型。

最初的实现是在 5 中引入的。 waveform 和 spectrogram 的 input channels 必须为 1。upsample_scales 的乘积必须等于 hop_length

参数
  • upsample_scales – 上采样比例列表。

  • n_classes – 输出类的数量。

  • hop_length – 连续帧开始之间的样本数。

  • n_res_block – 堆栈中 ResBlock 的数量。(默认:10)

  • n_rnn – RNN 层的维度。(默认:512)

  • n_fc – 全连接层的维度。(默认:512)

  • kernel_size – 第一个 Conv1d 层中的内核大小数。(默认:5)

  • n_freq – 频谱图中的区间数。(默认:128)

  • n_hidden – resblock 的隐藏维度数。(默认:128)

  • n_output – MelresNet 的输出维度数。(默认:128)

>>> wavernn = WaveRNN(upsample_scales=[5,5,8], n_classes=512, hop_length=200)
>>> waveform, sample_rate = torchaudio.load(file)
>>> # waveform shape: (n_batch, n_channel, (n_time - kernel_size + 1) * hop_length)
>>> specgram = MelSpectrogram(sample_rate)(waveform)  # shape: (n_batch, n_channel, n_freq, n_time)
>>> output = wavernn(waveform, specgram)
>>> # output shape: (n_batch, n_channel, (n_time - kernel_size + 1) * hop_length, n_classes)
forward(波形:手电筒。张量specgram:torch。Tensor → torch 的 Tensor 中。张量[来源]

通过 WaveRNN 模型传递输入。

参数
  • waveform – WaveRNN 层的输入波形 (n_batch, 1, (n_time - kernel_size + 1) * hop_length)

  • specgram – WaveRNN 层的输入频谱图 (n_batch, 1, n_freq, n_time)

返回

(n_batch、1、(n_time - kernel_size + 1)* hop_length、n_classes)

返回类型

张量形状

引用

1

Yi Luo 和 Nima Mesgarani。Conv-tasnet:超越了理想的时频幅度掩码,用于语音分离。IEEE/ACM 音频、语音和语言处理汇刊,27(8):1256–1266,2019 年 8 月。网址:http://dx.doi.org/10.1109/TASLP.2019.2915167,doi:10.1109/taslp.2019.2915167

2

Awni Hannun、Carl Case、Jared Casper、Bryan Catanzaro、Greg Diamos、Erich Elsen、Ryan Prenger、Sanjeev Satheesh、Shubho Sengupta、Adam Coates 和 Andrew Y. Ng。深度语音:扩大端到端语音识别。2014. arXiv:1412.5567.

3

罗南·科洛伯特、克里斯蒂安·普尔施和加布里埃尔·辛纳夫。Wav2letter:一种基于卷积网络的端到端语音识别系统。2016. arXiv:1609.03193.

41,2,3,4)

阿列克谢·巴耶夫斯基、亨利·周、阿卜杜勒拉赫曼·穆罕默德和迈克尔·奥利。Wav2vec 2.0:语音表示的自监督学习框架。2020. arXiv:2006.11477.

5

纳尔·卡尔赫布伦纳、埃里希·埃尔森、凯伦·西蒙尼扬、塞布·努里、诺曼·卡萨格兰德、爱德华·洛克哈特、弗洛里安·斯廷伯格、亚伦·范登奥德、桑德·迪勒曼和科雷·卡武克茨奥卢。高效的神经音频合成。2018. arXiv:1802.08435.

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源