ASRT_SpeechRecognition
基于深度学习的中文语音识别工具,支持DCNN+CTC声学模型与gRPC/HTTP双协议服务化部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于深度学习的中文语音识别工具,支持DCNN+CTC声学模型与gRPC/HTTP双协议服务化部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你对着手机说一句话,几秒后屏幕上精准地出现了你说出的每一个字——这背后,语音识别引擎正在高速运转。而在开源世界里,有一个项目默默走过了十年,为中文语音识别提供了一套完整的从训练到部署的解决方案,它就是 ASRT(Auto Speech Recognition Tool)。
图1:ASRT 项目标题图
ASRT 由独立开发者 nl8590687(AI柠檬)创建并持续维护,项目托管于 GitHub,至今已获得超过 8300 颗星标、113 个 Issue,是中文开源语音识别领域 star 数最高的项目之一。开发者同时维护着配套的文档站点 aielemon.net,提供详细的项目 Wiki、常见问题解答以及预训练模型的下载。
项目诞生于深度学习在语音领域崛起的时代。2016 年前后,CTC(Connectionist Temporal Classification)算法与深度卷积神经网络(DCNN)的结合让端到端语音识别成为可能。ASRT 正是这一技术浪潮的产物,它将复杂的语音识别流程封装为可训练的 Python 工具链,降低了中文语音识别的研究门槛。
ASRT 采用两阶段流水线设计:声学模型 + 语言模型。
声学模型(Speech Model) 负责将原始音频信号转换为汉语拼音序列。输入的 wav 音频最大时长为 16 秒,经过短时傅里叶变换(STFT)或梅尔频谱(Mel-spectrogram)等特征提取后,送入深度卷积神经网络(DCNN)+ 长短时记忆网络(LSTM)+ 注意力机制(Attention)的混合架构,最后通过 CTC 损失函数实现序列到序列的对齐。
语言模型(Language Model) 则基于最大熵隐马尔可夫模型(MaxEnt-HMM),将拼音序列转换为最终的汉字文本输出。这是一种经典的统计语言建模方法,与现代 Transformer-based 语言模型不同,但它在 ASRT 的场景下与声学模型形成了良好的互补。
目前项目中支持多种模型架构,包括 24、25、251 和 251bn 等版本,其中 251bn 是当前性能最佳的版本,采用 BN(Batch Normalization)进一步提升了训练稳定性和识别精度。
ASRT 的训练依赖于 6 个中文语音数据集的组合,总时长约 180 小时:
| 数据集 | 时长 | 说明 |
|---|---|---|
| THCHS30 | 40h | 清华大学开源数据集 |
| ST-CMDS | 100h+ | 自采集数据集 |
| Primewords | 30h+ | 普通话对话数据集 |
| aishell-1 | 178h | 希尔科技开源数据集 |
| aidatatang200 | 200h | 探探开源数据集 |
| MagicData | 755h | 抽检标注对话数据集 |
据项目 README 披露,当前最佳模型在测试集上可达到约 85% 的汉语拼音正确率。需要注意的是,85% 是拼音层面的准确率,从拼音到汉字还需要经过语言模型的转换,实际汉字识别率会受语言模型质量的影响。
训练最低硬件要求为:NVIDIA GPU(显存 11GB+,推荐 1080Ti 及以上) + 16GB 内存 + 500GB 硬盘,软件环境为 Ubuntu 20.04+ / CentOS 7+、Python 3.9-3.11、TensorFlow 2.5-2.11。
ASRT 提供了完整的推理服务化方案。项目内置了两种 RPC 风格的 API 服务器:
asrserver_http.py):基于 Flask + waitress,生产级部署可靠,内置 JSON-RPC 接口asrserver_grpc.py):基于 gRPC + Protocol Buffers,性能更高,适合高并发场景客户端测试脚本 client_http.py 和 client_grpc.py 展示了如何调用服务。项目还提供了配套的客户端 SDK 和 Demo 程序,详见文档站点的下载页面。
官方提供了 Docker 一键部署方式:
docker pull ailemondocker/asrt_service:1.3.0
docker run --rm -it -p 20001:20002 --name asrt-server -d ailemondocker/asrt_service:1.3.0
Dockerfile 采用 Ubuntu 20.04 基础镜像,安装了 CPU 版 TensorFlow(2.5.3),内置 HTTP 和 gRPC 服务启动脚本,开箱即用。
图2:ASRT 项目作者交流微信群二维码
对于不同用户群体,ASRT 的上手难度差异显著:
ASRT 并非没有短板,以下几点值得关注:
技术代际差距:ASRT 核心仍基于 TensorFlow 1.x 时代的 Keras API,架构停留在 DCNN+LSTM+CTC,而当前业界主流已转向 Whisper(基于 Transformer 的多语言端到端模型)。在准确率和泛化能力上,与 Whisper 等新模型存在代际差距。
语言模型相对传统:MaxEnt-HMM 语言模型虽然稳定可靠,但无法利用大规模预训练语言模型的优势。随着 ChatGPT 等大模型的兴起,这一设计显得有些过时。
Docker 镜像仅支持 CPU 推理:官方 Docker 镜像不含 NVIDIA CUDA 依赖,无法利用 GPU 加速推理。对于追求低延迟的生产环境,这是一大限制。
仅支持中文:ASRT 专为中文语音识别设计,不支持多语言,这既是特点也是局限。
尽管存在技术代际差距,ASRT 在中文开源语音识别领域的意义依然重大:
在 Whisper 和 SenseVoice 等新模型占据主流的今天,ASRT 或许不再是准确率最优的选择,但它为中文语音识别领域贡献的,不只是一套代码,更是一段持续十年的技术探索历程。