Tacotron2¶
- class torchaudio.models.Tacotron2(mask_padding: bool = False, n_mels: int = 80, n_symbol: int = 148, n_frames_per_step: int = 1, symbol_embedding_dim: int = 512, encoder_embedding_dim: int = 512, encoder_n_convolution: int = 3, encoder_kernel_size: int = 5, decoder_rnn_dim: int = 1024, decoder_max_step: int = 2000, decoder_dropout: float = 0.1, decoder_early_stopping: bool = True, attention_rnn_dim: int = 1024, attention_hidden_dim: int = 128, attention_location_n_filter: int = 32, attention_location_kernel_size: int = 31, attention_dropout: float = 0.1, prenet_dim: int = 256, postnet_n_convolution: int = 5, postnet_kernel_size: int = 5, postnet_embedding_dim: int = 512, gate_threshold: float = 0.5)[source]¶
来自“基于梅尔谱图预测调节WaveNet的自然TTS合成”[Shen 等人,2018]的Tacotron2模型,基于来自Nvidia深度学习示例的实现。
另请参阅
torchaudio.pipelines.Tacotron2TTSBundle
:具有预训练模型的TTS管道。
- 参数:
mask_padding (布尔值,可选) – 使用掩码填充(默认值:
False
)。n_mels (整数,可选) – 梅尔频谱的频带数量(默认值:
80
)。n_symbol (整数,可选) – 输入文本的符号数量(默认值:
148
)。n_frames_per_step (整数,可选) – 每步处理的帧数,仅支持1(默认值:
1
)。symbol_embedding_dim (整数,可选) – 输入嵌入维度(默认值:
512
)。encoder_n_convolution (整数,可选) – 编码器卷积的数量(默认值:
3
)。encoder_kernel_size (整数,可选) – 编码器内核大小(默认值:
5
)。encoder_embedding_dim (整数,可选) – 编码器嵌入维度(默认值:
512
)。decoder_rnn_dim (整数,可选) – 解码器LSTM中的单元数量(默认值:
1024
)。decoder_max_step (整数,可选) – 输出梅尔谱图的最大数量(默认值:
2000
)。decoder_dropout (浮点数,可选) – 解码器LSTM的dropout概率(默认值:
0.1
)。decoder_early_stopping (布尔值,可选) – 所有样本完成后继续解码(默认值:
True
)。attention_rnn_dim (整数,可选) – 注意力LSTM中的单元数量(默认值:
1024
)。attention_hidden_dim (整数,可选) – 注意力隐藏表示的维度(默认值:
128
)。attention_location_n_filter (int, 可选) – 注意力模型的滤波器数量(默认值:
32
)。attention_location_kernel_size (int, 可选) – 注意力模型的核大小(默认值:
31
)。attention_dropout (float, 可选) – 注意力LSTM的丢弃概率(默认值:
0.1
)。prenet_dim (int, 可选) – 预网络层中ReLU单元的数量(默认值:
256
)。postnet_n_convolution (int, 可选) – 后网络卷积的数量(默认值:
5
)。postnet_kernel_size (int, 可选) – 后网络核大小(默认值:
5
)。postnet_embedding_dim (int, 可选) – 后网络嵌入维度(默认值:
512
)。gate_threshold (float, 可选) – 停止标记的概率阈值(默认值:
0.5
)。
- 使用
Tacotron2
的教程 - 使用 Tacotron2 进行文本到语音转换
方法¶
前向传播¶
- Tacotron2.forward(tokens: Tensor, token_lengths: Tensor, mel_specgram: Tensor, mel_specgram_lengths: Tensor) Tuple[Tensor, Tensor, Tensor, Tensor] [source]¶
将输入传递到Tacotron2模型中。这处于强制教学模式,通常用于训练。
输入
tokens
应使用零填充到token_lengths
的最大长度。输入mel_specgram
应使用零填充到mel_specgram_lengths
的最大长度。- 参数:
tokens (Tensor) – 输入到Tacotron2的标记,形状为(n_batch, token_lengths的最大值)。
token_lengths (Tensor) –
tokens
中每个样本的有效长度,形状为(n_batch, )。mel_specgram (Tensor) – 目标梅尔谱图,形状为(n_batch, n_mels, mel_specgram_lengths的最大值)。
mel_specgram_lengths (Tensor) – 每个梅尔谱图的长度,形状为(n_batch, )。
- 返回值:
- 张量
Postnet之前的梅尔谱图,形状为(n_batch, n_mels, mel_specgram_lengths的最大值)。
- 张量
Postnet之后的梅尔谱图,形状为(n_batch, n_mels, mel_specgram_lengths的最大值)。
- 张量
每个时间步长停止标记的输出,形状为(n_batch, mel_specgram_lengths的最大值)。
- 张量
解码器中注意力权重的序列,形状为(n_batch, mel_specgram_lengths的最大值, token_lengths的最大值)。
- 返回类型:
[Tensor, Tensor, Tensor, Tensor]
推理¶
- Tacotron2.infer(tokens: Tensor, lengths: Optional[Tensor] = None) Tuple[Tensor, Tensor, Tensor] [source]¶
使用Tacotron2进行推理。输入是一批编码后的句子(
tokens
)及其对应的长度(lengths
)。输出是生成的梅尔谱图、其对应的长度以及解码器中的注意力权重。输入tokens应使用零填充到
lengths
的最大长度。- 参数:
tokens (Tensor) – 输入到Tacotron2的标记,形状为(n_batch, lengths的最大值)。
lengths (Tensor 或 None, 可选) –
tokens
中每个样本的有效长度,形状为(n_batch, )。如果为None
,则假设所有标记都是有效的。默认值:None
- 返回值:
- 张量
预测的梅尔谱图,形状为(n_batch, n_mels, mel_specgram_lengths的最大值)。
- 张量
预测的梅尔谱图的长度,形状为(n_batch, )。
- 张量
解码器中注意力权重的序列,形状为(n_batch, mel_specgram_lengths的最大值, lengths的最大值)。
- 返回类型:
(Tensor, Tensor, Tensor)