博客
关于我
三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的
阅读量:471 次
发布时间:2019-03-06

本文共 997 字,大约阅读时间需要 3 分钟。

最近几个月,我和团队从传统语音通信转型到智能语音识别领域,投入了大量的时间和精力。刚开始接触这个领域时,我们对kaldi这个开源框架的熟悉程度也并不高,但面对老板的任务要求,我们硬着头皮开始尝试。

第一阶段:深入学习kaldi

为了完成任务,我们将学习任务分成了三块:数据准备和MFCC、GMM-HMM模型训练、解码网络创建和解码。在其他两位同学负责特定模块后,我负责整个软件架构的设计和kaldi代码的移植。通过查阅网上资料、阅读kaldi代码以及脚本,我们逐步掌握了在线语音识别的核心流程。

在这一阶段,我们还通过实际操作验证了kaldi中解码网络的运行机制。我们基于thchs30搭建了一个PC上的在线识别系统,实现了音频数据的采集、特征提取和解码。通过这一过程,我们对kaldi框架的运行原理有了更深入的理解,为后续工作打下了坚实的基础。

第二阶段:软件架构设计与代码实现

进入第二阶段后,我们开始着手搭建整个软件架构。我们采用了多线程设计,声音采集和前处理运行在一个线程中,而特征提取和解码则在另一个线程中进行。为了实现高效的数据交互,我们引入了环缓冲机制,确保不同线程之间的数据同步。

在系统架构设计完成后,我开始编写代码。我们选择了webRTC中的前处理模块(如AEC和ANS)来处理噪声问题,并对采样率和帧移进行了优化。为了提高开发效率,我们只移植了kaldi中必要的部分代码,并通过不断试错和调试,最终完成了一个基本功能的在线语音识别系统。

第三阶段:系统调试与性能优化

在完成代码实现后,我们进入了系统调试阶段。首先,我们通过从音频文件读取数据来验证系统的识别效果,发现主要问题集中在模型识别率上。通过对比不同模型的性能,我们最终选择了tri4b作为最终模型,并对训练数据进行了多次优化。

随着模型的不断改进,我们逐步对代码进行了深入调试。我们发现前处理模块在从麦克风采集音频时仍有改进空间,经过加入AGC模块后,音频质量得到了显著提升。最终,我们实现了一个能够实时识别英文数字的在线语音识别系统,虽然识别率还有提升空间,但为后续开发奠定了良好的基础。

这次项目的历程让我深刻体会到从零到一的挑战。虽然我们在过程中遇到过各种问题,但通过不断努力和学习,我们最终完成了一个功能性强的在线语音识别系统。这次经历不仅为我们积累了宝贵的经验,也为团队的后续项目打下了坚实的技术基础。

转载地址:http://nvmfz.baihongyu.com/

你可能感兴趣的文章
Python3 - 在字符串格式化程序参数中使用变量
查看>>
Python3 A*寻路算法实现
查看>>
python3 grpc安装
查看>>
python3 mysql 封装多表_python3 mysql-多表查询
查看>>
python3 mysql8_Python MySQL8.0 错误:authentication plugin 'calling_sha2_password' is not supported....
查看>>
Python关键代码总览!从Zero到Hero必看的考点
查看>>
python3 robotframework+pycharm框架搭建
查看>>
Python3 shutil模块
查看>>
Python关于strftime函数详细解析 附实战代码
查看>>
Python3 tutorial day3
查看>>
python3 week4
查看>>
Python3 创建数组
查看>>
python3 套接字异常(a byte-like object is required not str)
查看>>
python3 实现用户三次输入错误记录黑名单并对该用户登录锁定-day1
查看>>
python3 文本变图片
查看>>
Python3 查看 com 组件的属性
查看>>
python3 案例分享--发邮件
查看>>
python3 模板库_Python3 标准库概览_Python教程_我爱模板网 - 提供下载各种免费建站资源,免费网站模板,免费网页特效,让你爱上建站!...
查看>>
Python3 求最大/小值及索引值 Numpy
查看>>
python3+django使用celery执行某些任务失败的解决方案
查看>>