modelscope / FunASR

A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc.
https://www.funasr.com
Other
6.24k stars 664 forks source link

咨询一下多帧跨通道注意力(MFCCA)模型的训练 #176

Closed yjiangling closed 1 year ago

yjiangling commented 1 year ago

前端时间在研究贵司发表的关于远场多说话人语音识别一体化建模的文章 MFCCA:MULTI-FRAME CROSS-CHANNEL ATTENTION FOR MULTI-SPEAKER ASR IN MULTI-PARTY MEETING SCENARIO,最近刚好看到你们公开了模型算法实现,经过仔细阅读修复了自己实现的不少错误和BUG,在此非常感谢,同时有两个疑惑想请教一下:

  1. 第一个是我看到在实现跨通道注意力算法时,模型并没有使用 mask ,但是在这之前整个训练的 batch 是经过降采样和位置编码处理的,也就是说 batch 中较短的样本 padding 部分的特征虽然在提取特征时经过了 mask,但是经过前端处理后已经有值了,这样在获取 key 和 value 时,最后两帧向前看的两帧并不是新 padding 的全0特征,这里是否会有些影响?还是我理解错了? 捕获

  2. 第二个是想请教一下 Alimeeting 训练集的组成,我看到近场训练集 Ali-near 是头戴麦克风录制的单通道音频,论文描述是生成了600h的多人说话模拟数据 Ali-simu,这一块儿生成模拟数据的具体方法能分享一下吗?生成的也都是8通道的数据吗?还是只是有部分重叠的单通道数据?原始的单通道 Ali-near 数据没有用于训练吗?此外,基于CDDMA Beamformer生成的 Ali-far-bf 是单通道数据吗?这一块儿实现是使用项目里 beamformer.py、dnn_beamformer.py、dnn_wpe.py 等算法实现的吗?

  3. 最后还有个问题比较困惑,训练的时候如果是即有单通道的数据,也有8通道的数据,那要保证每个batch中要么全都是8通道的训练样本,要么都是单通道的训练样本吧?这个是怎么处理的呢?先训练多通道的数据,再训练单通道的数据?

问题可能有点多,如果有时间能不能麻烦帮忙解答一下,非常感谢!!!

yufan-aslp commented 1 year ago

1.您理解的没有问题,不过那个值因为之前经过mask,有值也是一个极小值,对模型结果基本没有影响。当然您也可以做一下mask,让他确保是padding的0特征。 2.具体代码没法开源,涉及内部代码。主要思路就是模拟一个房间的长宽高,然后随机麦克风的位置和人的位置,然后模拟8通道的重叠音频,重叠率10~40%之间。原始单通道近场数据用于训练了,可以看最后一个结果对比的实验结果表格。Beamformer生成的是单通道数据。CDDMA Beamformer是内部的代码,目前可能还没开源。 3.这个是可以处理的,可以看源代码task/abs_task.py内,构建batch的时候有个utt2category的文件,你可以处理一个这样的文件对自己的音频进行分类,他会让相同类别的音频分配到同一个batch内。

yjiangling commented 1 year ago

1.您理解的没有问题,不过那个值因为之前经过mask,有值也是一个极小值,对模型结果基本没有影响。当然您也可以做一下mask,让他确保是padding的0特征。 2.具体代码没法开源,涉及内部代码。主要思路就是模拟一个房间的长宽高,然后随机麦克风的位置和人的位置,然后模拟8通道的重叠音频,重叠率10~40%之间。原始单通道近场数据用于训练了,可以看最后一个结果对比的实验结果表格。Beamformer生成的是单通道数据。CDDMA Beamformer是内部的代码,目前可能还没开源。 3.这个是可以处理的,可以看源代码task/abs_task.py内,构建batch的时候有个utt2category的文件,你可以处理一个这样的文件对自己的音频进行分类,他会让相同类别的音频分配到同一个batch内。

噢噢,明白了,非常感谢你的耐心解答,感谢!!!