wenet-e2e / wenet

Production First and Production Ready End-to-End Speech Recognition Toolkit
https://wenet-e2e.github.io/wenet/
Apache License 2.0
4.07k stars 1.06k forks source link

项目建议 #2612

Closed ChengLigen closed 1 week ago

ChengLigen commented 4 weeks ago

最近想使用wenet架构进行小语种的训练。 看了一下训练代码,数据处理部分、训练部分的代码,是我这辈子见过最垃圾的代码,冗余、复杂。 还有大量代码是直接扒的torch官方的代码,直接放进wenet里面。 原因是什么?恶心用户? 看到wenet更新频率是很高的,也知道开发者是真正想把wenet做起来的。 但是目前的做法,简直就是闭门造车。 不支持huggingface,modelscope支持的也不多。 开源有什么用呢,劝退了绝大部分开发者吧。 感觉像是开源了,又没开源。 这种策略是非常错误的。 拥抱开源,才有未来。

Slyne commented 4 weeks ago

站在一个普通用户的角度,讲真,我认为wenet已经是最简单的入门ASR的项目了。ESPNET, NeMo, Kaldi, 这些开源项目读起来更加费力。这些项目有一个通病,注释不够,可能是对没有speech/audio相关经验的开发者来说很费力,因为很多东西都有点历史遗留,比如数据处理这里: .scp文件, cmvn, segments, ark文件等,可能对于一个从Computer Vision转过来的人看这些就很着急。

关于其它库的支持,这个应该还是人力问题(猜测)。有空可以帮忙写个design proposal,别站着吐槽呀!

最后, wenet基本是纯用爱发电了,不同于上面列举的几个开源项目都是有研究机构和企业在背后支持的, wenet可能压根没几个人是full time扑在这个上面的。你可以看看核心的几个开发者基本都是researcher,他们应该都有自己的研究项目和公司项目要做吧。训练模型都是要GPU和数据资源的,它也不赚钱,纯靠开源贡献。倒是可以想想有没有什么可持续发展的策略。

zhr1201 commented 4 weeks ago

wenet在production方面还是有比较大的优势的,尤其是端侧的部署,以及对于LM的支持, 可以快速的做domain adaptation并且deploy流式去云端或者端上

huggingface:更是一个model hub而不是一个ASR toolkit,没有成熟decoding LM的支持,用了pyctcdecode,代码异常丑陋,但是但凡知道ngram在decoding里的威力的,懂得都懂。以前看的时候没有很好的inference支持,尤其是流式,大概率要写自己的inference pipeline。deploy到端上更是头大 ESPNET: 很好的研究框架,比huggingface专业很多,speech功能也齐全很多,但是以前也是没有deployment支持,不知道现在如何 NEMO: 你可以看看riva,nemo的model都是通过这个去部署,是一个 commercial software for deployment,而且超过一定量要收费,同样有很成熟的LM 也是TLG,有boosting word支持, 能做流式inference。但是收费!

robin1001 commented 3 weeks ago

深度学习的发展非常的快,好的项目、工程确实应该与时俱进,频繁的重写。

从历史的角度来讲,在 wenet 诞生的那个时候,还没有 huggingface、modelscope 这些东西,pytorch 官方代码中也还没有 transformer 的结构,没有 pytorch lighting,或者说比较原始,不支持工业级的产品级的应用。从历史的角度来看,比较清晰。从现在的角度来看,有的部分确实很费解。

所以我经常有的一个疑问也是,到底是推倒重来,还是继续在屎山上面堆屎。

最近自己写了另一个极简的语音识别项目玩,有兴趣可以关注一下。https://github.com/wenet-e2e/west/

Cc @xingchensong @pengzhendong @Mddct @whiteshirt0429

zw76859420 commented 3 weeks ago

最近想使用wenet架构进行小语种的训练。 看了一下训练代码,数据处理部分、训练部分的代码,是我这辈子见过最垃圾的代码,冗余、复杂。 还有大量代码是直接扒的torch官方的代码,直接放进wenet里面。 原因是什么?恶心用户? 看到wenet更新频率是很高的,也知道开发者是真正想把wenet做起来的。 但是目前的做法,简直就是闭门造车。 不支持huggingface,modelscope支持的也不多。 开源有什么用呢,劝退了绝大部分开发者吧。 感觉像是开源了,又没开源。 这种策略是非常错误的。 拥抱开源,才有未来。

小语种训练没有必要用wenet,建议你用kaldi中语种识别recipes。

zw76859420 commented 3 weeks ago

所以我经常有的一个疑问也是,到底是推倒重来,还是继续在屎山上面堆屎。

1)推倒重来代价高,对于开源项目收益低,试想 kaldi->k2、fairseq->fairseq2 的综合收益; 2)wenet可以模仿espnet的方式,试想 egs-egs2、espnet->espnet2,既拥抱变化又沉淀自己; if kaldi当初能模仿espnet的方式接入端到端模型,现在的语音框架可能会少很多。

pengzhendong commented 3 weeks ago

if kaldi当初能模仿espnet的方式接入端到端模型,现在的语音框架可能会少很多。

kaldi 当初其实是尝试过在原来的基础上改的:https://github.com/kaldi-asr/kaldi/tree/pybind11