speechbrain.lobes.models.resepformer 模块
资源高效Sepformer的库。
- Authors
Cem Subakan 2022
摘要
类:
SkiM 的 Mem-LSTM -- |
|
用于RE-SepFormer和SkiM的资源高效分离管道 |
|
资源高效源分离器 这是实现RE-SepFormer的类 |
|
带有输出层的RNNBlock。 |
|
SpeechBrain实现的transformer编码器的封装。 |
|
SkiM的分段LSTM |
参考
- class speechbrain.lobes.models.resepformer.MemLSTM(hidden_size, dropout=0.0, bidirectional=False, mem_type='hc', norm_type='cln')[source]
基础:
ModuleSkiM的Mem-LSTM –
注意:这是从ESPNet工具包中的SkiM实现中提取的,并进行了修改以兼容SpeechBrain。
- Parameters:
Example
>>> x = (torch.randn(1, 5, 64), torch.randn(1, 5, 64)) >>> block = MemLSTM(64) >>> x = block(x, 5) >>> x[0].shape torch.Size([1, 5, 64])
- class speechbrain.lobes.models.resepformer.SegLSTM(input_size, hidden_size, dropout=0.0, bidirectional=False, norm_type='cLN')[source]
基础:
ModuleSkiM的Segment-LSTM
注意:这是从ESPNet工具包中的SkiM实现中提取的,并进行了修改以兼容SpeechBrain。
- Parameters:
Example
>>> x = torch.randn(3, 20, 64) >>> hc = None >>> seglstm = SegLSTM(64, 64) >>> y = seglstm(x, hc) >>> y[0].shape torch.Size([3, 20, 64])
- class speechbrain.lobes.models.resepformer.SBRNNBlock(input_size, hidden_channels, num_layers, outsize, rnn_type='LSTM', dropout=0, bidirectional=True)[source]
基础:
Module带有输出层的RNNBlock。
- Parameters:
Example
>>> x = torch.randn(10, 100, 64) >>> rnn = SBRNNBlock(64, 100, 1, 128, bidirectional=True) >>> x = rnn(x) >>> x.shape torch.Size([10, 100, 128])
- class speechbrain.lobes.models.resepformer.SBTransformerBlock_wnormandskip(num_layers, d_model, nhead, d_ffn=2048, input_shape=None, kdim=None, vdim=None, dropout=0.1, activation='relu', use_positional_encoding=False, norm_before=False, attention_type='regularMHA', causal=False, use_norm=True, use_skip=True, norm_type='gln')[source]
基础:
ModuleSpeechBrain实现的transformer编码器的封装。
- Parameters:
num_layers (int) – 层数。
d_model (int) – 表示的维度。
nhead (int) – 注意力头的数量。
d_ffn (int) – 位置前馈的维度。
input_shape (tuple) – 输入的形状。
kdim (int) – 键的维度(可选)。
vdim (int) – 值的维度(可选)。
dropout (float) – 丢弃率。
activation (str) – 激活函数。
use_positional_encoding (bool) – 如果为真,我们使用位置编码。
norm_before (bool) – 在转换之前使用归一化。
attention_type (str) – 注意力的类型,默认为“regularMHA”
因果 (布尔) – 是否屏蔽未来信息,默认为 False
use_norm (bool) – 是否在块中包含规范。
use_skip (bool) – 是否在块中添加跳跃连接。
norm_type (str) – 其中之一为“cln”、“gln”
Example
>>> x = torch.randn(10, 100, 64) >>> block = SBTransformerBlock_wnormandskip(1, 64, 8) >>> x = block(x) >>> x.shape torch.Size([10, 100, 64])
- class speechbrain.lobes.models.resepformer.ResourceEfficientSeparationPipeline(input_size, hidden_size, output_size, dropout=0.0, num_blocks=2, segment_size=20, bidirectional=True, mem_type='av', norm_type='gln', seg_model=None, mem_model=None)[source]
基础:
Module用于RE-SepFormer和SkiM的资源高效分离管道
注意:此实现是对ESPNET实现的SkiM的泛化
- Parameters:
input_size (int) – 输入特征的维度。 输入形状应为 (batch, length, input_size)
hidden_size (int) – 隐藏状态的维度。
output_size (int) – 输出大小的维度。
dropout (float) – 丢弃率。默认值为0。
num_blocks (int) – 基本SkiM块的数量
segment_size (int) – 用于分割长特征的段大小
双向 (bool) – RNN层是否是双向的。
mem_type (str) – ‘hc’, ‘h’, ‘c’, ‘id’ 或 None. 这控制了SegLSTM的隐藏(或单元)状态是否会被MemLSTM处理。 在‘id’模式下,隐藏状态和单元状态将完全相同地返回。 当mem_type为None时,MemLSTM将被移除。
norm_type (str) – 其中之一是 gln 或 cln cln 用于因果实现。
seg_model (class) – 处理段内元素的模型
mem_model (class) – 确保段之间连续性的内存模型
Example
>>> x = torch.randn(10, 100, 64) >>> seg_mdl = SBTransformerBlock_wnormandskip(1, 64, 8) >>> mem_mdl = SBTransformerBlock_wnormandskip(1, 64, 8) >>> resepf_pipeline = ResourceEfficientSeparationPipeline(64, 64, 128, seg_model=seg_mdl, mem_model=mem_mdl) >>> out = resepf_pipeline.forward(x) >>> out.shape torch.Size([10, 100, 128])
- class speechbrain.lobes.models.resepformer.ResourceEfficientSeparator(input_dim: int, causal: bool = True, num_spk: int = 2, nonlinear: str = 'relu', layer: int = 3, unit: int = 512, segment_size: int = 20, dropout: float = 0.0, mem_type: str = 'hc', seg_model=None, mem_model=None)[source]
基础:
Module资源高效源分离器 这是实现RE-SepFormer的类
- Parameters:
input_dim (int) – 输入特征维度
causal (bool) – 系统是否是因果的。
num_spk (int) – 目标说话者的数量。
非线性 (类) – 用于掩码估计的非线性函数, 从‘relu’, ‘tanh’, ‘sigmoid’中选择
层数 (int) – 块的数量。对于RE-SepFormer,默认值为2。
unit (int) – 隐藏状态的维度。
segment_size (int) – 用于分割长特征的块大小
dropout (float) – dropout比例。默认值为0。
mem_type (str) – ‘hc’, ‘h’, ‘c’, ‘id’, ‘av’ 或 None。 这控制是否将使用内存表示来确保段之间的连续性。 在‘av’模式下,摘要状态是通过简单地平均每个段的时间维度来计算的。 在‘id’模式下,隐藏状态和单元状态将完全相同地返回。 当mem_type为None时,内存模型将被移除。
seg_model (class) – 处理段内元素的模型
mem_model (class) – 确保段之间连续性的内存模型
Example
>>> x = torch.randn(10, 64, 100) >>> seg_mdl = SBTransformerBlock_wnormandskip(1, 64, 8) >>> mem_mdl = SBTransformerBlock_wnormandskip(1, 64, 8) >>> resepformer = ResourceEfficientSeparator(64, num_spk=3, mem_type='av', seg_model=seg_mdl, mem_model=mem_mdl) >>> out = resepformer.forward(x) >>> out.shape torch.Size([3, 10, 64, 100])