以下是翻译的中文文本:
![](https://yellow-cdn.veclightyear.com/2b54e442/02ab4045-a700-44d3-8422-f706ae3bc04a.png)
[![GPL-3.0 许可](https://yellow-cdn.veclightyear.com/2b54e442/7d356374-8ff0-4e93-8f0a-6a1d80e7785a.svg?style=flat)](https://opensource.org/licenses/GPL-3.0)
[![星数](https://img.shields.io/github/stars/nl8590687/ASRT_SpeechRecognition)](https://github.com/nl8590687/ASRT_SpeechRecognition)
[![TensorFlow 版本](https://yellow-cdn.veclightyear.com/2b54e442/24b4a849-6830-4428-a7ea-f3baa173120e.svg)](https://www.tensorflow.org/)
[![Python 版本](https://yellow-cdn.veclightyear.com/2b54e442/2c1636e5-e82e-4144-a289-08e5ab5aff78.svg)](https://www.python.org/)
[![DOI](https://yellow-cdn.veclightyear.com/2b54e442/72bc33b9-75b5-48e3-8589-f89330cb60b7.svg)](https://doi.org/10.5281/zenodo.5808434)
ASRT 是一个基于深度学习的中文语音识别系统,如果您觉得喜欢,请点一个 **“Star”** 吧~
**ReadMe Language** | 中文版 | [English](https://github.com/nl8590687/ASRT_SpeechRecognition/blob/master/README_EN.md) |
[**ASRT 项目主页**](https://asrt.ailemon.net/) |
[**发布版下载**](https://wiki.ailemon.net/docs/asrt-doc/download) |
[**查看本项目的 Wiki 文档**](https://wiki.ailemon.net/docs/asrt-doc) |
[**实用效果体验 Demo**](https://asrt.ailemon.net/demo) |
[**打赏作者**](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deo9u61unti9)
如果程序运行期间或使用中有什么问题,可以及时在 issue 中提出来,我将尽快做出答复。本项目作者交流QQ群:**894112051** ,加微信群请先加 AI 柠檬微信号:**ailemon-me** ,并备注“ASRT 语音识别”
<center><img src="https://res.ailemon.net/common/ailemon-me-wechat-qrcode.jpg?x-oss-process=style/ailemon-blog-webp" height="100rem"/></center>
提问前请仔细查看[项目文档](https://wiki.ailemon.net/docs/asrt-doc)、
[FAQ 常见问题](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deoeud494h4f)
以及 [Issues](https://github.com/nl8590687/ASRT_SpeechRecognition/issues) 避免重复提问。
如果程序运行时有任何异常情况,在提问时请发出完整截图,并注明所使用的 CPU 架构,GPU 型号,操作系统、Python,TensorFlow 和 CUDA 版本,以及是否修改过任何代码或增删数据集等。
## Introduction 简介
本项目使用 TensorFlow.keras 基于深度卷积神经网络和长短时记忆神经网络、注意力机制以及 CTC 实现。
## 训练模型的最低软硬件要求
### 硬件
* CPU: 4 核 (x86_64, amd64) +
* RAM: 16 GB +
* GPU: NVIDIA, 图形内存 11GB+ (1080ti 起步)
* 硬盘: 500 GB 机械硬盘(或固态硬盘)
### 软件
* Linux: Ubuntu 18.04 + / CentOS 7 + 或 Windows 10/11
* Python: 3.7 - 3.10 及后续版本
* TensorFlow: 2.5 - 2.11 及后续版本
## 快速开始
以在 Linux 系统下的操作为例:
首先通过 Git 将本项目克隆到您的计算机上,然后下载本项目训练所需要的数据集,下载链接详见[文档末尾部分](https://github.com/nl8590687/ASRT_SpeechRecognition#data-sets-数据集)。
```shell
$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git
或者您也可以通过 “Fork” 按钮,将本项目 Copy 一份副本,然后通过您自己的 SSH 密钥克隆到本地。
通过 git 克隆仓库以后,进入项目根目录;并创建一个存储数据的子目录,例如 /data/speech_data
(可使用软链接代替),然后将下载好的数据集直接解压进去。
注意,当前版本中,在配置文件里,默认添加了 Thchs30、ST-CMDS、Primewords、aishell-1、aidatatang200、MagicData 六个数据集,如果不需要请自行删除。如果要使用其他数据集需要自行添加数据配置,并提前使用 ASRT 支持的标准格式整理数据。
$ cd ASRT_SpeechRecognition
$ mkdir /data/speech_data
$ tar zxf <数据集压缩文件名> -C /data/speech_data/
下载默认数据集的拼音标签文件:
$ python download_default_datalist.py
目前可用的模型有 24、25、251 和 251bn
运行本项目之前,请安装必要的Python3 版依赖库。
本项目开始训练请执行:
$ python3 train_speech_model.py
本项目开始测试请执行:
$ python3 evaluate_speech_model.py
测试之前,请确保代码中填写的模型文件路径存在。
预测单条音频文件的语音识别文本:
$ python3 predict_speech_file.py
启动 ASRT HTTP 协议的 API 服务器启动请执行:
$ python3 asrserver_http.py
本地测试调用 HTTP 协议 API 服务是否成功:
$ python3 client_http.py
启动 ASRT GRPC 协议的 API 服务器启动请执行:
$ python3 asrserver_grpc.py
本地测试调用 GRPC 协议 API 服务是否成功:
$ python3 client_grpc.py
请注意,开启 API 服务器之后,需要使用本 ASRT 项目对应的客户端软件来进行语音识别,详见 Wiki 文档下载 ASRT 语音识别客户端 SDK 和 Demo。
如果要训练和使用非 251bn 版模型,请在代码中 from speech_model.xxx import xxx
的相应位置做修改。
使用 docker 直接部署 ASRT:
$ docker pull ailemondocker/asrt_service:1.3.0
$ docker run --rm -it -p 20001:20001 -p 20002:20002 --name asrt-server -d ailemondocker/asrt_service:1.3.0
仅 CPU 运行推理识别,不作训练
Model 模型
Speech Model 语音模型
DCNN + CTC
其中,输入的音频的最大时间长度为 16 秒,输出为对应的汉语拼音序列。
- 关于下载已经训练好的模型的问题
已经训练好的模型包含在发布版服务端程序压缩包里面,发布版成品服务端程序可以在此下载:ASRT 下载页面。
Github 本仓库下Releases页面里面还包括各个不同版本的介绍信息,每个版本下方的 zip 压缩包也是包含已经训练好的模型的发布版服务端程序压缩包。
Language Model 语言模型
基于概率图的最大熵隐马尔可夫模型
输入为汉语拼音序列,输出为对应的汉字文本
About Accuracy 关于准确率
当前,最好的模型在测试集上基本能达到85%的汉语拼音正确率
## Python依赖库
* tensorFlow (2.5-2.11+)
* numpy
* wave
* matplotlib
* scipy
* requests
* flask
* waitress
* grpcio / grpcio-tools / protobuf
不会安装环境的同学请直接运行以下命令(前提是有GPU且已经安装好 Python3.9、CUDA 11.2 和 cudnn 8.1):
```shell
$ pip install -r requirements.txt
Data Sets 数据集
完整内容请查看:几个最新免费开源的中文语音数据集
数据集 | 时长 | 大小 | 国内下载 | 国外下载 |
---|---|---|---|---|
THCHS30 | 40h | 6.01G | data_thchs30.tgz | data_thchs30.tgz |
ST-CMDS | 100h | 7.67G | ST-CMDS-20170001_1-OS.tar.gz | ST-CMDS-20170001_1-OS.tar.gz |
AIShell-1 | 178h | 14.51G | data_aishell.tgz | data_aishell.tgz |
Primewords | 100h | 8.44G | primewords_md_2018_set1.tar.gz | primewords_md_2018_set1.tar.gz |
MagicData | 755h | 52G/1.0G/2.2G | train_set.tar.gz / dev_set.tar.gz / test_set.tar.gz | train_set.tar.gz / dev_set.tar.gz / test_set.tar.gz |
注:AISHELL-1 数据集解压方法
$ tar xzf data_aishell.tgz
$ cd data_aishell/wav
$ for tar in *.tar.gz; do tar xvf $tar; done
特别鸣谢!感谢前辈们的公开语音数据集
如果提供的数据集链接无法打开和下载,请点击该链接 OpenSLR
ASRT语音识别API客户端调用SDK
ASRT为客户端通过RPC方式调用开发语音识别功能提供了不同平台和编程语言的SDK接入能力,对于其他平台,可直接通过调用通用RESTful Open API方式进行语音识别功能接入。具体接入步骤请看ASRT项目文档。
客户端平台 | 项目仓库链接 |
---|---|
Windows客户端SDK和Demo | ASRT_SDK_WinClient |
跨平台Python3客户端SDK和Demo | ASRT_SDK_Python3 |
跨平台Golang客户端SDK和Demo | asrt-sdk-go |
Java客户端SDK和Demo | ASRT_SDK_Java |
ASRT相关资料
ASRT的原理请查看本文:
ASRT训练和部署教程请看:
关于经常被问到的统计语言模型原理的问题,请看:
关于CTC的问题请看:
更多内容请访问作者的博客:AI柠檬博客
或使用AI柠檬站内搜索引擎进行相关信息的搜索
License 开源许可协议
参考引用本项目
Contributors 贡献者们
@nl8590687 (repo owner)