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
6.46k stars 688 forks source link

model.generate传入文件路径和传入文件bytes返回完全不同 #1782

Closed FlyLikeButterfly closed 4 months ago

FlyLikeButterfly commented 4 months ago

with open('x.wav', 'rb') as f: d = f.read() print(model.generate(d)) print(model.generate('x.wav'))

打印结果: ckpt: models/modelscope/hub/iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch\model.pt ckpt: models/modelscope/hub/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch\model.pt ckpt: models/modelscope/hub/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch\model.pt [{'key': 'rand_key_2yW4Acq9GFz6Y', 'text': '啊,不是我在江在我在北边。', 'timestamp': [[70, 310], [430, 550], [550, 610], [610, 690], [690, 770], [770, 850], [850, 930], [930, 990], [990, 1070], [1070, 1130], [1130, 1305]]}] [{'key': 'rand_key_NO6n9JEC3HqdZ', 'text': '图书馆在教学楼的北边。', 'timestamp': [[910, 1110], [1110, 1230], [1230, 1450], [1450, 1630], [1630, 1730], [1730, 1850], [1850, 2030], [2030, 2110], [2110, 2250], [2250, 2545]]}]

直接使用'x.wav'参数是正确的,读取为bytes就完全错误,不知道哪里不对;

MyWestCity commented 4 months ago

看一下你的文件是不是16K采样率的,如果不是16K的wav文件他会根据文件头信息进行重采样,但是你发音频字节数据他就不知道采样率了

FlyLikeButterfly commented 4 months ago

看一下你的文件是不是16K采样率的,如果不是16K的wav文件他会根据文件头信息进行重采样,但是你发音频字节数据他就不知道采样率了

是8k的,也就是说换成8k模型,或者设置采样率参数都可以解决吧?

MyWestCity commented 4 months ago

是的

FlyLikeButterfly commented 4 months ago

是的

重新采样率参数是在AutoModel()里设置vad_kwargs={'fs': 8000, 'sample_rate': 8000}吗?还是要在generate()方法里设置fs=8000?好像都不太行;

Antonio-hi commented 3 months ago

大佬你好,请问最终是怎么解决的?

FlyLikeButterfly commented 3 months ago

大佬你好,请问最终是怎么解决的?

方法里使用fs参数,model.generate(input=data, fs=8000),fs参数可以从16000按100递减多试几个,我那个8k采样率的pcm用fs=12000才合适,可能是音频文件有点问题吧;