博客
关于我
三个小白是如何在三个月内搭一个基于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/

你可能感兴趣的文章
Ploly Dash,更新一个Dash应用程序JJJA上的实时人物
查看>>
Ploly烛台的定制颜色
查看>>
Ploly:如何在Excel中嵌入完全交互的Ploly图形?
查看>>
plotloss记录
查看>>
Plotly (Python) 子图:填充构面和共享图例
查看>>
Plotly 中的行悬停文本
查看>>
Plotly 停用 x 轴排序
查看>>
Plotly 域变量解释(多图)
查看>>
Plotly 绘制表面 3D 未显示
查看>>
Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
查看>>
Plotly-Dash:如何过滤具有多个数据框列的仪表板?
查看>>
Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
查看>>
Plotly:如何从 x 轴删除空日期?
查看>>
Plotly:如何从单条迹线制作堆积条形图?
查看>>
Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
查看>>
Plotly:如何使用 Plotly Express 组合散点图和线图?
查看>>
Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?
查看>>
Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
查看>>
Plotly:如何使用 updatemenus 更新一个特定的跟踪?
查看>>
Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
查看>>