目录

torchaudio.models

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

ConvTasNet 公司

num_sources: int = 2enc_kernel_size: int = 16enc_num_feats: int = 512msk_kernel_sizeint = 3msk_num_featsint = 128msk_num_hidden_feats:int = 512,msk_num_layersint = 8,msk_num_stacks:int = 3,msk_activate:str = 'sigmoid'[来源]torchaudio.models.ConvTasNet

Conv-TasNet:一个全卷积的时域音频分离网络 Conv-TasNet:超越理想的时频幅度掩码,用于语音分离 [1]。

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

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

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

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

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

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

  • msk_num_layersintoptional) – 遮罩生成器的一个 conv 块 <X> 中的层数。

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

  • msk_activatestroptional) – 掩码输出的激活函数 (默认值: )。sigmoid

注意

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

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

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

参数

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

返回

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

返回类型

张肌

深度语音

n_feature: intn_hidden int = 2048n_class: int = 40辍学 浮点= 0.0[来源]torchaudio.models.DeepSpeech

来自 Deep Speech 的 DeepSpeech 模型架构:扩展端到端语音识别 [2]。

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

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

  • n_class – 输出类的数量

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

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

返回

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

返回类型

张肌

Tacotron2 (塔科特龙2)

mask_padding bool = Falsen_mels int = 80n_symbol: int = 148n_frames_per_step: int = 1symbol_embedding_dim: int = 512encoder_embedding_dim: int = 512,encoder_n_convolutionint = 3,encoder_kernel_size:int = 5,decoder_rnn_dim: int = 1024,decoder_max_stepint = 2000,decoder_dropoutfloat = 0.1,decoder_early_stopping:bool = True,attention_rnn_dim:int = 1024,attention_hidden_dimint = 128attention_location_n_filterint = 32attention_location_kernel_size:int = 31attention_dropout:浮点型 = 0.1,prenet_dimint = 256,postnet_n_convolutionint = 5,postnet_kernel_size: int = 5,postnet_embedding_dim:int = 512,gate_thresholdfloat = 0.5[来源]torchaudio.models.Tacotron2

Tacotron2 模型基于 Nvidia 的实现。

最初的实现是在 Natural TTS Synthesis 中引入的,通过在 Mel Spectrogram Predictions 上调节 WaveNet [3]。

参数
  • mask_paddingbooloptional) – 使用掩码填充 (Default: )。False

  • n_melsintoptional) – mel bins 的数量 (默认值: )。80

  • n_symbolintoptional) – 输入文本的元件数 (Default: )。148

  • n_frames_per_stepintoptional) – 每步处理的帧数,仅支持 1 个(默认值:)。1

  • symbol_embedding_dimintoptional) – 输入嵌入维度 (Default: )。512

  • encoder_n_convolutionintoptional) - 编码器卷积的数量 (默认值: )。3

  • encoder_kernel_sizeintoptional) – 编码器内核大小 (Default: )。5

  • encoder_embedding_dimintoptional) – 编码器嵌入维度 (Default: )。512

  • decoder_rnn_dimintoptional) – 解码器 LSTM 中的单元数 (默认值: )。1024

  • decoder_max_stepintoptional) – 输出梅尔频谱图的最大数量 (默认值: )。2000

  • decoder_dropoutfloatoptional) - 解码器 LSTM 的 Dropout 概率 (默认值: )。0.1

  • decoder_early_stoppingbooloptional) – 完成所有样本后继续解码 (Default: )。True

  • attention_rnn_dimintoptional) – 关注 LSTM 中的单位数 (默认值: )。1024

  • attention_hidden_dimintoptional) – 注意力隐藏表示的维度 (Default: )。128

  • attention_location_n_filterintoptional) – 注意力模型的筛选条件数量 (Default: )。32

  • attention_location_kernel_sizeintoptional) – 注意力模型的内核大小 (Default: )。31

  • attention_dropoutfloatoptional) – 注意力 LSTM 的 dropout probability (默认值: )。0.1

  • prenet_dimintoptional) – prenet 层中的 ReLU 单元数 (默认值: )。256

  • postnet_n_convolutionintoptional) - 后网卷积的数量 (默认值: )。5

  • postnet_kernel_sizeintoptional) – Postnet kernel size (默认值: )。5

  • postnet_embedding_dimintoptional) – 后网嵌入维度 (Default: )。512

  • gate_thresholdfloatoptional) – 停止令牌的概率阈值 (Default: )。0.5

forward(tokens torch 的 Torch 中。Tensor,token_lengths:torch。Tensor,mel_specgram:torch。张量mel_specgram_lengths:torch。TensorTuple[torch.Tensortorch 的 Tensor 和 Torch 的 TTensortorch 的 Tensor 和 Torch 的 TTensortorch 的 Tensor 和 Torch 的 T张量][来源]

通过 Tacotron2 模型传递输入。这是在老师 强制模式,一般用于训练。

输入应用 0 填充到 最大长度 。 输入应用 0 填充到 最大长度 。tokenstoken_lengthsmel_specgrammel_specgram_lengths

参数
  • tokensTensor) – 形状为 (n_batch,最大值为 token_lengths) 的 Tacotron2 的输入令牌。

  • token_lengthsTensor) – 形状为 (n_batch, ) 的每个样本的有效长度。tokens

  • mel_specgramTensor) – 目标梅尔频谱图 形状为 (n_batch、n_mels、最大值 mel_specgram_lengths)。

  • mel_specgram_lengthsTensor) - 形状为 (n_batch, ) 的每个梅尔频谱图的长度。

返回

张肌

Postnet 之前的 Mel 频谱图,形状为 (n_batch, n_mels, max of mel_specgram_lengths)。

张肌

Postnet 之后的梅尔频谱图,形状为 (n_batch, n_mels, max of mel_specgram_lengths)。

张肌

每个时间步的 stop token 的输出,形状为 (n_batch,最大值为 mel_specgram_lengths)。

张肌

来自解码器的注意力权重序列 形状(n_batch、最大 mel_specgram_lengths、最大 token_lengths)。

返回类型

[张量、张量、张量、张量]

infer(tokens torch 的 Torch 中。Tensorlengths 可选[torch.Tensor] = NoneTuple[torch.Tensortorch 的 Tensor 和 Torch 的 TTensortorch 的 Tensor 和 Torch 的 T张量][来源]

使用 Tacotron2 进行推理。输入是一批编码的 句子 () 及其相应的长度 ()。这 output 是生成的 MEL 频谱图、其相应的长度,以及 来自 Decoder 的 attention 权重。tokenslengths

输入标记应用 0 填充 max 长度 。lengths

参数
  • tokensTensor) – 形状为 (n_batch,最大长度) 的 Tacotron2 的输入令牌。

  • lengthsTensorNone可选) – 形状为 (n_batch, ) 的每个样本的有效长度。 如果 ,则假定所有标记都有效。违约:tokensNoneNone

返回

张肌

形状为 (n_batch、n_mels、最大值 mel_specgram_lengths) 的预测梅尔频谱图。

张肌

形状为 (n_batch, ) 的预测梅尔频谱图的长度。

张肌

来自解码器的注意力权重序列,形状为 (n_batch,最大 mel_specgram_lengths,最大长度)。

返回类型

(张量、张量、张量)

Wav2字母

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

来自 Wav2Letter 的 Wav2Letter 模型架构:基于 ConvNet 的端到端语音 识别系统 [4]。

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

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

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

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

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

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

返回

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

返回类型

张肌

Wav2Vec2.0 / HuBERT

Wav2Vec2模型

class feature_extractor: torch.nn.Moduleencoder torch.nn.Moduleaux 可选[torch.nn.Module] = [来源]torchaudio.models.Wav2Vec2Model

wav2vec 2.0 中使用的编码器模型 [5]。

注意

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

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

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

  • auxtorch.nn.ModuleNone可选) – 辅助模块。如果提供,则 encoder 的输出将传递到此模块。

extract_features(waveforms(波形):Torch(Torch)。Tensorlengths 可选[torch.张量] = num_layers可选[int] = Tuple[List[torch.Tensor]可选[torch.张量]][来源]

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

这将返回 编码器中的 transformer 块。

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

  • lengthsTensorNone可选) – 指示批处理中每个音频的有效长度。 形状:(batch, )。 当 包含不同时长的音频时, 通过提供参数,模型将计算 相应的有效输出长度,并在 transformer 注意层。 如果 ,则假定整个音频波形 length 有效。waveformslengthsNone

  • num_layersintNone可选) – 如果给定,则限制要通过的中间层的数量。 提供 1 将在完成 1 后停止计算 中间层。如果未给出,则所有 返回中间层。

返回

张量列表

请求图层中的要素。 每个 Tensor 的形状为:(batch、time frame、feature dimension)

Tensor 或 None

如果提供了 argument,则返回形状为 (batch, ) 的 Tensor。 它表示每个特征 Tensor 的时间轴上的有效长度。lengths

返回类型

(List[Tensor], 可选 [Tensor])

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

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

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

  • lengthsTensorNone可选) – 指示批处理中每个音频的有效长度。 形状:(batch, )。 当 包含不同时长的音频时, 通过提供参数,模型将计算 相应的有效输出长度,并在 transformer 注意层。 如果 ,则假定 中的所有音频都具有有效长度。违约:。waveformslengthsNonewaveformsNone

返回

张肌

标签上的概率分布序列(以 logit 为单位)。 形状:(batch, frames, num labels)。

Tensor 或 None

如果提供了 argument,则返回形状为 (batch, ) 的 Tensor。 它表示输出 Tensor 的时间轴上的有效长度。lengths

返回类型

(Tensor, 可选[Tensor])

工厂功能

wav2vec2_model

torchaudio.models.wav2vec2_model(extractor_mode: strextractor_conv_layer_config: 可选[List[元组[int int int]]]extractor_conv_biasboolencoder_embed_dimintencoder_projection_dropoutfloatencoder_pos_conv_内核intencoder_pos_conv_groups:intencoder_num_layersintencoder_num_heads:intencoder_attention_dropout:浮点数encoder_ff_interm_features:整数encoder_ff_interm_dropout浮点数encoder_dropout浮点encoder_layer_norm_firstboolencoder_layer_dropfloataux_num_outOptional[int]torchaudio.models.Wav2Vec2Model[来源]

构建自定义 Wav2Vec2Model

注意

下面的 “feature extractor” 对应于原始实现中的 ConvFeatureExtractionModel。 这在 wav2vec 2.0 [5] 论文中称为“(卷积)特征编码器”。fairseq

下面的 “encoder” 对应于 TransformerEncoder, 这在论文中被称为 “Transformer”。

参数
  • extractor_modestr) –

    特征提取器的操作模式。 有效值为 或 。 如果 ,则应用单个规范化 在第一个 convolution 块中。否则,所有卷积 块将进行层标准化。"group_norm""layer_norm""group_norm"

    此选项对应于 from 。extractor_modefairseq

  • extractor_conv_layer_configpython:integer tuples 列表None) –

    特征提取器中的卷积层配置。 卷积配置列表 / 即[(output_channel, kernel_size, stride), ...]

    如果提供,则使用以下默认值。None

    [
      (512, 10, 5),
      (512, 3, 2),
      (512, 3, 2),
      (512, 3, 2),
      (512, 3, 2),
      (512, 2, 2),
      (512, 2, 2),
    ]
    

    此选项对应于 from 。conv_feature_layersfairseq

  • extractor_conv_bias布尔值) –

    是否为每个卷积运算包含偏差项。

    此选项对应于 from 。conv_biasfairseq

  • encoder_embed_dimint) –

    编码器中嵌入的维度。

    此选项对应于 from 。encoder_embed_dimfairseq

  • encoder_projection_dropoutfloat) –

    投影输入特征后应用的 dropout 概率 自。encoder_embed_dim

    此选项对应于 from 。dropout_inputfairseq

  • encoder_pos_conv_kernelint) –

    卷积位置嵌入的核大小。

    此选项对应于 from 。conv_posfairseq

  • encoder_pos_conv_groupsint) –

    卷积位置嵌入的组数。

    此选项对应于 from 。conv_pos_groupsfairseq

  • encoder_num_layersint) –

    transformer block 中的自注意力层数。

    此选项对应于 from 。encoder_layersfairseq

  • encoder_num_headsint) –

    自我注意层中的头部数。

    此选项对应于 from 。encoder_attention_headsfairseq

  • encoder_attention_dropoutfloat) –

    在自我注意层中 softmax 之后应用的 dropout 概率。

    此选项对应于 from 。attention_dropoutfairseq

  • encoder_ff_interm_featuresint) –

    前馈层中隐藏特征的维度。

    此选项对应于 from 。encoder_ffn_embed_dimfairseq

  • encoder_ff_interm_dropoutfloat) –

    前馈层中应用的 dropout 概率。

    此选项与 from 对应。activation_dropoutfairseq

  • encoder_dropoutfloat) –

    在前馈层末尾应用的 dropout 概率。

    此选项对应于 from 。dropoutfairseq

  • encoder_layer_norm_first布尔值) –

    控制变压器层和每个编码器层的层范数顺序。 如果为 True,则在变压器层中,在馈送特征之前应用层范数 到编码器层。在编码器层中,在编码器层之前和之后应用两层范数 自我关注。 如果为 False,则在变压器层中,在馈送特征后应用层范数 到编码器层。在编码器层中,在 self 之后应用两层范数 注意,前馈和后馈。

    此选项对应于 from 。layer_norm_firstfairseq

  • encoder_layer_drop浮点数) –

    在训练期间丢弃每个编码器层的概率。

    此选项对应于 from 。layerdropfairseq

  • aux_num_outintNone) – 如果提供,请在编码器顶部附加一个额外的线性层,该层可以是 用于微调。

返回

生成的模型。

返回类型

Wav2Vec2模型

wav2vec2_base

torchaudio.models.wav2vec2_base(encoder_projection_dropout:浮点= 0.1,encoder_attention_dropout浮点= 0.1,encoder_ff_interm_dropout浮点数 = 0.1encoder_dropout: 浮点= 0.1encoder_layer_drop 浮点= 0.1aux_num_out: 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 wav2vec 2.0 的“基础”架构构建 Wav2Vec2Model [5]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

wav2vec2_large

torchaudio.models.wav2vec2_large(encoder_projection_dropout:浮点= 0.1,encoder_attention_dropout浮点= 0.1,encoder_ff_interm_dropout浮点数 = 0.1encoder_dropout: 浮点= 0.1encoder_layer_drop 浮点= 0.1aux_num_out: 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 wav2vec 2.0 的“大型”架构构建 Wav2Vec2Model [5]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

wav2vec2_large_lv60k

torchaudio.models.wav2vec2_large_lv60k(encoder_projection_dropout:浮点= 0.1,encoder_attention_dropout浮点= 0.0,encoder_ff_interm_dropout浮点数 = 0.1encoder_dropout: 浮点= 0.0encoder_layer_drop 浮点= 0.1aux_num_out: 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 wav2vec 2.0 的“大型 lv-60k”架构构建 Wav2Vec2Model [5]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

hubert_base

torchaudio.models.hubert_base(encoder_projection_dropout:浮点= 0.1,encoder_attention_dropout浮点= 0.1,encoder_ff_interm_dropout浮点数 = 0.0,encoder_dropout浮点= 0.1,encoder_layer_drop浮点= 0.05,aux_num_out 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 HuBERT 的“基础”架构构建 HuBERT 模型 [6]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

hubert_large

torchaudio.models.hubert_large(encoder_projection_dropout:浮点= 0.0,encoder_attention_dropout浮点= 0.0,encoder_ff_interm_dropout浮点数 = 0.0,encoder_dropout浮点= 0.0,encoder_layer_drop浮点= 0.0,aux_num_out 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 HuBERT 的“大型”架构构建 HuBERT 模型 [6]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

hubert_xlarge

torchaudio.models.hubert_xlarge(encoder_projection_dropout:浮点= 0.0,encoder_attention_dropout浮点= 0.0,encoder_ff_interm_dropout浮点数 = 0.0,encoder_dropout浮点= 0.0,encoder_layer_drop浮点= 0.0,aux_num_out 可选[int] = Nonetorchaudio.models.Wav2Vec2Model[来源]

使用 HuBERT 的“超大型”架构构建 HuBERT 模型 [6]

参数
  • encoder_projection_dropoutfloat) – 请参阅

  • encoder_attention_dropoutfloat) – 请参阅

  • encoder_ff_interm_dropoutfloat) – 请参阅

  • encoder_dropoutfloat) – 请参阅

  • encoder_layer_dropfloat) – 请参阅

  • aux_num_outintNone可选) – 请参阅

返回

生成的模型。

返回类型

Wav2Vec2模型

效用函数

import_huggingface_model

torchaudio.models.wav2vec2.utils.import_huggingface_model(原文torch.nn.Moduletorchaudio.models.Wav2Vec2Model[来源]

从 Hugging Face 的 Transformers 的相应模型对象构建 Wav2Vec2Model。

参数

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.Moduletorchaudio.models.Wav2Vec2Model[来源]

fairseq 的相应模型对象构建 Wav2Vec2Model。

参数

originaltorch.nn.Module) – fairseq 的 Wav2Vec2.0 或 HuBERT 模型的实例。 或 之一。fairseq.models.wav2vec.wav2vec2_asr.Wav2VecEncoderfairseq.models.wav2vec.wav2vec2.Wav2Vec2Modelfairseq.models.hubert.hubert_asr.HubertEncoder

返回

导入的模型。

返回类型

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)
>>>
>>> # 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 inthop_length: intn_res_block int = 10n_rnn int = 512n_fc int = 512kernel_size int = 5n_freq: int = 128n_hidden int = 128n_output int = 128[来源]torchaudio.models.WaveRNN

基于 fatchord 实现的 WaveRNN 模型。

最初的实现是在 Efficient Neural Audio Synthesis [7] 中引入的。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(波形手电筒。张量specgramtorch。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)

返回类型

张肌

infer(specgramTorch。Tensorlengths 可选[torch.Tensor] = NoneTuple[torch.Tensor可选[torch.张量]][来源]

WaveRNN 的推理方法。

此函数目前仅支持多项式采样,该函数假定 网络在交叉熵损失上进行训练。

参数
  • specgramTensor) - 一批频谱图。形状:(n_batch、n_freq、n_time)。

  • lengthsTensorNone可选) – 指示批处理中每个音频的有效长度。 形状:(batch, )。 当 包含具有不同持续时间的 spectrograph 时, 通过提供参数,模型将计算 相应的有效输出长度。 如果 ,则假定 中的所有音频都具有有效长度。违约:。specgramlengthsNonewaveformsNone

返回

张肌

大小为 (n_batch, 1, n_time) 的推断波形。 1 代表单个通道。

Tensor 或 None

如果提供了 argument,则返回形状为 (batch, ) 的 Tensor。 它表示输出 Tensor 的时间轴上的有效长度。lengths

返回类型

(Tensor, 可选[Tensor])

引用

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

Jonathan Shen、Ruoming Pang、Ron J Weiss、Mike Schuster、Navdeep Jaitly、Zongheng Yang、Zhifeng Chen、Yu Zhang、Yuxuan Wang、Rj Skerrv-Ryan 等。通过在 mel 频谱图预测上调节 wavenet 来自然 tts 合成。2018 年 IEEE 声学、语音和信号处理国际会议 (ICASSP),4779–4783。IEEE,2018 年。

4

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

51,2,3,4,5)

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

61,2,3

Wei-Ning Hsu、Benjamin Bolte、Yao-Hung Hubert Tsai、Kushal Lakhotia、Ruslan Salakhutdinov 和 Abdelrahman Mohamed。Hubert:通过隐藏单元的掩蔽预测进行自我监督的语音表示学习。2021. arXiv:2106.07447.

7

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

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源