paddlespeech.t2s.modules.nets_utils 模块

paddlespeech.t2s.modules.nets_utils.get_random_segments(x: <module 'paddle' from '/home/docs/checkouts/readthedocs.org/user_builds/paddlespeech/envs/latest/lib/python3.7/site-packages/paddle/__init__.py'>, x_lengths: ~paddle.Tensor, segment_size: int) Tuple[Tensor, Tensor][来源]

获取随机段落。

参数:

x (Tensor):

输入张量 (B, C, T)。

x_lengths (Tensor):

长度张量 (B,).

segment_size (int):

段大小。

Returns:
Tensor:

分段张量 (B, C, segment_size)。

Tensor:

起始索引张量 (B,).

paddlespeech.t2s.modules.nets_utils.get_seg_pos(speech_pad: Tensor, text_pad: Tensor, align_start: Tensor, align_end: Tensor, align_start_lens: Tensor, seg_emb: bool = False)[来源]
Args:
speech_pad (paddle.Tensor):

输入语音 (B, Tmax, D).

text_pad (paddle.Tensor):

输入文本 (B, Tmax2).

align_start (paddle.Tensor):

帧级电话对齐开始 (B, Tmax2).

align_end (paddle.Tensor):

框架级手机对齐结束 (B, Tmax2).

align_start_lens (paddle.Tensor):

align_start 的长度 (B, ).

seg_emb (bool):

是否使用分段嵌入。

Returns:
paddle.Tensor[int]: n-th phone of each mel, 0<=n<=Tmax2 (B, Tmax).

例如: Tensor(shape=[1, 328], dtype=int64, place=Place(gpu:0), stop_gradient=True, [[0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 5 , 5 , 5 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 0 , 0 ]])

paddle.Tensor[int]: n-th phone of each phone, 0<=n<=Tmax2 (B, Tmax2).

例如: Tensor(shape=[1, 38], dtype=int64, place=Place(gpu:0), stop_gradient=True,

[[1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38]])

paddlespeech.t2s.modules.nets_utils.get_segments(x: Tensor, start_idxs: Tensor, segment_size: int) Tensor[来源]

获取细分.

参数:

x (Tensor):

输入张量 (B, C, T)。

start_idxs (Tensor):

起始索引张量 (B,).

segment_size (int):

段大小。

Returns:

张量:分段张量 (B, C, segment_size)。

paddlespeech.t2s.modules.nets_utils.initialize(model: Layer, init: str)[来源]

初始化神经网络模块的权重。

参数使用给定的方法或分布进行初始化。

自定义初始化例程可以实现到子模块中

Args:
model (nn.Layer):

目标。

init (str):

初始化方法。

paddlespeech.t2s.modules.nets_utils.make_non_pad_mask(lengths, xs=None, length_dim=-1)[来源]

制作包含非填充部分索引的掩码张量。

Args:
lengths (Tensor(int64) or List):

长度批次 (B,).

xs (Tensor, optional):

参考张量。
如果设置,掩码将与此张量具有相同的形状。

length_dim (int, optional):

上述张量的维度指示器。
参见示例。

Returns:
Tensor(bool):

包含填充部分索引的掩码张量布尔值。

Examples:

仅仅是长度。

>>> lengths = [5, 3, 2]
>>> make_non_pad_mask(lengths)
masks = [[1, 1, 1, 1 ,1],
         [1, 1, 1, 0, 0],
         [1, 1, 0, 0, 0]]

使用参考张量。

>>> xs = paddle.zeros((3, 2, 4))
>>> make_non_pad_mask(lengths, xs)
tensor([[[1, 1, 1, 1],
         [1, 1, 1, 1]],
        [[1, 1, 1, 0],
         [1, 1, 1, 0]],
        [[1, 1, 0, 0],
         [1, 1, 0, 0]]])
>>> xs = paddle.zeros((3, 2, 6))
>>> make_non_pad_mask(lengths, xs)
tensor([[[1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0]],
        [[1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0]],
        [[1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0]]])

带有参考张量和维度指示器。

>>> xs = paddle.zeros((3, 6, 6))
>>> make_non_pad_mask(lengths, xs, 1)
tensor([[[1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [0, 0, 0, 0, 0, 0]],
        [[1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0]],
        [[1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0]]])
>>> make_non_pad_mask(lengths, xs, 2)
tensor([[[1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0],
         [1, 1, 1, 1, 1, 0]],
        [[1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0],
         [1, 1, 1, 0, 0, 0]],
        [[1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0],
         [1, 1, 0, 0, 0, 0]]])
paddlespeech.t2s.modules.nets_utils.make_pad_mask(lengths, xs=None, length_dim=-1)[来源]

制作包含填充部分索引的掩码张量。

Args:
lengths (Tensor(int64)):

长度批次 (B,).

xs (Tensor, optional):

参考张量。 如果设置,遮罩将与此张量具有相同的形状。

length_dim (int, optional):

上面张量的维度指标。
参见示例。

Returns:

Tensor(bool): 掩码张量,包含填充部分的索引布尔值。

Examples:

仅使用长度。

>>> lengths = [5, 3, 2]
>>> make_non_pad_mask(lengths)
masks = [[0, 0, 0, 0 ,0],
         [0, 0, 0, 1, 1],
         [0, 0, 1, 1, 1]]

与参考张量。

>>> xs = paddle.zeros((3, 2, 4))
>>> make_pad_mask(lengths, xs)
tensor([[[0, 0, 0, 0],
         [0, 0, 0, 0]],
        [[0, 0, 0, 1],
         [0, 0, 0, 1]],
        [[0, 0, 1, 1],
         [0, 0, 1, 1]]])
>>> xs = paddle.zeros((3, 2, 6))
>>> make_pad_mask(lengths, xs)
tensor([[[0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1]],
        [[0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1]],
        [[0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1]]])

具有参考张量和维度指示器。

>>> xs = paddle.zeros((3, 6, 6))
>>> make_pad_mask(lengths, xs, 1)
tensor([[[0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [1, 1, 1, 1, 1, 1]],
        [[0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1]],
        [[0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1],
         [1, 1, 1, 1, 1, 1]]])
>>> make_pad_mask(lengths, xs, 2)
tensor([[[0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1],
         [0, 0, 0, 0, 0, 1]],
        [[0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1],
         [0, 0, 0, 1, 1, 1]],
        [[0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1],
         [0, 0, 1, 1, 1, 1]]],)
paddlespeech.t2s.modules.nets_utils.pad_list(xs, pad_value)[来源]

对张量列表进行填充。

Args:
xs (List[Tensor]):

张量列表 [(T_1, *), (T_2, *), ..., (T_B, *)].

pad_value (float):

填充值。

Returns:

张量: 填充张量 (B, Tmax, *).

Examples:
>>> x = [paddle.ones([4]), paddle.ones([2]), paddle.ones([1])]
>>> x
[tensor([1., 1., 1., 1.]), tensor([1., 1.]), tensor([1.])]
>>> pad_list(x, 0)
tensor([[1., 1., 1., 1.],
        [1., 1., 0., 0.],
        [1., 0., 0., 0.]])
paddlespeech.t2s.modules.nets_utils.paddle_gather(x, dim, index)[来源]
paddlespeech.t2s.modules.nets_utils.phones_masking(xs_pad: Tensor, src_mask: Tensor, align_start: Tensor, align_end: Tensor, align_start_lens: Tensor, mlm_prob: float = 0.8, mean_phn_span: int = 8, span_bdy: Optional[Tensor] = None)[来源]
Args:
xs_pad (paddle.Tensor):

输入语音 (B, Tmax, D).

src_mask (paddle.Tensor):

语音的掩码 (B, 1, Tmax).

align_start (paddle.Tensor):

帧级电话对齐开始 (B, Tmax2).

align_end (paddle.Tensor):

框架级手机对齐结束 (B, Tmax2).

align_start_lens (paddle.Tensor):

align_start 的长度 (B, ).

mlm_prob (float):
mean_phn_span (int):
span_bdy (paddle.Tensor):

输入语音的掩码梅尔边界 (B, 2)。

Returns:

paddle.Tensor[bool]: 输入语音的掩蔽位置 (B, Tmax)。

paddlespeech.t2s.modules.nets_utils.phones_text_masking(xs_pad: Tensor, src_mask: Tensor, text_pad: Tensor, text_mask: Tensor, align_start: Tensor, align_end: Tensor, align_start_lens: Tensor, mlm_prob: float = 0.8, mean_phn_span: int = 8, span_bdy: Optional[Tensor] = None)[来源]
Args:
xs_pad (paddle.Tensor):

输入语音 (B, Tmax, D).

src_mask (paddle.Tensor):

语音掩码 (B, 1, Tmax)。

text_pad (paddle.Tensor):

输入文本 (B, Tmax2).

text_mask (paddle.Tensor):

文本的掩膜 (B, 1, Tmax2).

align_start (paddle.Tensor):

帧级电话对齐开始 (B, Tmax2).

align_end (paddle.Tensor):

框架级手机对齐结束 (B, Tmax2).

align_start_lens (paddle.Tensor):

align_start 的长度 (B, ).

mlm_prob (float):
mean_phn_span (int):
span_bdy (paddle.Tensor):

输入语音的掩蔽梅尔边界 (B, 2).

Returns:
paddle.Tensor[bool]:

输入语音的遮蔽位置 (B, Tmax)。

paddle.Tensor[bool]:

输入文本的掩盖位置 (B, Tmax2)。

paddlespeech.t2s.modules.nets_utils.random_spans_noise_mask(length: int, mlm_prob: float = 0.8, mean_phn_span: float = 8)[来源]

此函数是random_spans_helper的副本。 噪声掩码由随机噪声令牌跨度组成。 噪声令牌的数量以及噪声跨度和非噪声跨度的数量是确定性的,计算如下: num_noise_tokens = round(length * noise_density) num_nonnoise_spans = num_noise_spans = round(num_noise_tokens / mean_noise_span_length) 跨度在非噪声和噪声之间交替,从非噪声开始。 在上述限制条件下,所有掩码出现的概率相同。 参数:

length: an int32 标量(输入标记序列的长度)
noise_density: 一个浮点数 - 输出掩码的近似密度
mean_noise_span_length: 一个数字

Returns:

np.ndarray: 一个形状为[length]的布尔张量