speechbrain.utils.streaming 模块
帮助设计和训练流式模型的实用程序。
作者 * Sylvain de Langen 2023
摘要
函数
多次随机化输入序列的部分内容,以检测输入帧和输出帧之间的依赖关系,即给定的输出帧是否依赖于给定的输入帧。 |
|
返回由 |
|
将输入张量 |
|
将单个 |
参考
- speechbrain.utils.streaming.split_fixed_chunks(x, chunk_size, dim=-1)[source]
将输入张量
x
沿维度dim
分割成大小为chunk_size
的分块张量列表。对于将固定大小的序列分割成块很有用。如果维度
dim
不能被chunk_size
整除,则最后一个块将小于chunk_size
。- 参数:
- 返回:
一个块张量列表,参见描述和示例。保证
.size(dim) <= chunk_size
。- 返回类型:
List[Tensor]
示例
>>> import torch >>> from speechbrain.utils.streaming import split_fixed_chunks >>> x = torch.zeros((16, 10000, 80)) >>> chunks = split_fixed_chunks(x, 128, dim=1) >>> len(chunks) 79 >>> chunks[0].shape torch.Size([16, 128, 80]) >>> chunks[-1].shape torch.Size([16, 16, 80])
- speechbrain.utils.streaming.split_wav_lens(chunk_lens, wav_lens)[source]
将单个
wav_lens
张量转换为chunk_count
个张量列表,这在使用split_fixed_chunks
对信号进行分块时通常很有用。wav_lens
表示批次中每个音频的相对长度,通常用于掩码。此函数计算块级别的相对长度。- 参数:
chunk_lens (List[int]) – 每个块的序列长度。例如,如果
chunks
是由split_fixed_chunks(x, chunk_size, dim=1)
返回的,则此值应为[chk.size(1) for chk in chunks]
。wav_lens (torch.Tensor) – 批次中音频的相对长度。例如,对于 100 帧的输入信号和 3 个元素的批次,
(1.0, 0.5, 0.25)
意味着该批次分别包含 100 帧、50 帧和 25 帧的音频。
- 返回:
一个分块的 wav_lens 列表,参见描述和示例。
- 返回类型:
List[Tensor]
示例
>>> import torch >>> from speechbrain.utils.streaming import split_wav_lens, split_fixed_chunks >>> x = torch.zeros((3, 20, 80)) >>> chunks = split_fixed_chunks(x, 8, dim=1) >>> len(chunks) 3 >>> # 20 frames, 13 frames, 17 frames >>> wav_lens = torch.tensor([1.0, 0.65, 0.85]) >>> chunked_wav_lens = split_wav_lens([c.size(1) for c in chunks], wav_lens) >>> chunked_wav_lens [tensor([1., 1., 1.]), tensor([1.0000, 0.6250, 1.0000]), tensor([1.0000, 0.0000, 0.2500])] >>> # wav 1 covers 62.5% (5/8) of the second chunk's frames
- speechbrain.utils.streaming.infer_dependency_matrix(model: Callable, seq_shape: tuple, in_stride: int = 1)[source]
多次随机化输入序列的部分内容,以检测输入帧和输出帧之间的依赖关系,即给定的输出帧是否依赖于给定的输入帧。
这有助于检查模型在流式上下文中的行为是否正确,并且不包含对未来帧的意外依赖,因为这些依赖在流式场景中是不可知的。
请注意,对于非常长的序列,这可能会非常耗费计算资源。
此外,这要求推理是完全确定性的,否则可能会发现错误的依赖关系。这也意味着模型必须处于 eval 模式,以抑制 dropout 层等。
- 参数:
- 返回:
dependencies – 表示输出是否依赖于输入的矩阵;使用
[in_frame_idx, out_frame_idx]
进行索引。True
表示检测到依赖关系。- 返回类型:
BoolTensor
- speechbrain.utils.streaming.plot_dependency_matrix(deps)[source]
返回由
infer_dependency_matrix
生成的依赖矩阵的 matplotlib 图。在给定点,红色方块表示给定的输出帧(y 轴)依赖于给定的输入帧(x 轴)。
例如,全红图像意味着所有输出帧都依赖于所有历史数据。例如,双向 RNN 或 Transformer 模型可能就是这种情况。
- 参数:
deps (BoolTensor) – 由
infer_dependency_matrix
返回的矩阵或兼容格式的矩阵。- 返回类型:
依赖矩阵的 matplotlib 图。