PPASR
PPASR copied to clipboard
基于PaddlePaddle实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。支持当前最流行的DeepSpeech2、Conformer、Squeezeformer模型
c
本项目将分三个阶段分支,分别是入门级 、进阶级 和最终级 分支,当前为最终级,持续维护版本。PPASR中文名称PaddlePaddle中文语音识别(PaddlePaddle Automatic Speech Recognition),是一款基于PaddlePaddle实现的语音识别框架,PPASR致力于简单,实用的语音识别项目。可部署在服务器,Nvidia Jetson设备,未来还计划支持Android等移动设备。别忘了star
欢迎大家扫码入QQ群讨论,或者直接搜索QQ群号1169600237
,问题答案为博主Github的IDyeyupiaoling
。

在线使用
本项目使用的环境:
- Anaconda 3
- Python 3.7
- PaddlePaddle 2.3.2
- Windows 10 or Ubuntu 18.04
更新记录
- 2022.08.26: 修改使用kaldi实现
fbank
和mfcc
预处理方法。 - 2022.08.22: 增加非流式模型
deepspeech2_no_stream
和deepspeech2_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: 初步完成基本程序。
视频讲解
模型下载
本项目支持流式识别模型deepspeech2
、deepspeech2_big
,非流式模型deepspeech2_no_stream
、deepspeech2_big_no_stream
。
使用模型 | 数据集 | 预处理方式 | 语言 | 测试集字错率(词错率) | 下载地址 |
---|---|---|---|---|---|
deepspeech2_big | WenetSpeech (10000小时) | fbank | 中文 | 0.07392(AIShell的测试集) | 点击下载 |
deepspeech2 | aishell (179小时) | linear | 中文 | 0.07825 | 点击下载 |
deepspeech2_big | aishell (179小时) | linear | 中文 | 0.08022 | 点击下载 |
deepspeech2_no_stream | aishell (179小时) | linear | 中文 | 0.07346 | 点击下载 |
deepspeech2_big_no_stream | aishell (179小时) | linear | 中文 | 点击下载 | |
deepspeech2 | aishell (179小时) | fbank | 中文 | 0.07224 | 点击下载 |
deepspeech2_big | aishell (179小时) | fbank | 中文 | 点击下载 | |
deepspeech2_no_stream | aishell (179小时) | fbank | 中文 | 点击下载 | |
deepspeech2_big_no_stream | aishell (179小时) | fbank | 中文 | 点击下载 | |
deepspeech2 | Librispeech (960小时) | fbank | 英文 | 点击下载 | |
deepspeech2_big | Librispeech (960小时) | fbank | 英文 | 点击下载 | |
deepspeech2_no_stream | Librispeech (960小时) | fbank | 英文 | 点击下载 | |
deepspeech2_big_no_stream | Librispeech (960小时) | fbank | 英文 | 点击下载 | |
deepspeech2 | 超大数据集(1600多小时真实数据)+(1300多小时合成数据) | linear | 中文 | 0.06215 | 点击下载(需要重新导出模型) |
deepspeech2_big | 超大数据集(1600多小时真实数据)+(1300多小时合成数据) | linear | 中文 | 0.05517 | 先star 项目再点击下载 |
说明:
- 这里字错率是使用
eval.py
程序并使用集束搜索解码ctc_beam_search
方法计算得到的。 - 中文解码参数为:
alpha=2.2,beta=4.3,beam_size=300,cutoff_prob=0.99,cutoff_top_n=40
。 - 英文解码参数为:
alpha=1.9,beta=0.3,beam_size=500,cutoff_prob=1.0,cutoff_top_n=40
。 - 除了aishell数据集按照数据集本身划分的训练数据和测试数据,其他的都是按照项目设置的固定比例划分训练数据和测试数据。
- 下载的压缩文件已经包含了
mean_std.npz
和vocabulary.txt
,需要把解压得到的全部文件复制到项目根目录下。 - 模型名称包含
no_stream
为非流式模型,不能用于流式识别。
有问题欢迎提 issue 交流
文档教程
- 快速安装
- 快速使用
- 数据准备
- WenetSpeech数据集
- 合成语音数据
- 数据增强
- 训练模型
- 集束搜索解码
- 执行评估
- 导出模型
- 使用标点符号模型
- 预测
- 本地预测
- 长语音预测
- Web部署模型
- GUI界面预测
- Nvidia Jetson部署
快速预测
- 下载作者提供的模型,或者训练模型并导出模型,使用
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界面部署
相关项目
- 基于PaddlePaddle实现的声纹识别:VoiceprintRecognition-PaddlePaddle
- 基于PaddlePaddle静态图实现的语音识别:PaddlePaddle-DeepSpeech
- 基于Pytorch实现的语音识别:MASR
特别感谢
- 感谢
JetBrains开源社区 提供开发工具。
参考资料
- https://github.com/PaddlePaddle/PaddleSpeech
- https://github.com/jiwidi/DeepSpeech-pytorch
- https://github.com/wenet-e2e/WenetSpeech