yeyupiaoling / PPASR

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

使用1300数据集的那个模型出现乱码了,请问下可能是什么样的原因呢 #13

Closed skyriver1 closed 2 years ago

skyriver1 commented 2 years ago

----------- Configuration Arguments ----------- alpha: 1.2 beam_size: 10 beta: 0.35 cutoff_prob: 1.0 cutoff_top_n: 40 decoder: ctc_beam_search is_long_audio: False lang_model_path: D:\dnf\zh_giga.no_cna_cmn.prune01244.klm model_dir: D:\dnf\PPASR\infer\deepspeech2\infer real_time_demo: False to_an: True use_gpu: True use_model: deepspeech2 vocab_path: D:\dnf\PPASR\dataset\zh_vocab.txt wav_path: C:\Users\qiegewala\Music\A2_2.wav

[4234, 5841, 1048, 3128, 4782, 2775, 4081, 3728, 2775, 5412, 5065, 3134, 1792, 3134, 2951, 1566, 1458, 1566, 1792, 1566, 5167, 1930, 3465, 5412, 1566, 4012, 2951, 5168, 1566, 2951, 5250, 48, 2290, 48, 2951, 5168, 1566, 5168, 5250, 2951, 2290, 2951, 5168, 769, 5168, 1458, 2951, 5177, 4497, 1566, 5658, 2760, 337, 3128, 2760] 消耗时间:1741ms, 识别结果: 冼悕仍肪霈烯葳酌烯袢嚟婶曰婶怂旗朴旗曰旗埵柯谌袢旗呻怂阊旗怂踟电盼电怂阊旗阊踟怂盼怂阊引阊朴怂徂馊旗跱趴星肪趴, 得分: 0

windows10,paddlepaddle-gpu==2.1.3 cudatoolkit=10.2,PaddlePaddle 2.2.0

yeyupiaoling commented 2 years ago

你说的是1600+1300那个吗? 你有没有替换了mean_std.npz和vocabulary.txt这两个文件

skyriver1 commented 2 years ago

都替换了,zh_vocab.txt和mean_std.npz,另外,我把paddle\fluid\dygraph\layers.py 的 def _check_match(key, param) 下加了一行代码, import torch ww = torch.Tensor(state_dict) state = ww.get(key, None) 我看索引号在字典中的字和结果出现的生僻字是可以一一对应的,有没有可能是我该这行代码的原因,因为当时这行一直报错'Tensor' object has no attribute 'get',我的pip list 为 absl-py 1.0.0 aiocontextvars 0.2.2 appdirs 1.4.4 argcomplete 1.12.3 asn1crypto 1.4.0 astor 0.8.1 astunparse 1.6.3 atomicwrites 1.4.0 attrs 21.2.0 audioread 2.1.9 Babel 2.9.1 backports.entry-points-selectable 1.1.1 bce-python-sdk 0.8.64 blessings 1.7 boto3 1.20.17 botocore 1.23.17 bottle 0.12.19 Bottleneck 1.3.2 cached-property 1.5.2 cachetools 4.2.4 certifi 2021.10.8 cffi 1.15.0 cfgv 3.3.1 chardet 4.0.0 charset-normalizer 2.0.8 click 8.0.3 cn2an 0.5.14 colorama 0.4.4 colorlog 6.6.0 common 0.1.2 ConfigArgParse 1.5.3 contextvars 2.4 coverage 6.2 cryptography 3.3.2 cycler 0.11.0 Cython 0.29.24 data 0.4 dataclasses 0.8 decorator 5.1.0 dill 0.3.4 Distance 0.1.3 distlib 0.3.3 distro 1.6.0 dual 0.0.8 dynamo3 0.4.10 easydict 1.9 editdistance 0.6.0 filelock 3.4.0 flake8 4.0.1 Flask 2.0.2 Flask-Babel 2.0.0 flatbuffers 2.0 fluid 0.1.7 flywheel 0.5.4 funcsigs 1.0.2 future 0.18.2 g2p-en 2.1.0 g2pM 0.1.2.5 gast 0.3.3 gitdb 4.0.9 GitPython 3.1.24 google-auth 1.35.0 google-auth-oauthlib 0.4.6 google-pasta 0.2.0 gpustat 0.6.0 GPUtil 1.4.0 grpcio 1.42.0 h5py 3.1.0 hanziconv 0.3.2 identify 2.4.0 idna 3.3 image-classifiers 1.0.0 immutables 0.16 importlib-metadata 4.8.2 importlib-resources 5.2.3 inflect 5.3.0 iniconfig 1.1.1 itsdangerous 2.0.1 jieba 0.42.1 Jinja2 3.0.3 jmespath 0.10.0 joblib 1.1.0 jsonlines 2.0.0 kaldiio 2.17.2 Keras 2.3.1 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.2 kiwisolver 1.3.1 LAC 2.1.2 libclang 12.0.0 librosa 0.8.0 llvmlite 0.37.0 loguru 0.5.3 Markdown 3.3.6 MarkupSafe 2.0.1 matplotlib 3.3.4 mccabe 0.6.1 mkl-fft 1.2.0 mkl-random 1.2.0 mkl-service 2.4.0 mock 4.0.3 more-itertools 8.12.0 multiprocess 0.70.12.2 nara-wpe 0.0.7 nltk 3.6.5 nodeenv 1.6.0 numba 0.54.1 numpy 1.19.2 nvidia-ml-py3 7.352.0 oauthlib 3.1.1 olefile 0.46 onnx 1.9.0 opencv-python 4.5.4.60 opt-einsum 3.3.0 packaging 21.3 paddle 1.0.2 paddle2onnx 0.8.2 paddlefsl 1.0.0 paddlehub 2.1.1 paddlenlp 2.1.1 paddlepaddle 2.1.3 paddlepaddle-gpu 2.1.3.post101 paddlespeech-feat 0.0.1a0 pandas 1.1.5 pathos 0.2.8 peewee 3.14.8 phkit 0.2.10 Pillow 8.2.0 pip 21.1.1 platformdirs 2.4.0 pluggy 1.0.0 pooch 1.5.2 portalocker 2.3.2 pox 0.3.0 ppasr 0.2.0 ppft 1.6.6.4 pre-commit 2.16.0 protobuf 3.19.1 prox 0.0.17 psutil 5.8.0 py 1.11.0 pyasn1 0.4.8 pyasn1-modules 0.2.8 pybind11 2.8.1 pycodestyle 2.8.0 pycparser 2.21 pycryptodome 3.11.0 pydantic 1.8.2 pydub 0.25.1 pyflakes 2.4.0 pynvml 11.0.0 pyOpenSSL 20.0.1 pyparsing 3.0.6 pypi-kenlm 0.1.20210121 pypinyin 0.44.0 PySocks 1.7.1 pytest 6.2.5 pytest-runner 5.3.1 python-dateutil 2.8.2 python-geoip-python3 1.3 python-Levenshtein 0.12.2 python-speech-features 0.6 pytz 2021.3 pywin32 302 pyworld 0.3.0 PyYAML 6.0 pyzmq 22.3.0 rarfile 4.0 regex 2021.11.10 requests 2.26.0 requests-oauthlib 1.3.0 resampy 0.2.2 rsa 4.8 s3transfer 0.5.0 sacrebleu 2.0.0 scikit-learn 1.0.1 scipy 1.6.1 sentencepiece 0.1.96 seqeval 1.2.2 setuptools 59.4.0 shellcheck-py 0.8.0.1 six 1.16.0 sklearn 0.0 smmap 5.0.0 snakeviz 2.1.1 some-package 0.1 SoundFile 0.10.1 sox 1.4.1 tabulate 0.8.9 TBB 0.2 tensorboard 2.1.1 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.0 tensorboardX 2.4.1 tensorflow 2.1.0 tensorflow-estimator 2.1.0 tensorflow-gpu 2.1.0 tensorflow-gpu-estimator 2.1.0 tensorflow-io-gcs-filesystem 0.22.0 termcolor 1.1.0 TextGrid 1.5 threadpoolctl 3.0.0 tight 0.1.0 timer 0.2.2 toml 0.10.2 torch 1.10.0 torchvision 0.11.1 tornado 6.1 tqdm 4.59.0 typeguard 2.13.2 typing-extensions 4.0.1 Unidecode 1.3.2 urllib3 1.26.7 utility 1.0 utils 1.0.1 virtualenv 20.10.0 visualdl 2.1.1 web.py 0.40.dev1 webrtcvad 2.0.10 Werkzeug 2.0.2 wheel 0.37.0 win-inet-pton 1.1.0 win32-setctime 1.0.4 wrapt 1.13.3 xmltodict 0.12.0 yacs 0.1.8 yq 2.12.2 zhconv 1.4.2 zipp 3.6.0

skyriver1 commented 2 years ago

我在使用您的1300小时的参数模型进行导出时,在paddle.load函数时会有invalid load key, '\x00'的错误,看了下出错语句在io.py脚本的load_result = pickle.load(f, encoding='latin1')这行代码,(windows系统),在使用大数据集那个模型时则没有这个问题,测试结果也正常,请问这两份数据您是在不同系统训练的吗,我在使用百度开源的baidu_cn1.2k_model_fluid模型时也有这个问题

state = state_dict.get(key, None)

AttributeError: 'Tensor' object has no attribute 'get'

state_dict = paddle.load(resume_model_path),无法导入,默认导出为tensor类型,无法进行下一步getvalues计算

yeyupiaoling commented 2 years ago

我这个没有1300小时的哦,你是不是下载错了,下载下面:

https://github.com/yeyupiaoling/PPASR#%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD

skyriver1 commented 2 years ago

我就是下的这个,导出和测试是没问题的 1639013001(1)

yeyupiaoling commented 2 years ago

那到底有没有问题呢?

skyriver1 commented 2 years ago

https://download.csdn.net/download/qq_33200967/16200230?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~default-1.dl_default&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~default-1.dl_default&dest=https%3A%2F%2Fdownload.csdn.net%2Fdownload%2Fqq_33200967%2F16200230&spm=1003.2020.3001.6616.1 这个是我导出时无法load的模型,和百度的开源的训练模型https://deepspeech.bj.bcebos.com/demo_models/baidu_cn1.2k_model_fluid.tar.gz 报的同样的错误

TypeError: Type of state_dict should be dict, but received <class 'paddle.fluid.core_avx.LoDTensor'>.

/paddle/framework/io.py 1639039254(1) 这个问题很久没想明白,小白见谅

yeyupiaoling commented 2 years ago

你拿别的项目的模型在这里使用肯定不行啊。

skyriver1 commented 2 years ago

https://github.com/yeyupiaoling/DeepSpeech.git 这个也试了,报的同样的错误

yeyupiaoling commented 2 years ago

额,你用其他项目的模型在我这里使用,那肯定不行啊。你用牛的头装在马上,你说行不行?

skyriver1 commented 2 years ago

可能我没有表述好, 1639044132(1) 这个是我使用出错的模型,用来导出的项目是图片下面的链接,然后我尝试用ppart项目导出这个模型,报错,用ppart和图片链接项目导出百度那个模型,也是报的同样的错误,我看了paddle版本都是paddlepaddle-gpu==2.1.3,出错的都是paddle.load这一步,而且是同一行代码,这两个项目导出你的其他的发布的模型是没问题的,于是我猜想可能和系统和编码有关系,想想了解下,于是来问您下在训练图片里模型时和ppart这个项目的模型时是否使用了不同的系统

yeyupiaoling commented 2 years ago

你这样说我更加糊涂了,你这样你重新下载模型,然后解压,复制全部都文件到你项目的根目录,全部要复制哦, https://download.csdn.net/download/qq_33200967/29121153

yeyupiaoling commented 2 years ago

正常了吗?@skyriver1

skyriver1 commented 2 years ago

可以了,能训练和导出了

skyriver1 commented 2 years ago

还想请问下,如果我想分批训练多个数据集,mean_std这个文件要怎么搞呢

yeyupiaoling commented 2 years ago

你是想多个数据合在一起训练,还是分开训练

skyriver1 commented 2 years ago

分开的,比如把一个数据集10g分块的分开训练,第一个10g的数据块的训练轮数完了训练第二个10g的数据块,怕机器带不动,每个10g的数据块导出一个mean_std.npz,最后怎么把这几个npz合并起来

yeyupiaoling commented 2 years ago

可以用同一个mean_std.npz,你可以用全部的数据生成mean_std.npz和vocabulary.txt,这样就可以用在全部的数据里面了

skyriver1 commented 2 years ago

好的,谢谢

skyriver1 commented 2 years ago

考虑这样一种情况,如果我想在别人的模型基础上再进行训练,要怎么生成最后的npz文件呢

yeyupiaoling commented 2 years ago

用别人的npz和voc

skyriver1 commented 2 years ago

谢谢作者答疑