{"id":13488361,"url":"https://github.com/nl8590687/ASRT_SpeechRecognition","last_synced_at":"2025-03-28T00:33:43.926Z","repository":{"id":37848379,"uuid":"84089270","full_name":"nl8590687/ASRT_SpeechRecognition","owner":"nl8590687","description":"A Deep-Learning-Based Chinese Speech Recognition System 基于深度学习的中文语音识别系统","archived":false,"fork":false,"pushed_at":"2024-09-26T15:28:29.000Z","size":8143,"stargazers_count":7818,"open_issues_count":110,"forks_count":1895,"subscribers_count":185,"default_branch":"master","last_synced_at":"2024-10-29T09:17:36.039Z","etag":null,"topics":["asrt","chinese-speech-recognition","cnn","ctc","keras","python","python3","speech-recognition","speech-to-text","tensorflow"],"latest_commit_sha":null,"homepage":"https://asrt.ailemon.net","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nl8590687.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nl8590687","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"custom":"https://github.com/nl8590687/ASRT_SpeechRecognition/wiki/donate"}},"created_at":"2017-03-06T15:28:21.000Z","updated_at":"2024-10-29T03:46:24.000Z","dependencies_parsed_at":"2023-02-18T15:45:55.103Z","dependency_job_id":"f8b8118e-0dc8-44fe-9693-fa76624ea07c","html_url":"https://github.com/nl8590687/ASRT_SpeechRecognition","commit_stats":{"total_commits":278,"total_committers":13,"mean_commits":"21.384615384615383","dds":0.0611510791366906,"last_synced_commit":"ad23a4e355b1137b72ebf755ca638f17e388bc8f"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl8590687%2FASRT_SpeechRecognition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl8590687%2FASRT_SpeechRecognition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl8590687%2FASRT_SpeechRecognition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl8590687%2FASRT_SpeechRecognition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nl8590687","download_url":"https://codeload.github.com/nl8590687/ASRT_SpeechRecognition/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245949276,"owners_count":20698913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asrt","chinese-speech-recognition","cnn","ctc","keras","python","python3","speech-recognition","speech-to-text","tensorflow"],"created_at":"2024-07-31T18:01:14.371Z","updated_at":"2025-03-28T00:33:38.907Z","avatar_url":"https://github.com/nl8590687.png","language":"Python","funding_links":["https://github.com/sponsors/nl8590687","https://github.com/nl8590687/ASRT_SpeechRecognition/wiki/donate"],"categories":["Python","语音识别 tts, stt","Examples/Notebooks"],"sub_categories":[],"readme":"![](assets/asrt_title_header.png)\r\n\r\n[![GPL-3.0 Licensed](https://img.shields.io/badge/License-GPL3.0-blue.svg?style=flat)](https://opensource.org/licenses/GPL-3.0) \r\n[![Stars](https://img.shields.io/github/stars/nl8590687/ASRT_SpeechRecognition)](https://github.com/nl8590687/ASRT_SpeechRecognition) \r\n[![TensorFlow Version](https://img.shields.io/badge/Tensorflow-2.5+-blue.svg)](https://www.tensorflow.org/) \r\n[![Python Version](https://img.shields.io/badge/Python-3.9+-blue.svg)](https://www.python.org/) \r\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5808434.svg)](https://doi.org/10.5281/zenodo.5808434)\r\n\r\nASRT是一个基于深度学习的中文语音识别系统，如果您觉得喜欢，请点一个 **\"Star\"** 吧~\r\n\r\n**ReadMe Language** | 中文版 | [English](https://github.com/nl8590687/ASRT_SpeechRecognition/blob/master/README_EN.md) |\r\n\r\n[**ASRT项目主页**](https://asrt.ailemon.net/) | \r\n[**发布版下载**](https://wiki.ailemon.net/docs/asrt-doc/download) | \r\n[**查看本项目的Wiki文档**](https://wiki.ailemon.net/docs/asrt-doc) | \r\n[**实用效果体验Demo**](https://asrt.ailemon.net/demo) | \r\n[**打赏作者**](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deo9u61unti9)\r\n\r\n如果程序运行期间或使用中有什么问题，可以及时在issue中提出来，我将尽快做出答复。本项目作者交流QQ群：**894112051** ，加微信群请先加AI柠檬微信号：**ailemon-me** ，并备注“ASRT语音识别”\r\n\r\n\u003ccenter\u003e\u003cimg src=\"https://res.ailemon.net/common/ailemon-me-wechat-qrcode.jpg?x-oss-process=style/ailemon-blog-webp\" height=\"100rem\"/\u003e\u003c/center\u003e\r\n\r\n提问前请仔细查看[项目文档](https://wiki.ailemon.net/docs/asrt-doc)、 \r\n[FAQ常见问题](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deoeud494h4f)\r\n以及[Issues](https://github.com/nl8590687/ASRT_SpeechRecognition/issues) 避免重复提问\r\n\r\n如果程序运行时有任何异常情况，在提问时请发出完整截图，并注明所使用的CPU架构，GPU型号，操作系统、Python，TensorFlow和CUDA版本，以及是否修改过任何代码或增删数据集等。\r\n\r\n## Introduction 简介\r\n\r\n本项目使用tensorFlow.keras基于深度卷积神经网络和长短时记忆神经网络、注意力机制以及CTC实现。\r\n\r\n## 训练模型的最低软硬件要求\r\n### 硬件\r\n* CPU: 4核 (x86_64, amd64) +\r\n* RAM: 16 GB +\r\n* GPU: NVIDIA, Graph Memory 11GB+ (1080ti起步)\r\n* 硬盘: 500 GB 机械硬盘(或固态硬盘)\r\n\r\n### 软件\r\n* Linux: Ubuntu 20.04+ / CentOS 7+ (训练+推理) 或 Windows: 10/11(仅推理)\r\n* Python: 3.9 - 3.11 及后续版本\r\n* TensorFlow: 2.5 - 2.11 及后续版本\r\n\r\n## 快速开始\r\n\r\n以在Linux系统下的操作为例：\r\n\r\n首先通过Git将本项目克隆到您的计算机上，然后下载本项目训练所需要的数据集，下载链接详见[文档末尾部分](https://github.com/nl8590687/ASRT_SpeechRecognition#data-sets-%E6%95%B0%E6%8D%AE%E9%9B%86)。\r\n```shell\r\n$ git clone https://github.com/nl8590687/ASRT_SpeechRecognition.git\r\n```\r\n\r\n或者您也可以通过 \"Fork\" 按钮，将本项目Copy一份副本，然后通过您自己的SSH密钥克隆到本地。\r\n\r\n通过git克隆仓库以后，进入项目根目录；并创建一个存储数据的子目录， 例如 `/data/speech_data` (可使用软链接代替)，然后将下载好的数据集直接解压进去\r\n\r\n注意，当前版本中，在配置文件里，默认添加了Thchs30、ST-CMDS、Primewords、aishell-1、aidatatang200、MagicData 六个数据集，如果不需要请自行删除。如果要使用其他数据集需要自行添加数据配置，并提前使用ASRT支持的标准格式整理数据。\r\n\r\n```shell\r\n$ cd ASRT_SpeechRecognition\r\n\r\n$ mkdir /data/speech_data\r\n\r\n$ tar zxf \u003c数据集压缩文件名\u003e -C /data/speech_data/ \r\n```\r\n\r\n下载默认数据集的拼音标签文件：\r\n```shell\r\n$ python download_default_datalist.py\r\n```\r\n\r\n目前可用的模型有24、25、251和251bn\r\n\r\n运行本项目之前，请安装必要的[Python3版依赖库](https://github.com/nl8590687/ASRT_SpeechRecognition#python-import)\r\n\r\n本项目开始训练请执行：\r\n```shell\r\n$ python3 train_speech_model.py\r\n```\r\n本项目开始测试请执行：\r\n```shell\r\n$ python3 evaluate_speech_model.py\r\n```\r\n测试之前，请确保代码中填写的模型文件路径存在。\r\n\r\n预测单条音频文件的语音识别文本：\r\n```shell\r\n$ python3 predict_speech_file.py\r\n```\r\n\r\n启动ASRT HTTP协议的API服务器启动请执行：\r\n```shell\r\n$ python3 asrserver_http.py\r\n```\r\n\r\n本地测试调用HTTP协议API服务是否成功：\r\n```shell\r\n$ python3 client_http.py\r\n```\r\n\r\n启动ASRT GRPC协议的API服务器启动请执行：\r\n```shell\r\n$ python3 asrserver_grpc.py\r\n```\r\n\r\n本地测试调用GRPC协议API服务是否成功：\r\n```shell\r\n$ python3 client_grpc.py\r\n```\r\n\r\n请注意，开启API服务器之后，需要使用本ASRT项目对应的客户端软件来进行语音识别，详见Wiki文档[下载ASRT语音识别客户端SDK和Demo](https://wiki.ailemon.net/docs/asrt-doc/download)。\r\n\r\n如果要训练和使用非251bn版模型，请在代码中 `from speech_model.xxx import xxx` 的相应位置做修改。\r\n\r\n使用docker直接部署ASRT：\r\n```shell\r\n$ docker pull ailemondocker/asrt_service:1.3.0\r\n$ docker run --rm -it -p 20001:20001 -p 20002:20002 --name asrt-server -d ailemondocker/asrt_service:1.3.0\r\n```\r\n仅CPU运行推理识别，不作训练\r\n\r\n## Model 模型\r\n\r\n### Speech Model 语音模型\r\n\r\nDCNN + CTC\r\n\r\n其中，输入的音频的最大时间长度为16秒，输出为对应的汉语拼音序列\r\n\r\n* 关于下载已经训练好的模型的问题\r\n\r\n已经训练好的模型包含在发布版服务端程序压缩包里面，发布版成品服务端程序可以在此下载：[ASRT下载页面](https://wiki.ailemon.net/docs/asrt-doc/download)。\r\n\r\nGithub本仓库下[Releases](https://github.com/nl8590687/ASRT_SpeechRecognition/releases)页面里面还包括各个不同版本的介绍信息，每个版本下方的zip压缩包也是包含已经训练好的模型的发布版服务端程序压缩包。\r\n\r\n### Language Model 语言模型\r\n\r\n基于概率图的最大熵隐马尔可夫模型\r\n\r\n输入为汉语拼音序列，输出为对应的汉字文本\r\n\r\n## About Accuracy 关于准确率\r\n\r\n当前，最好的模型在测试集上基本能达到85%的汉语拼音正确率\r\n\r\n## Python依赖库\r\n\r\n* tensorFlow (2.5-2.11+)\r\n* numpy\r\n* wave\r\n* matplotlib\r\n* scipy\r\n* requests\r\n* flask\r\n* waitress\r\n* grpcio / grpcio-tools / protobuf\r\n\r\n不会安装环境的同学请直接运行以下命令(前提是有GPU且已经安装好 Python3.9、CUDA 11.2 和 cudnn 8.1)：\r\n\r\n```shell\r\n$ pip install -r requirements.txt\r\n```\r\n\r\n[依赖环境和性能配置要求](https://wiki.ailemon.net/docs/asrt-doc/asrt-doc-1deobk7bmlgd6)\r\n\r\n## Data Sets 数据集\r\n\r\n完整内容请查看：[几个最新免费开源的中文语音数据集](https://blog.ailemon.net/2018/11/21/free-open-source-chinese-speech-datasets/)\r\n\r\n|数据集|时长|大小|国内下载|国外下载|\r\n|-|-|-|-|-|\r\n|THCHS30|40h|6.01G|[data_thchs30.tgz](\u003chttp://openslr.magicdatatech.com/resources/18/data_thchs30.tgz\u003e)|[data_thchs30.tgz](\u003chttp://www.openslr.org/resources/18/data_thchs30.tgz\u003e)|\r\n|ST-CMDS|100h|7.67G|[ST-CMDS-20170001_1-OS.tar.gz](\u003chttp://openslr.magicdatatech.com/resources/38/ST-CMDS-20170001_1-OS.tar.gz\u003e)|[ST-CMDS-20170001_1-OS.tar.gz](\u003chttp://www.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz\u003e)|\r\n|AIShell-1|178h|14.51G|[data_aishell.tgz](\u003chttp://openslr.magicdatatech.com/resources/33/data_aishell.tgz\u003e)|[data_aishell.tgz](\u003chttp://www.openslr.org/resources/33/data_aishell.tgz\u003e)|\r\n|Primewords|100h|8.44G|[primewords_md_2018_set1.tar.gz](\u003chttp://openslr.magicdatatech.com/resources/47/primewords_md_2018_set1.tar.gz\u003e)|[primewords_md_2018_set1.tar.gz](\u003chttp://www.openslr.org/resources/47/primewords_md_2018_set1.tar.gz\u003e)|\r\n|MagicData|755h|52G/1.0G/2.2G| [train_set.tar.gz](\u003chttp://openslr.magicdatatech.com/resources/68/train_set.tar.gz\u003e) / [dev_set.tar.gz](\u003chttp://openslr.magicdatatech.com/resources/68/dev_set.tar.gz\u003e) / [test_set.tar.gz](\u003chttp://openslr.magicdatatech.com/resources/68/test_set.tar.gz\u003e)|[train_set.tar.gz](\u003chttp://www.openslr.org/resources/68/train_set.tar.gz\u003e) / [dev_set.tar.gz](\u003chttp://www.openslr.org/resources/68/dev_set.tar.gz\u003e) / [test_set.tar.gz](\u003chttp://www.openslr.org/resources/68/test_set.tar.gz\u003e)|\r\n\r\n  注：AISHELL-1 数据集解压方法\r\n\r\n  ```\r\n  $ tar xzf data_aishell.tgz\r\n  $ cd data_aishell/wav\r\n  $ for tar in *.tar.gz;  do tar xvf $tar; done\r\n  ```\r\n\r\n特别鸣谢！感谢前辈们的公开语音数据集\r\n\r\n如果提供的数据集链接无法打开和下载，请点击该链接 [OpenSLR](http://www.openslr.org)\r\n\r\n## ASRT语音识别API客户端调用SDK\r\n\r\nASRT为客户端通过RPC方式调用开发语音识别功能提供了不同平台和编程语言的SDK接入能力，对于其他平台，可直接通过调用通用RESTful Open API方式进行语音识别功能接入。具体接入步骤请看ASRT项目文档。\r\n\r\n|客户端平台|项目仓库链接|\r\n|-|-|\r\n|Windows客户端SDK和Demo|[ASRT_SDK_WinClient](https://github.com/nl8590687/ASRT_SDK_WinClient)|\r\n|跨平台Python3客户端SDK和Demo|[ASRT_SDK_Python3](https://github.com/nl8590687/ASRT_SDK_Python3)|\r\n|跨平台Golang客户端SDK和Demo|[asrt-sdk-go](https://github.com/nl8590687/asrt-sdk-go)|\r\n|Java客户端SDK和Demo|[ASRT_SDK_Java](https://github.com/nl8590687/ASRT_SDK_Java)|\r\n\r\n## ASRT相关资料 \r\n* [查看ASRT项目的Wiki文档](https://wiki.ailemon.net/docs/asrt-doc)\r\n\r\nASRT的原理请查看本文：\r\n* [ASRT：一个中文语音识别系统](https://blog.ailemon.net/2018/08/29/asrt-a-chinese-speech-recognition-system/)\r\n\r\nASRT训练和部署教程请看：\r\n* [教你如何使用ASRT训练中文语音识别模型](\u003chttps://blog.ailemon.net/2020/08/20/teach-you-how-use-asrt-train-chinese-asr-model/\u003e)\r\n* [教你如何使用ASRT部署中文语音识别API服务器](\u003chttps://blog.ailemon.net/2020/08/27/teach-you-how-use-asrt-deploy-chinese-asr-api-server/\u003e)\r\n\r\n关于经常被问到的统计语言模型原理的问题，请看：\r\n\r\n* [统计语言模型：从中文拼音到文本](https://blog.ailemon.net/2017/04/27/statistical-language-model-chinese-pinyin-to-words/)\r\n* [统计N元语言模型生成算法：简单中文词频统计](https://blog.ailemon.net/2017/02/20/simple-words-frequency-statistic-without-segmentation-algorithm/)\r\n\r\n关于CTC的问题请看：\r\n\r\n* [[翻译]使用CTC进行序列建模](\u003chttps://blog.ailemon.net/2019/07/18/sequence-modeling-with-ctc/\u003e)\r\n\r\n更多内容请访问作者的博客：[AI柠檬博客](https://blog.ailemon.net/)\r\n\r\n或使用[AI柠檬站内搜索引擎](https://s.ailemon.net/)进行相关信息的搜索\r\n\r\n## License 开源许可协议\r\n\r\n[GPL v3.0](LICENSE) © [nl8590687](https://github.com/nl8590687) 作者：[AI柠檬](https://www.ailemon.net/)\r\n\r\n## 参考引用本项目\r\n\r\n[DOI: 10.5281/zenodo.5808434](https://doi.org/10.5281/zenodo.5808434)\r\n\r\n## Contributors 贡献者们\r\n\r\n[贡献者页面](https://github.com/nl8590687/ASRT_SpeechRecognition/graphs/contributors)\r\n\r\n@nl8590687 (repo owner)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnl8590687%2FASRT_SpeechRecognition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnl8590687%2FASRT_SpeechRecognition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnl8590687%2FASRT_SpeechRecognition/lists"}