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
5.95k stars 644 forks source link

SeacoParaformer复现结果差距 #1352

Closed XuchengOne closed 7 months ago

XuchengOne commented 7 months ago

你好,请问这个SeACo模型和论文发布的是同一个么? 我直接使用v2.0.4 在Aishell1的dev上测试并没有达到论文中声称的效果

R1ckShi commented 7 months ago

论文中的结果不是aishell1-dev,是根据ner的结果挑选热词之后抽取出来的aishell-1 dev和test的子集 具体参考https://github.com/R1ckShi/SeACo-Paraformer库中的数据

XuchengOne commented 7 months ago

论文中的结果不是aishell1-dev,是根据ner的结果挑选热词之后抽取出来的aishell-1 dev和test的子集 具体参考https://github.com/R1ckShi/SeACo-Paraformer库中的数据

你好,我就是用的论文中抽选的dev子集测试,上面没有说清楚,但还是和论文结果有较大差距

R1ckShi commented 7 months ago

论文中的结果不是aishell1-dev,是根据ner的结果挑选热词之后抽取出来的aishell-1 dev和test的子集 具体参考https://github.com/R1ckShi/SeACo-Paraformer库中的数据

你好,我就是用的论文中抽选的dev子集测试,上面没有说清楚,但还是和论文结果有较大差距

你好,我重新测试了这个模型的结果,cer和recall等指标如下

dev cer=1.98% R/P/F1 0.935/0.986/0.960 r1-R/P-F1 0.862/0.985/0.920
test cer=2.24% R/P/F1 0.936/0.982/0.959 r1-R/P-F1 0.874/0.969/0.919

使用的测试方法如下

from funasr import AutoModel

model = AutoModel(model="iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
                  model_revision="v2.0.4",
                  device="cuda:0"
                  # vad_model="damo/speech_fsmn_vad_zh-cn-16k-common-pytorch",
                  # vad_model_revision="v2.0.4",
                  # punc_model="damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch",
                  # punc_model_revision="v2.0.4",
                  # spk_model="damo/speech_campplus_sv_zh-cn_16k-common",
                  # spk_model_revision="v2.0.2",
                  )
# example1
res = model.generate(input="/nfs/shixian.shi/data/seaco/dev_hw.scp",
                     hotword='/nfs/shixian.shi/workspace/subspace/SeACo-Paraformer/data/dev/hotword.txt',
                     batch_size_s=300,
                     # preset_spk_num=2,
                     # sentence_timestamp=True,  # return sentence level information when spk_model is not given
                    )
print(res)
fout = open("dev.output", 'w')
for resi in res:
    fout.write("{}\t{}\n".format(resi['key'], resi['text']))

这一结果是可以直接复现的,如果需要我可以分享出解码结果 能否分享一下你的测试方法、指标计算、最终结果 以及如何得出 和论文结果有较大差距的

R1ckShi commented 7 months ago

当前可能有两种情况导致结果与上述调用方法不一致: 1)使用modelscope pipeline调用了热词模型,目前热词传入功能有bug导致热词可能不生效 2)使用了vad模型,可能导致结果又细微差距 复现论文中的结果请使用上面的python脚本调用:)

XuchengOne commented 7 months ago

当前可能有两种情况导致结果与上述调用方法不一致: 1)使用modelscope pipeline调用了热词模型,目前热词传入功能有bug导致热词可能不生效 2)使用了vad模型,可能导致结果又细微差距 复现论文中的结果请使用上面的python脚本调用:)

谢谢,已复现,应该是因为用的之前的modelscope.pipelines导致的问题

R1ckShi commented 7 months ago

有其他热词的问题和想法欢迎讨论~