test_conv_tasnet
- torch.rand(): 均匀分布,返回服从分布的初始化后的tensor,张量的形状是其参数size定义
x = torch.rand(3, 32000);
#rand(*size, out=None, dtype = None)
torch.rand(*sizes,out = None) -->Tensor
返回一个张量,包含了从区间【0,1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义
参数:
- sizes(int...)-整数序列。定义了输出张量的形状
- out(Tensor,optinal)-结果张量
2. scipy.stats(): 生成服从指定分布的随机数
print_stats(x, sample_rate)
3. Conv-TasNet
class TasNet(nn.Model):
4.一维卷积nn.Conv1d
self.encoder = nn.Conv1d(1, self.enc_dim, self.win, bias=False, stride=self.stride)
卷积计算:
5.separation:
由卷积的一维扩张卷积块组成的时间卷积网络(TCN)估计每个spk的mask,使网络可以对语音信号的长期依赖性进行建模。经过4个repeat,d = 8,增加感受野。
这里用TCN,和传统卷积不同的是,膨胀卷积允许卷积时的输入存在间隔采样,采样率受途中的d控制。最下面一层的d=1,表示输入时每个点都采样,中间层d=2,表示输入时每2个点采样一个作为输入。膨胀卷积使用有效窗口的大小随着指数呈指数增长。这样卷积网络用比较小的层,就可以获得很大的感受野。
后面再用卷积先扩大通道数,对不同说话人进行不同通道的区分,然后就可以分离为不同说话人个数的mask
6.TCN模块
self.TCN = models.TCN(self.enc_dim, self.enc_dim, self.feature_dim, self.feature_dim * 4,
self.layer, self.stack, self.kernel, causal=self.causal)