51

绝佳的ASR学习方案:这是一套开源的中文语音识别系统

 5 years ago
source link: https://www.jiqizhixin.com/articles/021102?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ASRT 是一套基于深度学习实现的系统,全称为 Auto Speech Recognition Tool,由 AI 柠檬博主开发并在 GitHub 上开源(GPL 3.0 协议)。本项目声学模型通过采用(CNN)和连接性时序分类(CTC)方法,使用大量中文语音数据集进行训练,将声音转录为中文拼音,并通过,将拼音序列转换为中文文本。基于该模型,作者在 Windows 平台上实现了一个基于 ASRT 的语音识别应用软件它同样也在 GitHub 上开源了。

  • ASRT 项目主页:https://asrt.ailemon.me

  • GitHub 项目地址:https://github.com/nl8590687/ASRT_SpeechRecognition

这个开源项目主要用于语音识别的研究,作者希望它可以一步步发展为极高准确率的 ASR 系统。此外,因为模型和训练代码都是开源的,所以能节省开发者很多时间。同样,如果开发者想要根据需求修改这个项目,那也非常简单,因为 ASRT 的代码都是经过高度封装的,所有模块都是可以自定义的。如下展示了该项目的一些特征:

QZBBRzB.png!web

系统流程

特征提取:将普通的 wav 语音信号通过分帧加窗等操作转换为神经网络需要的二维频谱图像信号,即语谱图。

3YzMRja.jpg!web

声学模型:基于 Keras 和TensorFlow框架,使用这种参考了VGG的深层的 卷积神经网络 作为网络模型,并训练。

jmU73yq.jpg!web

CTC 解码:在语音识别系统的声学模型输出中,往往包含了大量连续重复的符号,因此,我们需要将连续相同的符号合并为同一个符号,然后再去除静音分隔标记符,得到最终实际的语音拼音符号序列。

636Jny6.jpg!web

语言模型:使用统计语言模型,将拼音转换为最终的识别文本并输出。拼音转文本本质被建模为一条隐含马尔可夫链,这种模型有着很高的准确率。

使用流程

如果读者希望直接使用预训练的中文语音识别系统,那么直接下载 Release 的文件并运行就好了:

下载地址:https://github.com/nl8590687/ASRT_SpeechRecognition/releases/tag/v0.4.2

如果读者希望修改某些模块,或者在新的数据集上进行训练,那么我们可以复制整个项目到本地,再做进一步处理。首先我们通过 Git 将本项目复制到本地,并下载训练所需要的数据集。作者在项目 README 文件中提供了两个数据集,即清华大学 THCHS30 中文语音数据集和 AIShell-1 开源版数据集。

$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git

THCHS30 和 ST-CMDS 国内下载镜像:http://cn-mirror.openslr.org/

在下载数据集后,我们需要将 datalist 目录下的所有文件复制到 dataset 目录下,也就是将其与数据集放在一起:

$ cp -rf datalist/* dataset/

在开始训练前,我们还需要安装一些依赖库:

  • python_speech_features

  • TensorFlow

  • Keras

  • wave

当然,其它如 NumPy、Matplotlib、Scipy 和 h5py 等常见的科学计算库也都是需要的。一般有这些包后,环境应该是没什么问题的,有问题也可以根据报错安装对应缺少的库。

训练模型可以执行命令行:

$ python3 train_mspeech.py

测试模型效果可以运行:

$ python3 test_mspeech.py

测试之前,请确保代码中填写的模型文件路径存在。最后,更多的用法和特点可以查看原 GitHub 项目和文档。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK