一个入门语音分离小菜鸡的日记
写此文的目的是记录自己的学习过程,一些经过,遇到问题以及解决问题的方法,存放在这里,方便自己以后复习以及自己的一些总结,如果此文对你有帮助,或者我写的有错误,请随时联系我。
我也是边看代码边学习基础计知识,毕业就好。
最近新看了很多基础知识。对numpy矩阵里面的很多形式不是很会,
NumPy Ndarray 对象www.runoob.com![f6d04349e6e807d1cd0b2faebead4379.png](https://img-blog.csdnimg.cn/img_convert/f6d04349e6e807d1cd0b2faebead4379.png)
对于python里面有num_workers=4,早dataset里面,是4个num_worker一起工作,增加数据读取效率。
eg是一个字典,看你传进来什么。
def _make_chunk(self, eg, s):
"""
Make a chunk instance, which contains:
"mix": ndarray,
"ref": [ndarray...]
"""
chunk = dict()
chunk["mix"] = eg["mix"][s:s + self.chunk_size]
chunk["ref"] = [ref[s:s + self.chunk_size] for ref in eg["ref"]]
return chunk
这里的意思是分块,chunk成32000,。chunk=dict(),创建一个空字典。s+self.chunk_size一起看。
def
这段代码块的意思是,如果混合的语音少于16000,舍弃掉。如果大于16000小于32000,后面加0,接下来就是随机挑选起点。
下面就是块级别的pit。
def _merge(self, chunk_list):
"""
Merge chunk list into mini-batch
"""
N = len(chunk_list)
if self.train:
random.shuffle(chunk_list)
blist = []
for s in range(0, N - self.batch_size + 1, self.batch_size):
batch = default_collate(chunk_list[s:s + self.batch_size])
blist.append(batch)
rn = N % self.batch_size
return blist, chunk_list[-rn:] if rn else []
这块代码是将数据块列表合并到迷你批处理中。
audio
这一部分不难,是直接看代码是处理音频数据的。
直接看代码的解释就能看懂,读取数据scp格式,顺序索引格式,直接看代码注释没问题,这一部分即使不能全部理解,对整个实验的影响不大。我要做的修改实验不在这里改。
时间
20200328--11:20