speechbrain.utils.streaming 模块
用于辅助设计和训练流式模型的实用工具。
作者 * Sylvain de Langen 2023
摘要
函数:
随机化输入序列的部分内容多次,以检测输入帧和输出帧之间的依赖关系,即某个输出帧是否依赖于某个输入帧。 |
|
返回由 |
|
将输入张量 |
|
将单个 |
参考
- speechbrain.utils.streaming.split_fixed_chunks(x, chunk_size, dim=-1)[source]
将输入张量
x分割成大小为chunk_size的块张量列表,沿着维度dim进行分割。适用于将序列分割成固定大小的块。如果维度
dim不能被chunk_size均匀分割,那么最后一个块将小于chunk_size。- Parameters:
- Returns:
张量的块列表,请参阅描述和示例。 保证
.size(dim) <= chunk_size。- Return type:
列表[张量]
Example
>>> 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表示批次中每个音频的相对长度,通常用于掩码。此函数在块级别计算相对长度。- Parameters:
chunk_lens (列表[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帧的音频。
- Returns:
一组分块的wav_lens列表,请参阅描述和示例。
- Return type:
列表[张量]
Example
>>> 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]
随机化输入序列的部分内容多次,以检测输入帧和输出帧之间的依赖关系,即给定的输出帧是否依赖于给定的输入帧。
这对于检查模型在流式上下文中是否表现正确以及是否不包含对流式场景中无法预知的未来帧的意外依赖非常有用。
请注意,对于非常长的序列,这可能会变得非常计算昂贵。
此外,这期望推理是完全确定性的,否则可能会发现错误的依赖关系。这也意味着模型必须处于评估模式,以抑制诸如dropout层之类的东西。
- Parameters:
- Returns:
dependencies – 表示输出是否依赖于输入的矩阵;使用
[in_frame_idx, out_frame_idx]进行索引。True表示检测到的依赖关系。- Return type:
布尔张量
- speechbrain.utils.streaming.plot_dependency_matrix(deps)[source]
返回由
infer_dependency_matrix生成的依赖矩阵的matplotlib图形。在给定点,红色方块表示给定的输出帧(y轴)依赖于给定的输入帧(x轴)。
例如,一个完全红色的图像意味着所有输出帧都依赖于所有的历史。这可能是双向RNN或transformer模型的情况。
- Parameters:
deps (BoolTensor) – 由
infer_dependency_matrix返回的矩阵或兼容格式的矩阵。- Return type:
matplotlib 依赖矩阵的图形。