speechbrain.lobes.models.FastSpeech2 模块
用于 FastSpeech 2 的神经网络模块:快速高质量的端到端文本转语音合成模型 作者 * Sathvik Udupa 2022 * Pradnya Kandarkar 2023 * Yingzhi Wang 2023
总结
类
使用高斯注意力学习输入文本和语谱图之间的对齐。 |
|
二进制损失,如 |
|
时长预测层 |
|
Token 的嵌入层 |
|
FastSpeech2 文本转语音模型。 |
|
带有内部对齐的 FastSpeech2 文本转语音模型。 |
|
CTC 对齐损失 |
|
损失计算 |
|
包括内部对齐器的损失计算 |
|
FastSpeech2 Conv Postnet :param n_mel_channels: 卷积层的输入特征维度 :type n_mel_channels: int :param postnet_embedding_dim: 卷积层的输出特征维度 :type postnet_embedding_dim: int :param postnet_kernel_size: postnet 卷积核大小 :type postnet_kernel_size: int :param postnet_n_convolutions: 卷积层数量 :type postnet_n_convolutions: int :param postnet_dropout: postnet 的 dropout 概率 :type postnet_dropout: float |
|
用于静音音素预测器的模块。 |
|
SSIM 损失为 (1 - SSIM) SSIM 在这里解释 https://en.wikipedia.org/wiki/Structural_similarity |
|
根据每步的帧数对模型输入和目标进行零填充 |
|
根据每步的帧数对模型输入和目标进行零填充 结果:tuple 一个用作输入/目标的张量 tuple ( text_padded, dur_padded, input_lengths, mel_padded, output_lengths, len_x, labels, wavs ) |
函数
计算时长内的平均值。 |
|
音频信号的动态范围压缩 |
|
单调对齐搜索算法,numpy 比 torch 实现速度更快。 |
|
计算原始音频信号的 MelSpectrogram |
|
根据时长对编码器输出进行上采样 |
参考
- class speechbrain.lobes.models.FastSpeech2.EncoderPreNet(n_vocab, blank_id, out_channels=512)[source]
继承自:
Module
Token 的嵌入层
示例
>>> from speechbrain.nnet.embedding import Embedding >>> from speechbrain.lobes.models.FastSpeech2 import EncoderPreNet >>> encoder_prenet_layer = EncoderPreNet(n_vocab=40, blank_id=0, out_channels=384) >>> x = torch.rand(3, 5) >>> y = encoder_prenet_layer(x) >>> y.shape torch.Size([3, 5, 384])
- class speechbrain.lobes.models.FastSpeech2.PostNet(n_mel_channels=80, postnet_embedding_dim=512, postnet_kernel_size=5, postnet_n_convolutions=5, postnet_dropout=0.5)[source]
继承自:
Module
FastSpeech2 Conv Postnet :param n_mel_channels: 卷积层的输入特征维度 :type n_mel_channels: int :param postnet_embedding_dim: 卷积层的输出特征维度 :type postnet_embedding_dim: int :param postnet_kernel_size: postnet 卷积核大小 :type postnet_kernel_size: int :param postnet_n_convolutions: 卷积层数量 :type postnet_n_convolutions: int :param postnet_dropout: postnet 的 dropout 概率 :type postnet_dropout: float
- class speechbrain.lobes.models.FastSpeech2.DurationPredictor(in_channels, out_channels, kernel_size, dropout=0.0, n_units=1)[source]
继承自:
Module
时长预测层
- 参数:
示例
>>> from speechbrain.lobes.models.FastSpeech2 import FastSpeech2 >>> duration_predictor_layer = DurationPredictor(in_channels=384, out_channels=384, kernel_size=3) >>> x = torch.randn(3, 400, 384) >>> mask = torch.ones(3, 400, 384) >>> y = duration_predictor_layer(x, mask) >>> y.shape torch.Size([3, 400, 1])
- class speechbrain.lobes.models.FastSpeech2.SPNPredictor(enc_num_layers, enc_num_head, enc_d_model, enc_ffn_dim, enc_k_dim, enc_v_dim, enc_dropout, normalize_before, ffn_type, ffn_cnn_kernel_size_list, n_char, padding_idx)[source]
继承自:
Module
用于静音音素预测器的模块。它接收不包含任何静音音素 token 的音素序列作为输入,并预测是否应该在某个位置之后插入一个静音音素。这是为了避免在推理时由于输入序列中没有静音音素 token 而导致语速过快的问题。
- 参数:
enc_num_layers (int) – 编码器中 Transformer 层 (TransformerEncoderLayer) 的数量
enc_num_head (int) – 编码器 Transformer 层中多头注意力 (MHA) 的头数
enc_d_model (int) – 编码器中期望的特征数量
enc_ffn_dim (int) – 前馈网络模型的维度
enc_k_dim (int) – key 的维度
enc_v_dim (int) – value 的维度
enc_dropout (float) – 编码器的 Dropout
normalize_before (bool) – 在 Transformer 层中,归一化应该应用于 MHA 或 FFN 之前还是之后。
ffn_type (str) – 在 Transformer 层内部是使用卷积层还是前馈网络
ffn_cnn_kernel_size_list (list of int) – 如果 ffn_type 是 1dcnn,则为 2 个 1d 卷积的卷积核大小
n_char (int) – token 嵌入的符号数量
padding_idx (int) – 填充索引
- class speechbrain.lobes.models.FastSpeech2.FastSpeech2(enc_num_layers, enc_num_head, enc_d_model, enc_ffn_dim, enc_k_dim, enc_v_dim, enc_dropout, dec_num_layers, dec_num_head, dec_d_model, dec_ffn_dim, dec_k_dim, dec_v_dim, dec_dropout, normalize_before, ffn_type, ffn_cnn_kernel_size_list, n_char, n_mels, postnet_embedding_dim, postnet_kernel_size, postnet_n_convolutions, postnet_dropout, padding_idx, dur_pred_kernel_size, pitch_pred_kernel_size, energy_pred_kernel_size, variance_predictor_dropout)[source]
继承自:
Module
FastSpeech2 文本到语音模型。该类是模型的主要入口点,负责实例化所有子模块,这些子模块又管理单独的神经网络层。简化的结构:输入 -> token 嵌入 -> 编码器 -> 时长/音高/能量预测器 -> 时长上采样器 -> 解码器 -> 输出。在训练期间,使用教师强制(使用真实时长进行上采样)。
- 参数:
enc_num_layers (int) – 编码器中 Transformer 层 (TransformerEncoderLayer) 的数量
enc_num_head (int) – 编码器 Transformer 层中多头注意力 (MHA) 的头数
enc_d_model (int) – 编码器中期望的特征数量
enc_ffn_dim (int) – 前馈网络模型的维度
enc_k_dim (int) – key 的维度
enc_v_dim (int) – value 的维度
enc_dropout (float) – 编码器的 Dropout
dec_num_layers (int) – 解码器中 transformer 层 (TransformerEncoderLayer) 的数量
dec_num_head (int) – 解码器 transformer 层中多头注意力 (MHA) 头部的数量
dec_d_model (int) – 解码器中期望的特征数量
dec_ffn_dim (int) – 前馈网络模型的维度
dec_k_dim (int) – 键的维度
dec_v_dim (int) – 值的维度
dec_dropout (float) – 解码器的 dropout
normalize_before (bool) – 在 Transformer 层中,归一化应该应用于 MHA 或 FFN 之前还是之后。
ffn_type (str) – transformer 层内部是否使用卷积层而不是前馈网络。
ffn_cnn_kernel_size_list (list of int) – 如果 ffn_type 是 1dcnn,则为 2 个 1d 卷积的卷积核大小
n_char (int) – token 嵌入的符号数量
n_mels (int) – 梅尔谱图中的 bin 数量
postnet_embedding_dim (int) – 卷积层的输出特征维度
postnet_kernel_size (int) – postnet 卷积核大小
postnet_n_convolutions (int) – 卷积层数量
postnet_dropout (float) – postnet 的 dropout 概率
padding_idx (int) – 填充索引
dur_pred_kernel_size (int) – 时长预测器中的卷积核大小
pitch_pred_kernel_size (int) – 音高预测的核大小。
energy_pred_kernel_size (int) – 能量预测的核大小。
variance_predictor_dropout (float) – 变异性预测器(时长/音高/能量)的 dropout 概率
示例
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import FastSpeech2 >>> model = FastSpeech2( ... enc_num_layers=6, ... enc_num_head=2, ... enc_d_model=384, ... enc_ffn_dim=1536, ... enc_k_dim=384, ... enc_v_dim=384, ... enc_dropout=0.1, ... dec_num_layers=6, ... dec_num_head=2, ... dec_d_model=384, ... dec_ffn_dim=1536, ... dec_k_dim=384, ... dec_v_dim=384, ... dec_dropout=0.1, ... normalize_before=False, ... ffn_type='1dcnn', ... ffn_cnn_kernel_size_list=[9, 1], ... n_char=40, ... n_mels=80, ... postnet_embedding_dim=512, ... postnet_kernel_size=5, ... postnet_n_convolutions=5, ... postnet_dropout=0.5, ... padding_idx=0, ... dur_pred_kernel_size=3, ... pitch_pred_kernel_size=3, ... energy_pred_kernel_size=3, ... variance_predictor_dropout=0.5) >>> inputs = torch.tensor([ ... [13, 12, 31, 14, 19], ... [31, 16, 30, 31, 0], ... ]) >>> input_lengths = torch.tensor([5, 4]) >>> durations = torch.tensor([ ... [2, 4, 1, 5, 3], ... [1, 2, 4, 3, 0], ... ]) >>> mel_post, postnet_output, predict_durations, predict_pitch, avg_pitch, predict_energy, avg_energy, mel_lens = model(inputs, durations=durations) >>> mel_post.shape, predict_durations.shape (torch.Size([2, 15, 80]), torch.Size([2, 5])) >>> predict_pitch.shape, predict_energy.shape (torch.Size([2, 5, 1]), torch.Size([2, 5, 1]))
- forward(tokens, durations=None, pitch=None, energy=None, pace=1.0, pitch_rate=1.0, energy_rate=1.0)[source]
用于训练和推断的前向传播
- 参数:
- 返回:
mel_post (torch.Tensor) – 来自解码器的梅尔输出
postnet_output (torch.Tensor) – 来自 postnet 的梅尔输出
predict_durations (torch.Tensor) – 每个 token 的预测时长
predict_pitch (torch.Tensor) – 每个 token 的预测音高
avg_pitch (torch.Tensor) – 如果输入音高不为 None,则为每个 token 的目标音高;如果输入音高为 None,则为 None。
predict_energy (torch.Tensor) – 每个 token 的预测能量
avg_energy (torch.Tensor) – 如果输入能量不为 None,则为每个 token 的目标能量;如果输入能量为 None,则为 None。
mel_length – 梅尔谱图的预测长度
- speechbrain.lobes.models.FastSpeech2.average_over_durations(values, durs)[source]
计算时长内的平均值。
- 参数:
values (torch.Tensor) – 形状: [B, 1, T_de]
durs (torch.Tensor) – 形状: [B, T_en]
- 返回:
avg – 形状: [B, 1, T_en]
- 返回类型:
torch.Tensor
- speechbrain.lobes.models.FastSpeech2.upsample(feats, durs, pace=1.0, padding_value=0.0)[source]
根据时长对编码器输出进行上采样
- class speechbrain.lobes.models.FastSpeech2.TextMelCollate[source]
基类:
object
根据每步的帧数对模型输入和目标进行零填充
- __call__(batch)[source]
从规范化的文本和梅尔谱图整理训练批次
- 参数:
batch (list) – [规范化文本, 规范化梅尔谱图]
- 返回:
text_padded (torch.Tensor)
dur_padded (torch.Tensor)
input_lengths (torch.Tensor)
mel_padded (torch.Tensor)
pitch_padded (torch.Tensor)
energy_padded (torch.Tensor)
output_lengths (torch.Tensor)
len_x (torch.Tensor)
labels (torch.Tensor)
wavs (torch.Tensor)
no_spn_seq_padded (torch.Tensor)
spn_labels_padded (torch.Tensor)
last_phonemes_padded (torch.Tensor)
- class speechbrain.lobes.models.FastSpeech2.Loss(log_scale_durations, ssim_loss_weight, duration_loss_weight, pitch_loss_weight, energy_loss_weight, mel_loss_weight, postnet_mel_loss_weight, spn_loss_weight=1.0, spn_loss_max_epochs=8)[source]
继承自:
Module
损失计算
- 参数:
log_scale_durations (bool) – 对目标时长应用对数变换
ssim_loss_weight (float) – ssim 损失的权重
duration_loss_weight (float) – 时长损失的权重
pitch_loss_weight (float) – 音高损失的权重
energy_loss_weight (float) – 能量损失的权重
mel_loss_weight (float) – 梅尔损失的权重
postnet_mel_loss_weight (float) – postnet 梅尔损失的权重
spn_loss_weight (float) – spn 损失的权重
spn_loss_max_epochs (int) – 最大 epoch 数
- speechbrain.lobes.models.FastSpeech2.mel_spectogram(sample_rate, hop_length, win_length, n_fft, n_mels, f_min, f_max, power, normalized, min_max_energy_norm, norm, mel_scale, compression, audio)[source]
计算原始音频信号的 MelSpectrogram
- 参数:
sample_rate (int) – 音频信号的采样率。
hop_length (int) – STFT 窗之间的跳跃长度。
win_length (int) – 窗大小。
n_fft (int) – FFT 大小。
n_mels (int) – 梅尔滤波器组的数量。
f_min (float) – 最小频率。
f_max (float) – 最大频率。
power (float) – 幅度谱图的指数。
normalized (bool) – 是否在 STFT 后按幅度归一化。
min_max_energy_norm (bool) – 是否按最小-最大值归一化
norm (str or None) – 如果为 "slaney",则将三角形梅尔权重除以梅尔带宽度。
mel_scale (str) – 使用的尺度:"htk" 或 "slaney"。
compression (bool) – 是否进行动态范围压缩
audio (torch.Tensor) – 输入音频信号
- 返回:
mel (torch.Tensor)
rmse (torch.Tensor)
- speechbrain.lobes.models.FastSpeech2.dynamic_range_compression(x, C=1, clip_val=1e-05)[source]
音频信号的动态范围压缩
- class speechbrain.lobes.models.FastSpeech2.SSIMLoss[源]
继承自:
Module
SSIM 损失为 (1 - SSIM) SSIM 在这里解释 https://en.wikipedia.org/wiki/Structural_similarity
- class speechbrain.lobes.models.FastSpeech2.SSIMLoss[source]
sequence_mask(sequence_length, max_len=None)[source]
- 参数:
创建序列掩码,用于过滤序列张量中的填充。
sequence_length (torch.Tensor) – 序列长度。
- 返回:
max_len (int) – 最大序列长度。默认为 None。
- 返回类型:
掩码
- 在 [0, 1] 范围内的平均损失值,由长度进行掩码。
基类:
object
class speechbrain.lobes.models.FastSpeech2.TextMelCollateWithAlignment[source]
根据每步的帧数对模型输入和目标进行零填充。结果:tuple
一个张量元组,用作输入/目标(
)
- text_padded, dur_padded, input_lengths, mel_padded, output_lengths, len_x, labels, wavs
从规范化的文本和梅尔谱图整理训练批次
- phoneme_padded (torch.Tensor)
单调对齐搜索算法,numpy 比 torch 实现速度更快。
- 参数:
- 返回:
mask (torch.Tensor) – 输入对齐掩码 [b, t_x, t_y]
- 返回类型:
torch.Tensor
示例
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import maximum_path_numpy >>> alignment = torch.rand(2, 5, 100) >>> mask = torch.ones(2, 5, 100) >>> hard_alignments = maximum_path_numpy(alignment, mask)
- 路径
继承自:
Module
使用高斯注意力学习输入文本和语谱图之间的对齐。
class speechbrain.lobes.models.FastSpeech2.AlignmentNetwork(in_query_channels=80, in_key_channels=512, attn_channels=80, temperature=0.0005)[source]
- 参数:
示例
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import AlignmentNetwork >>> aligner = AlignmentNetwork( ... in_query_channels=80, ... in_key_channels=512, ... attn_channels=80, ... temperature=0.0005, ... ) >>> phoneme_feats = torch.rand(2, 512, 20) >>> mels = torch.rand(2, 80, 100) >>> alignment_soft, alignment_logprob = aligner(mels, phoneme_feats, None, None) >>> alignment_soft.shape, alignment_logprob.shape (torch.Size([2, 1, 100, 20]), torch.Size([2, 1, 100, 20]))
- temperature (float) – softmax 的温度。默认为 0.0005。
forward(queries, keys, mask, attn_prior)[source]
- 参数:
对齐器编码器的前向传播。
queries (torch.Tensor) – 查询张量 [B, C, T_de]
keys (torch.Tensor) – 查询张量 [B, C_emb, T_en]
mask (torch.Tensor) – 查询掩码 [B, T_de]
- 返回:
attn_prior (torch.Tensor) – 先验注意力张量 [B, 1, T_en, T_de]
attn (torch.Tensor) – 软注意力 [B, 1, T_en, T_de]
- attn_logp (torch.Tensor) – 对数概率 [B, 1, T_en , T_de]
继承自:
Module
class speechbrain.lobes.models.FastSpeech2.FastSpeech2WithAlignment(enc_num_layers, enc_num_head, enc_d_model, enc_ffn_dim, enc_k_dim, enc_v_dim, enc_dropout, in_query_channels, in_key_channels, attn_channels, temperature, dec_num_layers, dec_num_head, dec_d_model, dec_ffn_dim, dec_k_dim, dec_v_dim, dec_dropout, normalize_before, ffn_type, ffn_cnn_kernel_size_list, n_char, n_mels, postnet_embedding_dim, postnet_kernel_size, postnet_n_convolutions, postnet_dropout, padding_idx, dur_pred_kernel_size, pitch_pred_kernel_size, energy_pred_kernel_size, variance_predictor_dropout)[source]
具有内部对齐的 FastSpeech2 文本到语音模型。该类是模型的主要入口点,负责实例化所有子模块,这些子模块又管理单独的神经网络层。某些部分采纳自以下实现:https://github.com/coqui-ai/TTS/blob/dev/TTS/tts/models/forward_tts.py
- 参数:
enc_num_layers (int) – 编码器中 Transformer 层 (TransformerEncoderLayer) 的数量
enc_num_head (int) – 编码器 Transformer 层中多头注意力 (MHA) 的头数
enc_d_model (int) – 编码器中期望的特征数量
enc_ffn_dim (int) – 前馈网络模型的维度
enc_k_dim (int) – key 的维度
enc_v_dim (int) – value 的维度
enc_dropout (float) – 编码器的 Dropout
简化的结构:输入 -> token 嵌入 -> 编码器 -> 对齐器 -> 时长/音高/能量 -> 上采样器 -> 解码器 -> 输出
in_query_channels (int) – 查询网络中的通道数。
in_key_channels (int) – 键网络中的通道数。
attn_channels (int) – 注意力层中的内部通道数。
dec_num_layers (int) – 解码器中 transformer 层 (TransformerEncoderLayer) 的数量
dec_num_head (int) – 解码器 transformer 层中多头注意力 (MHA) 头部的数量
dec_d_model (int) – 解码器中期望的特征数量
dec_ffn_dim (int) – 前馈网络模型的维度
dec_k_dim (int) – 键的维度
dec_v_dim (int) – 值的维度
dec_dropout (float) – 解码器的 dropout
normalize_before (bool) – 在 Transformer 层中,归一化应该应用于 MHA 或 FFN 之前还是之后。
ffn_type (str) – transformer 层内部是否使用卷积层而不是前馈网络。
ffn_cnn_kernel_size_list (list of int) – 如果 ffn_type 是 1dcnn,则为 2 个 1d 卷积的卷积核大小
n_char (int) – token 嵌入的符号数量
n_mels (int) – 梅尔谱图中的 bin 数量
postnet_embedding_dim (int) – 卷积层的输出特征维度
postnet_kernel_size (int) – postnet 卷积核大小
postnet_n_convolutions (int) – 卷积层数量
postnet_dropout (float) – postnet 的 dropout 概率
padding_idx (int) – 填充索引
dur_pred_kernel_size (int) – 时长预测器中的卷积核大小
pitch_pred_kernel_size (int) – 音高预测的核大小。
energy_pred_kernel_size (int) – 能量预测的核大小。
variance_predictor_dropout (float) – 变异性预测器(时长/音高/能量)的 dropout 概率
示例
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import FastSpeech2WithAlignment >>> model = FastSpeech2WithAlignment( ... enc_num_layers=6, ... enc_num_head=2, ... enc_d_model=384, ... enc_ffn_dim=1536, ... enc_k_dim=384, ... enc_v_dim=384, ... enc_dropout=0.1, ... in_query_channels=80, ... in_key_channels=384, ... attn_channels=80, ... temperature=0.0005, ... dec_num_layers=6, ... dec_num_head=2, ... dec_d_model=384, ... dec_ffn_dim=1536, ... dec_k_dim=384, ... dec_v_dim=384, ... dec_dropout=0.1, ... normalize_before=False, ... ffn_type='1dcnn', ... ffn_cnn_kernel_size_list=[9, 1], ... n_char=40, ... n_mels=80, ... postnet_embedding_dim=512, ... postnet_kernel_size=5, ... postnet_n_convolutions=5, ... postnet_dropout=0.5, ... padding_idx=0, ... dur_pred_kernel_size=3, ... pitch_pred_kernel_size=3, ... energy_pred_kernel_size=3, ... variance_predictor_dropout=0.5) >>> inputs = torch.tensor([ ... [13, 12, 31, 14, 19], ... [31, 16, 30, 31, 0], ... ]) >>> mels = torch.rand(2, 100, 80) >>> mel_post, postnet_output, durations, predict_pitch, avg_pitch, predict_energy, avg_energy, mel_lens, alignment_durations, alignment_soft, alignment_logprob, alignment_mas = model(inputs, mels) >>> mel_post.shape, durations.shape (torch.Size([2, 100, 80]), torch.Size([2, 5])) >>> predict_pitch.shape, predict_energy.shape (torch.Size([2, 5, 1]), torch.Size([2, 5, 1])) >>> alignment_soft.shape, alignment_mas.shape (torch.Size([2, 100, 5]), torch.Size([2, 100, 5]))
- temperature (float) – softmax 的温度。
用于训练和推断的前向传播
- 参数:
tokens (torch.Tensor) – 输入 token 批次
forward(tokens, mel_spectograms=None, pitch=None, energy=None, pace=1.0, pitch_rate=1.0, energy_rate=1.0)[source]
pitch (torch.Tensor) – 每帧的音高批次。如果为 None,模型将根据预测音高进行推断。
energy (torch.Tensor) – 每帧的能量批次。如果为 None,模型将根据预测能量进行推断。
pace (float) – 时长的缩放因子
pitch_rate (float) – 音高的缩放因子
energy_rate (float) – 能量的缩放因子
- 返回:
mel_post (torch.Tensor) – 来自解码器的梅尔输出
postnet_output (torch.Tensor) – 来自 postnet 的梅尔输出
predict_durations (torch.Tensor) – 每个 token 的预测时长
predict_pitch (torch.Tensor) – 每个 token 的预测音高
avg_pitch (torch.Tensor) – 如果输入音高不为 None,则为每个 token 的目标音高;如果输入音高为 None,则为 None。
predict_energy (torch.Tensor) – 每个 token 的预测能量
avg_energy (torch.Tensor) – 如果输入能量不为 None,则为每个 token 的目标能量;如果输入能量为 None,则为 None。
mel_length – 梅尔谱图的预测长度
mel_spectograms (torch.Tensor) – 梅尔谱图批次(仅用于训练)
alignment_durations – 来自硬对齐图的时长
alignment_soft (torch.Tensor) – 软对齐势
alignment_logprob (torch.Tensor) – 对数尺度对齐势
- alignment_mas (torch.Tensor) – 硬对齐图
继承自:
Module
包括内部对齐器的损失计算
- 参数:
log_scale_durations (bool) – 对目标时长应用对数变换
class speechbrain.lobes.models.FastSpeech2.LossWithAlignment(log_scale_durations, ssim_loss_weight, duration_loss_weight, pitch_loss_weight, energy_loss_weight, mel_loss_weight, postnet_mel_loss_weight, aligner_loss_weight, binary_alignment_loss_weight, binary_alignment_loss_warmup_epochs, binary_alignment_loss_max_epochs)[source]
duration_loss_weight (float) – 时长损失的权重
pitch_loss_weight (float) – 音高损失的权重
energy_loss_weight (float) – 能量损失的权重
mel_loss_weight (float) – 梅尔损失的权重
postnet_mel_loss_weight (float) – postnet 梅尔损失的权重
ssim_loss_weight (float) – ssim 损失的权重
aligner_loss_weight (float) – 对齐器损失的权重
binary_alignment_loss_weight (float) – postnet 梅尔损失的权重
binary_alignment_loss_warmup_epochs (int) – 二进制损失影响逐渐增加的 epoch 数。
- current_epoch (int) – 用于确定二进制对齐损失的开始/结束
继承自:
Module
CTC 对齐损失
示例
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import ForwardSumLoss >>> loss_func = ForwardSumLoss() >>> attn_logprob = torch.rand(2, 1, 100, 5) >>> key_lens = torch.tensor([5, 5]) >>> query_lens = torch.tensor([100, 100]) >>> loss = loss_func(attn_logprob, key_lens, query_lens)
- 总损失
继承自:
Module
class speechbrain.lobes.models.FastSpeech2.BinaryAlignmentLoss[source]
>>> import torch >>> from speechbrain.lobes.models.FastSpeech2 import BinaryAlignmentLoss >>> loss_func = BinaryAlignmentLoss() >>> alignment_hard = torch.randint(0, 2, (2, 100, 5)) >>> alignment_soft = torch.rand(2, 100, 5) >>> loss = loss_func(alignment_hard, alignment_soft)