yeyupiaoling / PPASR

基于PaddlePaddle实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。支持当前最流行的DeepSpeech2、Conformer、Squeezeformer模型
Apache License 2.0
804 stars 128 forks source link

IndexError: list index out of range #73

Closed ydh11654686 closed 2 years ago

ydh11654686 commented 2 years ago

run below command: python infer_path.py --wav_path=./dataset/test.wav --use_gpu=False

==================================================================
缺少 paddlespeech-ctcdecoders 库,请安装,如果是Windows系统,只能使用ctc_greedy。
【注意】已自动切换为ctc_greedy解码器。
==================================================================

Traceback (most recent call last):
  File "infer_path.py", line 97, in <module>
    predict_audio()
  File "infer_path.py", line 61, in predict_audio
    score, text = predictor.predict(audio_path=args.wav_path, to_an=args.to_an)
  File "D:\work\arm\PPASR-master\PPASR-master\ppasr\predict.py", line 187, in predict
    score, text = self.decode(output_data=output_data, to_an=to_an)
  File "D:\work\arm\PPASR-master\PPASR-master\ppasr\predict.py", line 131, in decode
    result = greedy_decoder(probs_seq=output_data, vocabulary=self._text_featurizer.vocab_list)
  File "D:\work\arm\PPASR-master\PPASR-master\ppasr\decoders\ctc_greedy_decoder.py", line 27, in greedy_decoder
    text = ''.join([vocabulary[index] for index in index_list])
  File "D:\work\arm\PPASR-master\PPASR-master\ppasr\decoders\ctc_greedy_decoder.py", line 27, in <listcomp>
    text = ''.join([vocabulary[index] for index in index_list])
IndexError: list index out of range
yeyupiaoling commented 2 years ago

你下载的模型文件中,有没有把dataset文件复制到你的项目里面了?

ydh11654686 commented 2 years ago

@yeyupiaoling 是的,把dataset文件复制到code rep里可以运行了,但是我用了一个大约100M的MP3测试,识别出来的非常不准确,不知道什么原因?

python infer_path.py --wav_path=./dataset/test.mp3 --use_gpu=False --is_long_audio=True

-----------  Configuration Arguments -----------
alpha: 2.2
beam_size: 300
beta: 4.3
cutoff_prob: 0.99
cutoff_top_n: 40
decoder: ctc_beam_search
feature_method: linear
is_long_audio: 1
lang_model_path: lm/zh_giga.no_cna_cmn.prune01244.klm
model_dir: models/deepspeech2/infer/
pun_model_dir: models/pun_models/
real_time_demo: False
to_an: False
use_gpu: 0
use_model: deepspeech2
use_pun: False
vocab_path: dataset/vocabulary.txt
wav_path: ./dataset/test.mp3
==================================================================
缺少 paddlespeech-ctcdecoders 库,请安装,如果是Windows系统,只能使用ctc_greedy。
【注意】已自动切换为ctc_greedy解码器。
==================================================================

第0个分割音频, 得分: 32, 识别结果: 一老老的的两还肾能历较漏用夸桶你名
第1个分割音频, 得分: 38, 识别结果: 了二了洞季号龙的能幼来来名
第2个分割音频, 得分: 46, 识别结果: 拉六了上里这张心一名进
第3个分割音频, 得分: 38, 识别结果: 从以和这个路后的利用名女一李名
第4个分割音频, 得分: 36, 识别结果: 论饮虚要性龙名酒令人年名
第5个分割音频, 得分: 33, 识别结果: 实用到老亲名能力老很就饮生名面目这热落做说的来聊了的因人两高要了老困克的所敬了
第6个分割音频, 得分: 38, 识别结果: 系一这老络中的功命一质饼素
第7个分割音频, 得分: 34, 识别结果: 要老的好能能将龙一能一转了马巢龙这报躁了的能
第8个分割音频, 得分: 36, 识别结果: 海来了路录这的的性运名团的很
第9个分割音频, 得分: 37, 识别结果: 十料欧有的一供门能
第10个分割音频, 得分: 24, 识别结果: 中虑了的你烈赢感不我个很马以力引
第11个分割音频, 得分: 33, 识别结果: 这接要两人的冷么头能名来了零能二号努密密马成情乐欧奶们聊王成能马
第12个分割音频, 得分: 34, 识别结果: 发牙龙再后了俄鲁名能能能录你的愿的了话在中的花来胜烈了了人
第13个分割音频, 得分: 36, 识别结果: 落这这着老老牢老牢做龙吗做砸了了小了很高李捞年萌们更路落洞能光了来最没女赢号要马了混龙捞来怎命名敢来
第14个分割音频, 得分: 35, 识别结果: 要老
第15个分割音频, 得分: 35, 识别结果: 造了老领小的了空的航能的松霸的王画中一名
第16个分割音频, 得分: 40, 识别结果: 落个要老了会娱烈两了了乱的录底女了很么来到了
yeyupiaoling commented 2 years ago

两种方法,第一种在Linux使用集束搜索解码策略,具体看文档。 第二种,找你这个数据集分布相同的数据集训练

ydh11654686 commented 2 years ago

@yeyupiaoling thanks, I will have a try