yeyupiaoling / PaddlePaddle-DeepSpeech

基于PaddlePaddle实现的语音识别,中文语音识别。项目完善,识别效果好。支持Windows,Linux下训练和预测,支持Nvidia Jetson开发板预测。
https://yeyupiaoling.blog.csdn.net/article/details/102904306
Apache License 2.0
650 stars 143 forks source link

请教大佬如何在您的预训练模型基础上增强训练自己的模型 #99

Closed missslw closed 2 years ago

missslw commented 2 years ago

我想在您的free_st_chinese_mandarin_corpus(109小时)模型基础上加自己的语音训练新模型不知如何操作 train.py里这2个参数不知如何配置 add_arg('resume_model', str, './models/step_final/50.pdparams', "恢复训练,当为None则不使用预训练模型") add_arg('pretrained_model', str, './models/step_final', "使用预训练模型的路径,当为None是不使用预训练模型") 求大佬赐教

missslw commented 2 years ago

手册里没写这个内容,我一直未能操作成功,求大佬给个完整的步骤, 因为free_st_chinese_mandarin_corpus(109小时)模型预测我的数据效果最好,但是精确度还不够,我想在这个基础上再进一步训练出1个新模型,不知道如何操作

yeyupiaoling commented 2 years ago

我修改文档了:https://github.com/yeyupiaoling/PaddlePaddle-DeepSpeech/blob/master/docs/train.md#%E5%BE%AE%E8%B0%83%E6%A8%A1%E5%9E%8B

missslw commented 2 years ago

这个问题已经ok了,但是训练时间太长了,实在等不了这么长时间 1633841209(1) 才30条语音,是不是我那里操作的不对 我是用download_data下载了您的原始数据,让后在后面加上我的30条数据 然后用create_data.py生成manifest.train和manifest.test,接着替换成您原有mean_std.npz和zh_vocab.txt 最后开始train.py,训练时间eta竟然要400多天,实在等不了,大佬帮看看哪里错了

missslw commented 2 years ago

另外一个问题就是set CPU_NUM=8,train.py会报alloc内存溢出,只能设小一点才能过,因为我gpu版没配通,暂时只能用cpu版,大佬看看这个有什么解决办法

yeyupiaoling commented 2 years ago

这不是错误,你用CPU训练速度慢的很正常

missslw commented 2 years ago

那请问大佬,我用download_data下载了您的原始数据,让后在后面加上我的30条数据 然后用create_data.py生成manifest.train和manifest.test,接着替换成您原有mean_std.npz和zh_vocab.txt 最后开始train.py,这一系列操作对吗,有没有问题 训练数据量:102425,eta:464 days 这2个数据都是对的吗?如果换gpu能快多少呢?

yeyupiaoling commented 2 years ago

里面有三个数据集下载的程序,你下载是哪一个?

missslw commented 2 years ago

free_st_chinese_mandarin_corpus(109小时)是这个

yeyupiaoling commented 2 years ago

这个的话,如果是2080ti,这个应该是要一天。

missslw commented 2 years ago

我的显卡是quadro k4000,配了半天没配通gpu版,运行程序总是有报错

yeyupiaoling commented 2 years ago

用CPU预测还行,训练必须要用GPU,因为速度那个慢

yeyupiaoling commented 2 years ago

我刚才看了你这个显卡的显存才4G太小了,一般需要11G以上

missslw commented 2 years ago

CUDA_VISIBLE_DEVICES配多少个合适?

yeyupiaoling commented 2 years ago

看你有多少个GPU,如果没有GPU的话,你使用我提供的模型时预测就好了,训练就不用想

missslw commented 2 years ago

我按照您的说法操作了,但是用新训练的包做预测没任何提高,请大佬帮我看看哪里有错?我的操作如下: 1、我把我的wav加在了dataset\audio目录 2、在free_st_chinese_mandarin_corpus.txt文件末尾增加相应的数据 3、用create_data.py创建manifest.test、manifest.train、mean_std.npz、zh_vocab.txt 4、用您free_st_chinese_mandarin_corpus原有的mean_std.npz、zh_vocab.txt替换刚生成的mean_std.npz、zh_vocab.txt 5、将train.py中的'num_epoch'改为60,开始训练 6、用export_model.py将训练生成的60.pdparams导出为预测模型 7、用infer_server.py开始转语音为文字

yeyupiaoling commented 2 years ago

你加入的数据集要确保是放在了manifest.train,而不是manifest.test,你打开看一下

missslw commented 2 years ago

是放在了manifest.train

missslw commented 2 years ago

export_model.py的时候需要把mean_std.npz、zh_vocab.txt替换成新的吗?

yeyupiaoling commented 2 years ago

不用,你用那个训练,就是用那个。你的数据是多少?

missslw commented 2 years ago

120条wav,我用训练的wav去测试也没任何提高

yeyupiaoling commented 2 years ago

你的音频长度是多少?你换成使用aishell和对应的模型试试

missslw commented 2 years ago

用aishell预测效果更差,所以就选择了free_st_chinese_mandarin_corpus来加强训练,训练之后没有任何变化,我用来测试的wav每段大约4到6分钟共3个文件,训练的时候我把他们拆成了120个wav文件,110个在10秒以内,10个在10到20秒之间

yeyupiaoling commented 2 years ago

但是aishell数据量更多,可能使用微调效果更好也不一定。 或许你重新训练试试。 你的数据还是少了点

missslw commented 2 years ago

我担心时间太长,这次就用了4天的时间

yeyupiaoling commented 2 years ago

没办法,语音识别就是这样,耗资源和数据集

missslw commented 2 years ago

大佬,我把train.py中test_off关闭了,不影响训练精度吧!我想缩短训练时间 add_arg('test_off', bool, True, "是否关闭测试")

yeyupiaoling commented 2 years ago

不影响