modelscope / 3D-Speaker

A Repository for Single- and Multi-modal Speaker Verification, Speaker Recognition and Speaker Diarization
Apache License 2.0
1.02k stars 89 forks source link

请教language-identification语料时数问题 #123

Closed jeremy110 closed 6 days ago

jeremy110 commented 1 month ago

您好,我想训练四种语种,所以我将CAM++语种识别-中英粤日韩识别-16k当中的embedding model来初始化我的model,然后四种语种的训练时数分别为250h, 250h , 500h, 200h,每跑一个epoch 我就测试一次eval和test,test前一两个epoch acc有8成,但后面就逐渐往下掉6~7成,eval一直往上升到9成多,所以我认为是overfitting 。

想请问训练多语种,各个的时数大概需要多少,以及跟spk数量会有关系吗?

yfchenlucky commented 1 month ago

如果eval和train同源,而test与eval不同源的话,看起来是overfitting导致。训练4语种,各语种训练时长在500h-5kh应该都可以获得较优性能,与spk数量相关性我们没有研究。你可以尝试 https://github.com/modelscope/3D-Speaker/blob/main/egs/3dspeaker/language-identification/run_paraformer.sh 是最佳训练策略,极大减小过拟合概率。

jeremy110 commented 1 month ago

感谢您快速地回复,我会再试试看的

jeremy110 commented 2 weeks ago

您好,我照你的方法训练四个语种,以下是我测试集的confusion matrix(由左至右分别是中英台客),每个语种6000笔测试音档,在中英表现得很好,但在台客ACC大概落在8成,是不是跟ASR只有用中英训练有关系?

这样子是不是在训练时解冻asr encdoer的某些层数,来让他也学习其他语言?

[[5902,   36 ,   26,   36],
[  17, 5930,   46,    7],
[  59,    0, 4729, 1222],
[   7,    0, 1001, 4992 ]]
yfchenlucky commented 2 weeks ago

可能是和中英台客训练语音占比有关,台是什么语种?客是客家话吗?

  1. 尝试增加台客训练语音占比。
  2. 可以适当以小学习率微调所有模型参数。
jeremy110 commented 2 weeks ago

感谢您快速地回复

台是台湾闽南语,客是客家话没错,时数的部分,都照上次数值,全部都500小时。

我会再尝试增加台客比例 那想请问微调所有模型参数,所需要的GPU记忆体? 因为目前我是在2080ti 12G底下做训练的。

yfchenlucky commented 2 weeks ago

单语种时长可以增加至>1kh,实验效果更佳。 32G V100可以满足微调需求,该项目所有实验都是在该配置下完成。期待你的进一步提升! 请多多宣传我们的项目,star&fork,感谢!

jeremy110 commented 2 weeks ago

感谢您的资讯,我会再尝试的

jeremy110 commented 1 week ago

作者您好,照您的建议我有训练出来了,我台语跟客语都增加到1000h以上,然后我解冻5~10层的ASR encoder,以下是这次的confusion matrix

image

非常感谢帮忙,另外想再请问,假设我随便拿个日语或西班牙語的音档辨识,模型一定只能回中英台客其中一个,有没有什么办法,回复unk也就是不在你训练的语种当中?

yfchenlucky commented 6 days ago

因为最后是通过分类器进行四选一,所以如果你想输出unk可以在softmax之前的输出进行阈值筛选,如果四个语种输出概率都降低那么判断成unk。 另外您可以将仓库中新增代码重构并pull request吗?贡献出你的一份力,共建社区繁荣!感谢

jeremy110 commented 6 days ago

感谢您的回覆,这部分我可能再试一下。

我的code是重新用pytorch lightning框架写过,可能差有点多,也可能有问题,不知道能否推到我的git(我可能需要整理一下),再请你帮我看是否有错?

yfchenlucky commented 6 days ago

这样啊?那可能有些麻烦,没事儿如果您有时间的话可以在我们仓库上直接修改提交。

jeremy110 commented 6 days ago

好的,没问题,我有将para的部分从funasr抽出来,并且将model参数只留下encoder的部分,程式简化方面应该会有帮助,这部分如果需要后续一并提供,感谢。 我先去解决我训练的问题,还有些小bug。