Spaces:
Sleeping
Sleeping
Merge branch 'main' of https://huggingface.co/spaces/waysolong/apeech_rec
Browse files
README.md
CHANGED
@@ -1,237 +1,12 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
[**ASRT项目主页**](https://asrt.ailemon.net/) |
|
14 |
-
[**发布版下载**](https://wiki.ailemon.net/docs/asrt-doc/download) |
|
15 |
-
[**查看本项目的Wiki文档**](https://wiki.ailemon.net/docs/asrt-doc) |
|
16 |
-
[**实用效果体验Demo**](https://asrt.ailemon.net/demo) |
|
17 |
-
[**打赏作者**](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deo9u61unti9)
|
18 |
-
|
19 |
-
如果程序运行期间或使用中有什么问题,可以及时在issue中提出来,我将尽快做出答复。本项目作者交流QQ群:**894112051** ,加微信群请先加AI柠檬微信号:**ailemon-me** ,并备注“ASRT语音识别”
|
20 |
-
|
21 |
-
<center><img src="https://res.ailemon.net/common/ailemon-me-wechat-qrcode.jpg?x-oss-process=style/ailemon-blog-webp" height="100rem"/></center>
|
22 |
-
|
23 |
-
提问前请仔细查看[项目文档](https://asrt.ailemon.net/docs/)、
|
24 |
-
[FAQ常见问题](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deoeud494h4f)
|
25 |
-
以及[Issues](https://github.com/nl8590687/ASRT_SpeechRecognition/issues) 避免重复提问
|
26 |
-
|
27 |
-
如果程序运行时有任何异常情况,在提问时请发出完整截图,并注明所使用的CPU架构,GPU型号,操作系统、Python,TensorFlow和CUDA版本,以及是否修改过任何代码或增删数据集等。
|
28 |
-
|
29 |
-
## Introduction 简介
|
30 |
-
|
31 |
-
本项目使用tensorFlow.keras基于深度卷积神经网络和长短时记忆神经网络、注意力机制以及CTC实现。
|
32 |
-
|
33 |
-
## 训练模型的最低软硬件要求
|
34 |
-
### 硬件
|
35 |
-
* CPU: 4核 (x86_64, amd64) +
|
36 |
-
* RAM: 16 GB +
|
37 |
-
* GPU: NVIDIA, Graph Memory 11GB+ (1080ti起步)
|
38 |
-
* 硬盘: 500 GB 机械硬盘(或固态硬盘)
|
39 |
-
|
40 |
-
### 软件
|
41 |
-
* Linux: Ubuntu 18.04 + / CentOS 7 + 或 Windows 10/11
|
42 |
-
* Python: 3.7 - 3.10 及后续版本
|
43 |
-
* TensorFlow: 2.5 - 2.11 及后续版本
|
44 |
-
|
45 |
-
## 快速开始
|
46 |
-
|
47 |
-
以在Linux系统下的操作为例:
|
48 |
-
|
49 |
-
首先通过Git将本项目克隆到您的计算机上,然后下载本项目训练所需要的数据集,下载链接详见[文档末尾部分](https://github.com/nl8590687/ASRT_SpeechRecognition#data-sets-%E6%95%B0%E6%8D%AE%E9%9B%86)。
|
50 |
-
```shell
|
51 |
-
$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git
|
52 |
-
```
|
53 |
-
|
54 |
-
或者您也可以通过 "Fork" 按钮,将本项目Copy一份副本,然后通过您自己的SSH密钥克隆到本地。
|
55 |
-
|
56 |
-
通过git克隆仓库以后,进入项目根目录;并创建一个存储数据的子目录, 例如 `/data/speech_data` (可使用软链接代替),然后将下载好的数据集直接解压进去
|
57 |
-
|
58 |
-
注意,当前版本中,在配置文件里,默认添加了Thchs30、ST-CMDS、Primewords、aishell-1、aidatatang200、MagicData 六个数据集,如果不需要请自行删除。如果要使用其他数据集需要自行添加数据配置,并提前使用ASRT支持的标准格式整理数据。
|
59 |
-
|
60 |
-
```shell
|
61 |
-
$ cd ASRT_SpeechRecognition
|
62 |
-
|
63 |
-
$ mkdir /data/speech_data
|
64 |
-
|
65 |
-
$ tar zxf <数据集压缩文件名> -C /data/speech_data/
|
66 |
-
```
|
67 |
-
|
68 |
-
下载默认数据集的拼音标签文件:
|
69 |
-
```shell
|
70 |
-
$ python download_default_datalist.py
|
71 |
-
```
|
72 |
-
|
73 |
-
目前可用的模型有24、25、251和251bn
|
74 |
-
|
75 |
-
运行本项目之前,请安装必要的[Python3版依赖库](https://github.com/nl8590687/ASRT_SpeechRecognition#python-import)
|
76 |
-
|
77 |
-
本项目开始训练请执行:
|
78 |
-
```shell
|
79 |
-
$ python3 train_speech_model.py
|
80 |
-
```
|
81 |
-
本项目开始测试请执行:
|
82 |
-
```shell
|
83 |
-
$ python3 evaluate_speech_model.py
|
84 |
-
```
|
85 |
-
测试之前,请确保代码中填写的模型文件路径存在。
|
86 |
-
|
87 |
-
预测单条音频文件的语音识别文本:
|
88 |
-
```shell
|
89 |
-
$ python3 predict_speech_file.py
|
90 |
-
```
|
91 |
-
|
92 |
-
启动ASRT HTTP协议的API服务器启动请执行:
|
93 |
-
```shell
|
94 |
-
$ python3 asrserver_http.py
|
95 |
-
```
|
96 |
-
|
97 |
-
本地测试调用HTTP协议API服务是否成功:
|
98 |
-
```shell
|
99 |
-
$ python3 client_http.py
|
100 |
-
```
|
101 |
-
|
102 |
-
启动ASRT GRPC协议的API服务器启动请执行:
|
103 |
-
```shell
|
104 |
-
$ python3 asrserver_grpc.py
|
105 |
-
```
|
106 |
-
|
107 |
-
本地测试调用GRPC协议API服务是否成功:
|
108 |
-
```shell
|
109 |
-
$ python3 client_grpc.py
|
110 |
-
```
|
111 |
-
|
112 |
-
请注意,开启API服务器之后,需要使用本ASRT项目对应的客户端软件来进行语音识别,详见Wiki文档[下载ASRT语音识别客户端SDK和Demo](https://wiki.ailemon.net/docs/asrt-doc/download)。
|
113 |
-
|
114 |
-
如果要训练和使用非251bn版模型,请在代码��� `from speech_model.xxx import xxx` 的相应位置做修改。
|
115 |
-
|
116 |
-
使用docker直接部署ASRT:
|
117 |
-
```shell
|
118 |
-
$ docker pull ailemondocker/asrt_service:1.3.0
|
119 |
-
$ docker run --rm -it -p 20001:20001 -p 20002:20002 --name asrt-server -d ailemondocker/asrt_service:1.3.0
|
120 |
-
```
|
121 |
-
仅CPU运行推理识别,不作训练
|
122 |
-
|
123 |
-
## Model 模型
|
124 |
-
|
125 |
-
### Speech Model 语音模型
|
126 |
-
|
127 |
-
DCNN + CTC
|
128 |
-
|
129 |
-
其中,输入的音频的最大时间长度为16秒,输出为对应的汉语拼音序列
|
130 |
-
|
131 |
-
* 关于下载已经训练好的模型的问题
|
132 |
-
|
133 |
-
已经训练好的模型包含在发布版服务端程序压缩包里面,发布版成品服务端程序可以在此下载:[ASRT下载页面](https://wiki.ailemon.net/docs/asrt-doc/download)。
|
134 |
-
|
135 |
-
Github本仓库下[Releases](https://github.com/nl8590687/ASRT_SpeechRecognition/releases)页面里面还包括各个不同版本的介绍信息,每个版本下方的zip压缩包也是包含已经训练好的模型的发布版服务端程序压缩包。
|
136 |
-
|
137 |
-
### Language Model 语言模型
|
138 |
-
|
139 |
-
基于概率图的最大熵隐马尔可夫模型
|
140 |
-
|
141 |
-
输入为汉语拼音序列,输出为对应的汉字文本
|
142 |
-
|
143 |
-
## About Accuracy 关于准确率
|
144 |
-
|
145 |
-
当前,最好的模型在测试集上基本能达到85%的汉语拼音正确率
|
146 |
-
|
147 |
-
## Python依赖库
|
148 |
-
|
149 |
-
* tensorFlow (2.5-2.11+)
|
150 |
-
* numpy
|
151 |
-
* wave
|
152 |
-
* matplotlib
|
153 |
-
* scipy
|
154 |
-
* requests
|
155 |
-
* flask
|
156 |
-
* waitress
|
157 |
-
* grpcio / grpcio-tools / protobuf
|
158 |
-
|
159 |
-
不会安装环境的同学请直接运行以下命令(前提是有GPU且已经安装好 Python3.9、CUDA 11.2 和 cudnn 8.1):
|
160 |
-
|
161 |
-
```shell
|
162 |
-
$ pip install -r requirements.txt
|
163 |
-
```
|
164 |
-
|
165 |
-
[依赖环境和性能配置要求](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deobk7bmlgd6)
|
166 |
-
|
167 |
-
## Data Sets 数据集
|
168 |
-
|
169 |
-
完整内容请查看:[几个最新免费开源的中文语音数据集](https://blog.ailemon.net/2018/11/21/free-open-source-chinese-speech-datasets/)
|
170 |
-
|
171 |
-
|数据集|时长|大小|国内下载|国外下载|
|
172 |
-
|-|-|-|-|-|
|
173 |
-
|THCHS30|40h|6.01G|[data_thchs30.tgz](<http://openslr.magicdatatech.com/resources/18/data_thchs30.tgz>)|[data_thchs30.tgz](<http://www.openslr.org/resources/18/data_thchs30.tgz>)|
|
174 |
-
|ST-CMDS|100h|7.67G|[ST-CMDS-20170001_1-OS.tar.gz](<http://openslr.magicdatatech.com/resources/38/ST-CMDS-20170001_1-OS.tar.gz>)|[ST-CMDS-20170001_1-OS.tar.gz](<http://www.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz>)|
|
175 |
-
|AIShell-1|178h|14.51G|[data_aishell.tgz](<http://openslr.magicdatatech.com/resources/33/data_aishell.tgz>)|[data_aishell.tgz](<http://www.openslr.org/resources/33/data_aishell.tgz>)|
|
176 |
-
|Primewords|100h|8.44G|[primewords_md_2018_set1.tar.gz](<http://openslr.magicdatatech.com/resources/47/primewords_md_2018_set1.tar.gz>)|[primewords_md_2018_set1.tar.gz](<http://www.openslr.org/resources/47/primewords_md_2018_set1.tar.gz>)|
|
177 |
-
|MagicData|755h|52G/1.0G/2.2G| [train_set.tar.gz](<http://openslr.magicdatatech.com/resources/68/train_set.tar.gz>) / [dev_set.tar.gz](<http://openslr.magicdatatech.com/resources/68/dev_set.tar.gz>) / [test_set.tar.gz](<http://openslr.magicdatatech.com/resources/68/test_set.tar.gz>)|[train_set.tar.gz](<http://www.openslr.org/resources/68/train_set.tar.gz>) / [dev_set.tar.gz](<http://www.openslr.org/resources/68/dev_set.tar.gz>) / [test_set.tar.gz](<http://www.openslr.org/resources/68/test_set.tar.gz>)|
|
178 |
-
|
179 |
-
注:AISHELL-1 数据集解压方法
|
180 |
-
|
181 |
-
```
|
182 |
-
$ tar xzf data_aishell.tgz
|
183 |
-
$ cd data_aishell/wav
|
184 |
-
$ for tar in *.tar.gz; do tar xvf $tar; done
|
185 |
-
```
|
186 |
-
|
187 |
-
特别鸣谢!感谢前辈们的公开语音数据集
|
188 |
-
|
189 |
-
如果提供的数据集链接无法打开和下载,请点击该链接 [OpenSLR](http://www.openslr.org)
|
190 |
-
|
191 |
-
## ASRT语音识别API客户端调用SDK
|
192 |
-
|
193 |
-
ASRT为客户端通过RPC方式调用开发语音识别功能提供了不同平台和编程语言的SDK接入能力,对于其他平台,可直接通过调用通用RESTful Open API方式进行语音识别功能接入。具体接入步骤请看ASRT项目文档。
|
194 |
-
|
195 |
-
|客户端平台|项目仓库链接|
|
196 |
-
|-|-|
|
197 |
-
|Windows客户端SDK和Demo|[ASRT_SDK_WinClient](https://github.com/nl8590687/ASRT_SDK_WinClient)|
|
198 |
-
|跨平台Python3客户端SDK和Demo|[ASRT_SDK_Python3](https://github.com/nl8590687/ASRT_SDK_Python3)|
|
199 |
-
|跨平台Golang客户端SDK和Demo|[asrt-sdk-go](https://github.com/nl8590687/asrt-sdk-go)|
|
200 |
-
|Java客户端SDK和Demo|[ASRT_SDK_Java](https://github.com/nl8590687/ASRT_SDK_Java)|
|
201 |
-
|
202 |
-
## ASRT相关资料
|
203 |
-
* [查看ASRT项目的Wiki文档](https://wiki.ailemon.net/docs/asrt-doc)
|
204 |
-
|
205 |
-
ASRT的原理请查看本文:
|
206 |
-
* [ASRT:一个中文语音识别系统](https://blog.ailemon.net/2018/08/29/asrt-a-chinese-speech-recognition-system/)
|
207 |
-
|
208 |
-
ASRT训练和部署教程请看:
|
209 |
-
* [教你如何使用ASRT训练中文语音识别模型](<https://blog.ailemon.net/2020/08/20/teach-you-how-use-asrt-train-chinese-asr-model/>)
|
210 |
-
* [教你如何使用ASRT部署中文语音识别API服务器](<https://blog.ailemon.net/2020/08/27/teach-you-how-use-asrt-deploy-chinese-asr-api-server/>)
|
211 |
-
|
212 |
-
关于经常被问到的统计语言模型原理的问题,请看:
|
213 |
-
|
214 |
-
* [统计语言模型:从中文拼音到文本](https://blog.ailemon.net/2017/04/27/statistical-language-model-chinese-pinyin-to-words/)
|
215 |
-
* [统计N元语言模型生成算法:简单中文词频统计](https://blog.ailemon.net/2017/02/20/simple-words-frequency-statistic-without-segmentation-algorithm/)
|
216 |
-
|
217 |
-
关于CTC的问题请看:
|
218 |
-
|
219 |
-
* [[翻译]使用CTC进行序列建模](<https://blog.ailemon.net/2019/07/18/sequence-modeling-with-ctc/>)
|
220 |
-
|
221 |
-
更多内容请访问作者的博客:[AI柠檬博客](https://blog.ailemon.net/)
|
222 |
-
|
223 |
-
或使用[AI柠檬站内搜索引擎](https://s.ailemon.net/)进行相关信息的搜索
|
224 |
-
|
225 |
-
## License 开源许可协议
|
226 |
-
|
227 |
-
[GPL v3.0](LICENSE) © [nl8590687](https://github.com/nl8590687) 作者:[AI柠檬](https://www.ailemon.net/)
|
228 |
-
|
229 |
-
## 参考引用本项目
|
230 |
-
|
231 |
-
[DOI: 10.5281/zenodo.5808434](https://doi.org/10.5281/zenodo.5808434)
|
232 |
-
|
233 |
-
## Contributors 贡献者们
|
234 |
-
|
235 |
-
[贡献者页面](https://github.com/nl8590687/ASRT_SpeechRecognition/graphs/contributors)
|
236 |
-
|
237 |
-
@nl8590687 (repo owner)
|
|
|
1 |
+
---
|
2 |
+
title: Apeech Rec
|
3 |
+
emoji: 👀
|
4 |
+
colorFrom: indigo
|
5 |
+
colorTo: gray
|
6 |
+
sdk: gradio
|
7 |
+
sdk_version: 4.21.0
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
---
|
11 |
+
|
12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|