原文: ASRT:一个中文语音识别系统 (博客文章于2018年8月29日发表)

摘要

ASRT是一套基于深度学习的中文语音识别系统,全称为Auto Speech Recognition Tool,由AI柠檬博主开发并在GitHub上开源(GPL 3.0协议)。ASRT 可以用来帮您快速上手语音识别技术,简单操作即可实现模型训练、评估、预测和服务部署,支持使用客户端 SDK 二次开发,支持开箱即用,可以直接下载并运行部署已打包的发布版 API 服务软件,或使用 Docker 一键部署。

本项目声学模型通过采用深度卷积神经网络(DCNN)和连接时序分类(CTC)方法,使用大量中文语音数据集进行训练,将声音转录为中文拼音,并通过语言模型,将拼音序列转换为中文文本,算法模型在测试集上已经获得了 85% 的正确率。

基于这一套算法模型,ASRT实现了语音识别API服务,支持多种网络协议,支持一句话识别和实时流式识别,并为多种编程语言和平台提供了客户端SDK支持,并附带有开源的Demo程序,可以取得较好应用效果。

Introduction 本项目介绍

ASRT是一个基于深度学习的语音识别系统,支持开箱即用。本项目使用 tensorFlow.keras 基于卷积神经网络、长短时记忆神经网络以及CTC等技术实现。

本项目对算法工程师,前后端和客户端软件开发者,服务器运维人员,都有着非常友好的支持度。不论您是打算基于ASRT做语音算法的科研,还是基于ASRT为您的应用产品接入语音识别功能,或者将ASRT语音识别服务直接部署上线到您的服务器中,ASRT语音识别项目都可以为您带来非常舒适的使用体验,大大降低技术应用门槛。

Features 特征提取

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

Model 模型

Speech Model 声学模型

DCNN + CTC

用于实现将声学信号转换为拼音标签序列

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

  • 关于下载已经训练好的模型的问题

可以在Github本仓库下release里面的发布的软件的压缩包ASRT_vXX.XX.zip里获得完整源程序,包含已经训练好的模型。

CTC Decode

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

Language Model 语言模型

基于概率图的马尔可夫模型

用于实现将拼音标签序列转换为最终对应的中文文本,就是识别出来的文字

拼音转文本的本质被建模为一条隐含马尔可夫链,这种模型有着很高的准确率。
(其原理请看:https://blog.ailemon.net/2017/04/27/statistical-language-model-chinese-pinyin-to-words/

基于HTTP协议和gRPC协议的API接口服务

本项目实现了一个通用的Open API接口,使用Python的相关包实现了一个基于http协议的 Restful 模式API服务,和一个基于gRPC协议的API服务。客户端或SDK可调用该服务接口,以直接实现语音识别。

通用Open API接口参数文档

客户端和SDK

本项目的客户端分为4种,其中2种为Windows客户端,一个是UWP客户端,另一个是WPF客户端,源码均需要使用VS2017来开发和编译,使用C#和XAML编写。项目包含有界面逻辑和录音模块、语音识别API调用模块,并包含对wav文件的raw格式进行的解析。
另外两种为python版客户端(sdk)和java+web端。

客户端通过自动控制录音的中断时间、两个录音模块连续交替录音,以及异步发送请求操作,最终按照先后顺序将返回结果显示在界面的文本框中,实现了长时间连续语音识别的功能。

本项目的贡献者名单

代码贡献

@nl8590687 (项目owner)

@zw76859420 @PhanatosZou @wkyo @huangyz0918 @poria-cat @zhangxu999 @madeirak @ZJUGuoShuai @williamchenwl

GitHub上完整名单

文档贡献

@nl8590687 (项目owner)

文档更新时间: 2022-05-10 19:40   作者:AI柠檬