# 基于深度学习的中文语音识别系统
**注意**:本人于近期想对该项目进行翻新,tf 现在已经将 keras 作为重要的一部分,因此可能将代码用 TensorFlow2 来进行修改。大家有什么建议可以在 issue 提一下。
## 1. Introduction
该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括 CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型包含 [transformer](https://jalammar.github.io/illustrated-transformer/)、[CBHG](https://github.com/crownpku/Somiao-Pinyin),数据集包含 stc、primewords、Aishell、thchs30 四个数据集。
本项目现已训练一个迷你的语音识别系统,将项目下载到本地上,下载 [thchs 数据集](http://www.openslr.org/resources/18/data_thchs30.tgz)并解压至 data,运行 `test.py`,不出意外能够进行识别,结果如下:
```
the 0 th example.
文本结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
原文结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
原文汉字: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
识别结果: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
```
若自己建立模型则需要删除现有模型,重新配置参数训练,具体实现流程参考本页最后。
## 2. 声学模型
声学模型采用 CTC 进行建模,采用 CNN-CTC、GRU-CTC、FSMN 等模型 `model_speech`,采用 keras 作为编写框架。
- 论文地址:[http://www.infocomm-journal.com/dxkx/CN/article/openArticlePDFabs.jsp?id=166970](http://www.infocomm-journal.com/dxkx/CN/article/openArticlePDFabs.jsp?id=166970)
- tutorial:[https://blog.csdn.net/chinatelecom08/article/details/85013535](https://blog.csdn.net/chinatelecom08/article/details/85013535)
## 3. 语言模型
新增基于 self-attention 结构的语言模型 `model_language\transformer.py`,该模型已经被证明有强于其他框架的语言表达能力。
- 论文地址:[https://arxiv.org/abs/1706.03762](https://arxiv.org/abs/1706.03762)。
- tutorial:[https://blog.csdn.net/chinatelecom08/article/details/85051817](https://blog.csdn.net/chinatelecom08/article/details/85051817)
基于 CBHG 结构的语言模型 `model_language\cbhg.py`,该模型之前用于谷歌声音合成,移植到该项目中作为基于神经网络的语言模型。
- 原理地址:[https://github.com/crownpku/Somiao-Pinyin](https://github.com/crownpku/Somiao-Pinyin)
- tutorial:[https://blog.csdn.net/chinatelecom08/article/details/85048019](https://blog.csdn.net/chinatelecom08/article/details/85048019)
## 4. 数据集
包括 stc、primewords、Aishell、thchs30 四个数据集,共计约 430 小时, 相关链接:[http://www.openslr.org/resources.php](http://www.openslr.org/resources.php)
| Name | train | dev | test |
| ---------- | :----: | ----: | ---: |
| aishell | 120098 | 14326 | 7176 |
| primewords | 40783 | 5046 | 5073 |
| thchs-30 | 10000 | 893 | 2495 |
| st-cmd | 10000 | 600 | 2000 |
数据标签整理在 `data` 路径下,其中 primewords、st-cmd 目前未区分训练集测试集。
若需要使用所有数据集,只需解压到统一路径下,然后设置 utils.py 中 datapath 的路径即可。
与数据相关参数在 `utils.py` 中:
- data_type: train, test, dev
- data_path: 对应解压数据的路径
- thchs30, aishell, prime, stcmd: 是否使用该数据集
- batch_size: batch_size
- data_length: 我自己做实验时写小一些看效果用的,正常使用设为 None 即可
- shuffle:正常训练设为 True,是否打乱训练顺序
```py
def data_hparams():
params = tf.contrib.training.HParams(
# vocab
data_type = 'train',
data_path = 'data/',
thchs30 = True,
aishell = True,
prime = False,
stcmd = False,
batch_size = 1,
data_length = None,
shuffle = False)
return params
```
## 5. 配置
使用 train.py 文件进行模型的训练。
声学模型可选 cnn-ctc、gru-ctc,只需修改导入路径即可:
`from model_speech.cnn_ctc import Am, am_hparams`
`from model_speech.gru_ctc import Am, am_hparams`
语言模型可选 transformer 和 cbhg:
`from model_language.transformer import Lm, lm_hparams`
`from model_language.cbhg import Lm, lm_hparams`
### 模型识别
使用 test.py 检查模型识别效果。
模型选择需和训练一致。
# 一个简单的例子
# 1. 声学模型训练
train.py 文件
```python
import os
import tensorflow as tf
from utils import get_data, data_hparams
# 准备训练所需数据
data_args = data_hparams()
data_args.data_length = 10
train_data = get_data(data_args)
# 1.声学模型训练-----------------------------------
from model_speech.cnn_ctc import Am, am_hparams
am_args = am_hparams()
am_args.vocab_size = len(train_data.am_vocab)
am = Am(am_args)
if os.path.exists('logs_am/model.h5'):
print('load acoustic model...')
am.ctc_model.load_weights('logs_am/model.h5')
epochs = 10
batch_num = len(train_data.wav_lst) // train_data.batch_size
for k in range(epochs):
print('this is the', k+1, 'th epochs trainning !!!')
#shuffle(shuffle_list)
batch = train_data.get_am_batch()
am.ctc_model.fit_generator(batch, steps_per_epoch=batch_num, epochs=1)
am.ctc_model.save_weights('logs_am/model.h5')
```
```
get source list...
load thchs_train.txt data...
100%|████████████████████████████████████████████████████████████████████████| 10000/10000 [00:00<00:00, 236865.96it/s]
load aishell_train.txt data...
100%|██████████████████████████████████████████████████████████████████████| 120098/120098 [00:00<00:00, 260863.15it/s]
make am vocab...
100%|████████████████████████████████████████████████████████████████████████████████| 10/10 [00:00<00:00, 9986.44it/s]
make lm pinyin vocab...
100%|████████████████████████████████████████████████████████████████████████████████| 10/10 [00:00<00:00, 9946.18it/s]
make lm hanzi vocab...
100%|████████████████████████████████████████████████████████████████████████████████| 10/10 [00:00<00:00, 9950.90it/s]
Using TensorFlow backend.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
the_inputs (InputLayer) (None, None, 200, 1) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, None, 200, 32) 320
_________________________________________________________________
batch_normalization_1 (Batch (None, None, 200, 32) 128
_________________________________________________________________
conv2d_2 (Conv2D) (None, No
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于深度学习的中文语音识别系统python程序源代码设计数据集声学模型和语言模型建模 该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括 CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型包含 [transformer](https://jalammar.github.io/illustrated-transformer/)、[CBHG](https://github.com/crownpku/Somiao-Pinyin),数据集包含 stc、primewords、Aishell、thchs30 四个数据集。 本项目现已训练一个迷你的语音识别系统,将项目下载到本地上,下载 [thchs 数据集](http://www.openslr.org/resources/18/data_thchs30.tgz)并解压至 data,运行 `test.py`,不出意外能够进行识别,结果如下: ``` the 0 th example. 文本结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2zhang1
资源推荐
资源详情
资源评论
收起资源包目录
基于深度学习的中文语音识别系统python程序源代码设计数据集声学模型和语言模型建模.zip (30个子文件)
dad2da2949284e140f521be4a300b77.png 26KB
deepspeechrecognition
utils.py 9KB
model_speech
cnn_ctc.py 3KB
gru_ctc.py 3KB
fsmn.py 0B
logs_lm
checkpoint 73B
model_20.index 6KB
model_20.data-00000-of-00001 81.63MB
model_20.meta 1.5MB
tutorial
data
zh.tsv 23.69MB
CBHG_tutorail.ipynb 121KB
self-attention_tutorial.ipynb 417KB
CNN+CTC_tutorial.ipynb 409KB
.gitattributes 101B
data
aishell_train.txt 19.08MB
aishell_dev.txt 2.24MB
thchs_dev.txt 254KB
thchs_test.txt 711KB
aishell_test.txt 1.14MB
stcmd.txt 13MB
prime.txt 12.04MB
thchs_train.txt 2.79MB
LICENSE 1KB
logs_am
model.h5 6.79MB
.gitignore 19B
train.py 4KB
test.py 3KB
README.md 24KB
model_language
cbhg.py 0B
transformer.py 13KB
共 30 条
- 1
资源评论
用数据说话用数据决策
- 粉丝: 4106
- 资源: 6339
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功