Walleclipse / Deep_Speaker-speaker_recognition_system

Keras implementation of ‘’Deep Speaker: an End-to-End Neural Speaker Embedding System‘’ (speaker recognition)
245 stars 81 forks source link

关于验证两段语音是否为同一个人 #65

Closed applegirls250 closed 3 years ago

applegirls250 commented 4 years ago

您好: 不好意思打扰您了,感谢您的分享,我在做毕业设计,这段时间一直在研究您的代码,有一些问题想要请教您: 我自己采集了10个人的音频,每个人100段,总共1000条语音。我通过pretraining.py跑了20000步之后得到的模型实现了说话人的识别(即给出这10个人中任意一个人的一段语音,输出音频中说话人的姓名)。之后在train.py中加载了预训练的模型,运行到了50000步,得到model_50000_0.08767.h5模型,然后利用这个模型想验证两段语音是否为一个人,但出错率很高。所以我想问一下,是不是因为我在train阶段没有分测试集,代码中DATASET_DIR和TEST_DIR的路径是一样的,都是那1000条语音的路径。我是不是应该这样做: 从这10个人中挑出3个人的语音放在测试集文件夹里,然后再运行train代码加载预训练模型进行训练(因为我看到预训练代码中有划分训练集和测试集的操作,所以前期不必再划分) 或者不进行预训练,从这10个人中挑出3个人的语音作为测试集直接运行train.py也是可以的吗? 期待您的回复,非常感谢!

Walleclipse commented 4 years ago
  1. 我只是为了简单的演示,所以代码中DATASET_DIR和TEST_DIR的路径是一样的。实际用的时候训练用的数据和测试用的肯定不能一样。你需要区分训练数据和测试集,比如你说的从这10个人中挑出3个人的语音放在测试集文件夹里。
  2. 可以不进行预训练,直接运行train.py 但注意,需要在constants.py 里 设置 PRE_TRAIN=False 。
  3. 我觉得性能比较差的一个原因是,数据集太少了。我这个模型上在 251 个说话者 总共 28539 个语音下训练的, 随后在40个说话者,2620个语音下进行测试。如果能收集更多数据,性能会上升。
applegirls250 commented 4 years ago

好的,我明白啦,嘿嘿~非常感谢您的耐心解答! 祝您生活愉快,一切顺利!

applegirls250 commented 4 years ago
  1. 我只是为了简单的演示,所以代码中DataSet_DIR和test_DIR的路径是一样的。实际用的时候训练用的数据和测试用的肯定不能一样.你需要区分训练数据和测试集,比如你说的从这10个人中挑出3个人的语音放在测试集文件夹里.
  2. 可以不进行预训练,直接运行tra.py但注意,需要在constants.py里设置预处理=false。
  3. 我觉得性能比较差的一个原因是,数据集太少了.我这个模型上在251个说话者总共28539个语音下训练的,随后在40个说话者,2620个语音下进行测试.如果能收集更多数据,性能会上升.

您好: 我按照之前说的,从我采集的数据集这10个人中挑出3个人的语音作为测试集(训练集700条语音,测试集300条语音),然后直接进行train训练,出现了下面这种情况,图片是得到的train_acc_eer文件截图。 从170step左右以后,无论是训练集还是测试集上的acc都一直等于0.019999999999999993,并且eer这些数值都不变,loss在很慢很慢的下降,一直到3000step仍然是这样。请问这是由于数据集太小造成过拟合了吗? 在预训练阶段没有出现这种问题,是因为分类任务比较简单,验证任务复杂吗? 希望能得到您的解答! 捕获

捕获2

JSun20220909 commented 4 years ago

请问现在问题解决了吗

------------------ 原始邮件 ------------------ 发件人: "applegirls250"<notifications@github.com>; 发送时间: 2020年5月2日(星期六) 中午1:41 收件人: "Walleclipse/Deep_Speaker-speaker_recognition_system"<Deep_Speaker-speaker_recognition_system@noreply.github.com>; 抄送: "Subscribed"<subscribed@noreply.github.com>; 主题: Re: [Walleclipse/Deep_Speaker-speaker_recognition_system] 关于验证两段语音是否为同一个人 (#65)

我只是为了简单的演示,所以代码中DataSet_DIR和test_DIR的路径是一样的。实际用的时候训练用的数据和测试用的肯定不能一样.你需要区分训练数据和测试集,比如你说的从这10个人中挑出3个人的语音放在测试集文件夹里.

可以不进行预训练,直接运行tra.py但注意,需要在constants.py里设置预处理=false。

我觉得性能比较差的一个原因是,数据集太少了.我这个模型上在251个说话者总共28539个语音下训练的,随后在40个说话者,2620个语音下进行测试.如果能收集更多数据,性能会上升.

您好: 我按照之前说的,从我采集的数据集这10个人中挑出3个人的语音作为测试集(训练集700条语音,测试集300条语音),然后直接进行train训练,出现了下面这种情况,图片是得到的train_acc_eer文件截图。 从170step左右以后,无论是训练集还是测试集上的acc都一直等于0.019999999999999993,并且eer这些数值都不变,loss在很慢很慢的下降,一直到3000step仍然是这样。请问这是由于数据集太小造成过拟合了吗? 在预训练阶段没有出现这种问题,是因为分类任务比较简单,验证任务复杂吗? 希望能得到您的解答!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

applegirls250 commented 4 years ago

请问现在问题解决了吗 ------------------ 原始邮件 ------------------ 发件人: "applegirls250"<notifications@github.com>; 发送时间: 2020年5月2日(星期六) 中午1:41 收件人: "Walleclipse/Deep_Speaker-speaker_recognition_system"<Deep_Speaker-speaker_recognition_system@noreply.github.com>; 抄送: "Subscribed"<subscribed@noreply.github.com>; 主题: Re: [Walleclipse/Deep_Speaker-speaker_recognition_system] 关于验证两段语音是否为同一个人 (#65) 我只是为了简单的演示,所以代码中DataSet_DIR和test_DIR的路径是一样的。实际用的时候训练用的数据和测试用的肯定不能一样.你需要区分训练数据和测试集,比如你说的从这10个人中挑出3个人的语音放在测试集文件夹里. 可以不进行预训练,直接运行tra.py但注意,需要在constants.py里设置预处理=false。 我觉得性能比较差的一个原因是,数据集太少了.我这个模型上在251个说话者总共28539个语音下训练的,随后在40个说话者,2620个语音下进行测试.如果能收集更多数据,性能会上升. 您好: 我按照之前说的,从我采集的数据集这10个人中挑出3个人的语音作为测试集(训练集700条语音,测试集300条语音),然后直接进行train训练,出现了下面这种情况,图片是得到的train_acc_eer文件截图。 从170step左右以后,无论是训练集还是测试集上的acc都一直等于0.019999999999999993,并且eer这些数值都不变,loss在很慢很慢的下降,一直到3000step仍然是这样。请问这是由于数据集太小造成过拟合了吗? 在预训练阶段没有出现这种问题,是因为分类任务比较简单,验证任务复杂吗? 希望能得到您的解答! — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

在我自己采集的数据集上没有解决这个问题,我下载了完整的train-clean-100和test-clean好像不会出现这种问题,所以应该是之前的数据集太小了吧