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.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]的布尔张量