wenet icon indicating copy to clipboard operation
wenet copied to clipboard

Whisper-large-v3训练后的CTC解码结果出现�字符

Open boxpkaka opened this issue 1 year ago • 8 comments

数据: 50小时普通话+50小时粤语(简体)

实验设置: aishell示例中的whisper 基本遵循原设置,包括指定单一语种“zh”

问题: 正常训练40轮后,涉及到CTC的解码模式(ctc_greedy_search, ctc_prefix_beam_search, attention_rescoring)结果容易出现�字符,如下

attention_resocring
lab: 我 去 妈 妈 间 食 咗 饭 冲 个 凉 
rec: 我 去 妈 妈 街 食 左 饭 � 过 两 
ctc_greedy_search
lab: 我 去 妈 妈 间 食 咗 饭 冲 个 凉 
rec: 我 去 妈 妈 街 食 左 饭 � 过 � 
ctc_prefix_beam_search:
lab: 我 去 妈 妈 间 食 咗 饭 冲 个 凉 
rec: 我 去 妈 妈 街 食 左 饭 � 过 � 

而attention解码均正常,如:

lab: 我 去 妈 妈 间 食 咗 饭 冲 个 凉 
rec: 我 去 妈 妈 间 食 咗 饭 冲 过 两 

补充: 之前基于peft用lora微调large-v3模型也出现过这样的问题,全量微调我还没试过。是ctc训练和原模型的行为差异大导致的吗?又或者是将两种语言放在一个语种上训练带来的问题?后者我打算用纯粤语实验验证一下。

torch==1.13.0+cu116

boxpkaka avatar Jan 19 '24 07:01 boxpkaka

正常现象,解决方案是 https://github.com/wenet-e2e/wenet/pull/2247

xingchensong avatar Jan 19 '24 07:01 xingchensong

大佬,为啥CTC会有乱码,是因为whisper按字节建模,然后由于CTC的条件独立性假设,没有学到上下文信息吗?

正常现象,解决方案是 #2247

fclearner avatar Jan 19 '24 09:01 fclearner

whisper词表6w,正常aishell的词表只有4k,相当于ctc [hidden, dict_num] 只有很少一部分权重参与训练了,训练还不充分

xingchensong avatar Jan 19 '24 10:01 xingchensong

谢谢大佬!whisper的多语种训练是近期会支持吗

boxpkaka avatar Jan 19 '24 10:01 boxpkaka

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

xingchensong avatar Jan 19 '24 10:01 xingchensong

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

boxpkaka avatar Jan 19 '24 12:01 boxpkaka

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

dataset里改一下 加个task 和language的id

Mddct avatar Jan 19 '24 12:01 Mddct

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

dataset里改一下 加个task 和language的id

好的,感谢指点!

boxpkaka avatar Jan 19 '24 13:01 boxpkaka

解决方案具体怎么做啊?没看懂,ctc和decoder怎么使用不同的tokenizer

正常现象,解决方案是 #2247

yangsuxia avatar Mar 29 '24 09:03 yangsuxia

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

dataset里改一下 加个task 和language的id

您好,我想请教下,现在wenet的代码里加了task和language的id,但是在训练阶段是不是没有用到这两个id信息,只是在推理的时候用到了?

csf123123 avatar Aug 14 '24 11:08 csf123123

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

dataset里改一下 加个task 和language的id

您好,我想请教下,现在wenet的代码里加了task和language的id,但是在训练阶段是不是没有用到这两个id信息,只是在推理的时候用到了?

训练用到了,用到只是为了匹配whisper原始训练方式

xingchensong avatar Aug 14 '24 12:08 xingchensong

谢谢大佬!whisper的多语种训练是近期会支持吗

邀请你给wenet贡献一下librispeech+aishell的训练recipe,把我留的这个TODO解决了 https://github.com/wenet-e2e/wenet/blob/main/wenet/whisper/whisper.py#L69-L77 ,目前是写死的中文,改成可配置的话,多语种训练就解决了

谢谢!那我自己试一下,让txt带着语种id进add_whisper_tokens或者其他的方法

dataset里改一下 加个task 和language的id

您好,我想请教下,现在wenet的代码里加了task和language的id,但是在训练阶段是不是没有用到这两个id信息,只是在推理的时候用到了?

训练用到了,用到只是为了匹配whisper原始训练方式

好的好的,谢谢,是我的代码版本太老了

csf123123 avatar Aug 15 '24 02:08 csf123123