当前位置: 首页 > article >正文

基于MATLAB的人声音特征的识别和控制设计

语音识别控制技术是人机交流技术重要的研究方向,也是人工智能的基础技术,这项技术目前已经广泛运用于各个领域。

本次设计内容是一个语音识别控制系统,具体是利用MATLAB调用笔记本电脑的声卡采集声音的功能,采集人说话的语音信号,再对语音信号进行预处理、端点检测、特征参数提取等操作。如果是在模板训练过程就将参数储存起来,保存为模板语音,如果是在语音识别过程中,有待测语音输入时用DTW(Dynamic Time Warping)的模板匹配算法将语音信号参数与模板参数进行匹配。该算法是为了解决发同一音而发音时间长短的不同的问题,采用对输入语音信号进行伸长或缩短直到与标准模式的长度一致,将模板参数和待识别参数按照一定的规整路径进行一个最小距离计算,找出最佳的匹配模板。匹配的结果通过红外模块从笔记本发往单片机,让单片机控制电机的启动停止,转动速度等,其中转速的控制部分是利用的PID(Proportion Integral Derivative)控制算法。

为了研究语音识别,本论文做了大量的模板训练,总共训练了五个动作词汇。然后逐一进行了测试,识别率良好,系统的响应时间在规定的范围内,系统的抗噪性能比较好,控制也比较稳定,实现了课题要求。

2.1 语音识别方式选择

目前语音识别的研究方向有3个:基于声道模型和语音知识的方法、利用人工神经网络的方法以及模版匹配的方法[7]。其中,方法1需要建立人类发音的数学模型,让计算机能够听懂人类的话。方法2是模仿人的大脑的神经活动,学习一门新的语音,从字到词语,从词语到句子,需要大量的数据库。方法3是模版匹配的方法,这种方法是目前使用得最多的方法,而且其算法相对简单,所以本次设计选择的是模板匹配方法。在模板匹配中也有多种匹配方式:

① 矢量量化方法(VQ)

矢量量化是将人的语音样品训练变为码本,辨别中把样品语音遵循训练得到的码本展开编码,其确定标准为量化形成的失真度。使用矢量量化进行语音识别,具有速度非常快的优势,并且辨别准度也很高。

② 隐马尔可夫模型方法(HMM)

隐马尔可夫模型技术有着非常广泛的使用。它将语音转换成为一些符号,并且把这些符号的序列合成看作随机的过程,此种符号在导出时表示为系统发声状态。简单地说HMM模型就是关于概率矩阵的一个数学模型,从已知推断未知。

③ 动态时间规整方法(DTW)

说话人信息不但存在稳定性原因(发声的器官构成与惯性),并且还存在变化性原因(语音速度及其声调,发声轻重与规律)。把辨别模板和参考模板在时间一致下进行对比,然后按照一定的距离检测出这两块模板之间的相同程度[5]

以上三种方法,各有优点缺点,其中矢量量化方法主要是用于说话人识别的场合,而这次的设计不针对特定的人,而是识别语音的内容,所以不合适使用。隐马尔可夫模型建立起数学模型比较复杂,对出初学者而言难度有点大。所以综合以上,最终选择用动态时间规整(DTW)算法来实现本次设计。选择动态时间规整(DTW)算法的主要原因是,算法相对容易理解,在人语音识别领域应用比较广泛,比其他几种方法更容易编程实现。最终的识别率来看也是比较理想的,在软件设计一章将会对此做详细介绍。

2.2 语音识别/控制系统总体设计

语音识别就是指通过一定的数据信号处理,让机器理解说话人的意思。识别语音内容是从许多个词汇中分辨出该词汇的内容,是一种一对多的关系,这种技术利用的方式一般为模式匹配。语音控制就是将识别出的命令通过特定的一种通讯方式发送到下位机,实现对下位机单片机的控制,从而达到语音识别的目的。

要实现语音识别控制,就必须先对样本进行训练,训练后才可以达到识别的目的。样品训练一般表示为对数据的挖掘,通过对大量的样品训练,再从中抽取其实质参数。模式匹配即根据一种特殊的算法,让待识别的样本与训练后的样本的特征参数进行相似度的计算分析,最后得到一个最佳匹配。

语音识别/控制系统,显然包括了识别和控制两个部分,系统的主要组成部分包括上位机和下位机两个部分:

上位机模块:上位机主要是笔记本,笔记本声卡采集语音信息,利用MATLAB的数据处理功能首先对声音信号进行预处理、特征参数提取,语音规整,然后利用模板匹配算法进行语音识别,最后转化为指令发送到下位机,上位机和下位机之间的通讯方式为红外通讯。

下位机模块:下位机主要是基于单片机,接收到上位机信号后,单片机开始运行,控制被控对象完成相应的动作,本次控制对象对直流电机,通过语音信号控制电机的正反转,加速、减速、停止动作。


http://www.kler.cn/a/384481.html

相关文章:

  • 03.DDD六边形架构
  • 新型智慧城市顶层设计方案(118页word)
  • 动态规划理论基础和习题【力扣】【算法学习day.22】
  • 基于STM32的实时时钟(RTC)教学
  • nuxt3安装pinia报错500[vite-node] [ERR_LOAD_URL]问题解决
  • 如何通过网络加速器提升TikTok创作与观看体验
  • 【go从零单排】go中的三种数据类型array、slices、maps
  • 力扣排序455题(分发饼干)
  • 回归预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入单输出回归预测
  • JavaEE初阶--servlet篇(三)HttpServlet/response/request对应方法使用
  • uniApp之uni-file-picker使用踩坑
  • 【C++】ROS:rosboard前端可视化工具配置使用
  • 登录鉴权 - 2024最新版前端秋招面试短期突击面试题【100道】
  • Python代码解析:处理JSON数据并导入Neo4j数据库
  • 基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)
  • 使用 Cypher 查询语言在 Neo4j 中查找最短路径
  • 需求分析管理
  • 【系统架构设计师】2023年真题论文: 论边云协同的设计与实现(包括解题思路和素材)
  • Dependency: androidx.webkit:webkit:1.11.0-alpha02. 问题
  • 【万字总结】数据结构常考应用大题做法画法详解_树_哈希表_图_排序大总结
  • 【金融风控】相关业务介绍及代码详解
  • (vue3)在Pinia Store中正确使用Vue I18n
  • 掌握Rust模式匹配:从基础语法到实际应用
  • HarmonyOS NEXT 应用开发实战(九、知乎日报项目详情页实现详细介绍)
  • 【MATLAB源码-第210期】基于matlab的OFDM电力线系统仿真,不同梳状导频间隔对比。三种信道估计,三种插值误码率对比
  • 市场营销应该怎么学?