Skip to content

基于PaddlePaddle2实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。

License

Notifications You must be signed in to change notification settings

hecongqing/PPASR

 
 

Repository files navigation

python version GitHub forks GitHub Repo stars GitHub 支持系统

PPASR流式与非流式语音识别项目

本项目将分三个阶段分支,分别是入门级进阶级最终级 分支,当前为最终级,持续维护版本。PPASR中文名称PaddlePaddle中文语音识别(PaddlePaddle Automatic Speech Recognition),是一款基于PaddlePaddle实现的语音识别框架,PPASR致力于简单,实用的语音识别项目。可部署在服务器,Nvidia Jetson设备,未来还计划支持Android等移动设备。别忘了star

欢迎大家扫码入QQ群讨论,或者直接搜索QQ群号1169600237,问题答案为博主Github的IDyeyupiaoling

在线使用

1. 在AI Studio平台训练预测


本项目使用的环境:

  • Anaconda 3
  • Python 3.8
  • PaddlePaddle 2.3.2
  • Windows 10 or Ubuntu 18.04

项目快速了解

  1. 本项目支持流式识别模型deepspeech2deepspeech2_big,非流式模型deepspeech2_no_streamdeepspeech2_big_no_stream
  2. 本项目支持两种解码器,分别是集束搜索解码器ctc_beam_search和贪心解码器ctc_greedy,集束搜索解码器ctc_beam_search准确率更高,但不支持Windows。

更新记录

  • 2022.09.23: 调整数据预处理,此前下载的模型,需要重新下载。
  • 2022.09.18: 支持使用WebSocket调用流式识别。
  • 2022.08.26: 修改使用kaldi实现fbankmfcc预处理方法。
  • 2022.08.22: 增加非流式模型deepspeech2_no_streamdeepspeech2_big_no_stream
  • 2022.08.04: 发布1.0版本,优化实时识别流程。
  • 2022.07.12: 完成GUI界面的录音实时识别。
  • 2022.06.14: 支持deepspeech2_big模型,适合WenetSpeech大数据集训练模型。
  • 2022.01.16: 支持多种预处理方法。
  • 2022.01.15: 支持英文语音识别。
  • 2022.01.13: 支持给识别结果加标点符号。
  • 2021.12.23: 支持pip安装。
  • 2021.11.30: 全面修改为流式语音识别模型。
  • 2021.11.09: 增加制作WenetSpeech数据集脚本和文档。
  • 2021.10.10: 提供三个公开数据集的DeepSpeech2预训练模型下载。
  • 2021.09.30: 在导出模型时,把归一化放在模型用,推理时直接在模型中完成数据归一化,不需要额外对数据归一化再输入到网络模型中。
  • 2021.09.18: 初步完成基本程序。

视频讲解

模型下载

本项目支持流式识别模型deepspeech2deepspeech2_big,非流式模型deepspeech2_no_streamdeepspeech2_big_no_stream

使用模型 数据集 预处理方式 参数大小(M)* 语言 测试集字错率(词错率) 下载地址
deepspeech2_big WenetSpeech (10000小时) fbank 167 中文 0.07392(AIShell的测试集) 点击下载
deepspeech2 aishell (179小时) fbank 35 中文 0.07224 点击下载
deepspeech2_big aishell (179小时) fbank 167 中文 0.04966* 点击下载
deepspeech2_no_stream aishell (179小时) fbank 98 中文 0.07014 点击下载
deepspeech2_big_no_stream aishell (179小时) fbank 473 中文 点击下载
deepspeech2 aishell (179小时) linear 35 中文 0.07825 点击下载
deepspeech2_big aishell (179小时) linear 167 中文 0.08022 点击下载
deepspeech2_no_stream aishell (179小时) linear 98 中文 0.07346 点击下载
deepspeech2_big_no_stream aishell (179小时) linear 473 中文 点击下载
deepspeech2 Librispeech (960小时) fbank 35 英文 0.16048 点击下载
deepspeech2_big Librispeech (960小时) fbank 167 英文 0.12366 点击下载
deepspeech2_no_stream Librispeech (960小时) fbank 98 英文 0.09937 点击下载
deepspeech2_big_no_stream Librispeech (960小时) fbank 473 英文 点击下载

说明:

  1. 这里字错率是使用eval.py程序并使用集束搜索解码ctc_beam_search方法计算得到的。
  2. 中文解码参数为:alpha=2.2,beta=4.3,beam_size=300,cutoff_prob=0.99,cutoff_top_n=40
  3. 英文解码参数为:alpha=1.9,beta=0.3,beam_size=500,cutoff_prob=1.0,cutoff_top_n=40
  4. 除了aishell数据集按照数据集本身划分的训练数据和测试数据,其他的都是按照项目设置的固定比例划分训练数据和测试数据。
  5. 下载的压缩文件已经包含了mean_std.npzvocabulary.txt,需要把解压得到的全部文件复制到项目根目录下。
  6. 模型名称包含no_stream为非流式模型,不能用于流式识别。
  7. 带有*的使用了WenetSpeech作为预训练模型。
  8. 由于算力不足,大部分的模型都没有训练足够轮数,有算力的同学,欢迎提供模型。
  9. 由于音频的长度不一,所以参数大小也有所变化,以上参数大小为同一音频长度下的结果,仅供对比使用。

有问题欢迎提 issue 交流

文档教程

快速预测

  • 下载作者提供的模型,或者训练模型并导出模型,使用infer_path.py预测音频,通过参数--wav_path指定需要预测的音频路径,完成语音识别,详情请查看模型部署
python infer_path.py --wav_path=./dataset/test.wav

输出结果:

-----------  Configuration Arguments -----------
alpha: 1.2
beam_size: 10
beta: 0.35
cutoff_prob: 1.0
cutoff_top_n: 40
decoding_method: ctc_greedy
enable_mkldnn: False
is_long_audio: False
lang_model_path: ./lm/zh_giga.no_cna_cmn.prune01244.klm
mean_std_path: ./dataset/mean_std.npz
model_dir: ./models/infer/
to_an: True
use_gpu: True
use_tensorrt: False
vocab_path: ./dataset/zh_vocab.txt
wav_path: ./dataset/test.wav
------------------------------------------------
消耗时间:132, 识别结果: 近几年不但我用书给女儿儿压岁也劝说亲朋不要给女儿压岁钱而改送压岁书, 得分: 94
  • 长语音预测
python infer_path.py --wav_path=./dataset/test_vad.wav --is_long_audio=True
  • Web部署

录音测试页面

  • GUI界面部署

GUI界面

相关项目

特别感谢

参考资料

About

基于PaddlePaddle2实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.6%
  • JavaScript 2.4%
  • HTML 1.5%
  • CSS 0.5%