【语音识别】动态时间规整算法(RTW)语音识别系统【含GUI Matlab源码 341期】

news2025/7/17 17:33:26

⛄一、动态时间规整算法(RTW)语音识别

软件算法主要分为语音信号滤波去噪、预加重、分帧、端点检测、特征参数提取、模式匹配。算法的关键点和难点是特征参数提取和模式匹配。孤立词的语音识别应用程序也是基于MATLAB的GUI进行开发。

1 语音预处理
语音信号是一种典型的非平稳随机信号, 容易受到呼吸气流、环境背景噪声、电流噪声的影响。所以, 在对语音信号进行下一步分析之前, 需要对硬件电路采集回来的语音信号进行预滤波、预加重、分帧加窗、端点检测等。预处理后的语音信号噪声干扰较小, 信号较纯净, 特征参数较稳定, 适合后续的模式识别和匹配分类, 图2是语言信号预处理过程图。

2 语音特征信息提取
经过端点检测后的语音信息再进行特征参数提取和模式匹配研究, 该算法基于线性预测系数LPC模型为基础开展研究, 由于LPC模型对于动态性较强的辅音不严格成立, 语音信号的特征参数鲁棒性不是很好。现阶段在语音识别技术中得到广泛应用的梅尔频率倒谱系数是另一种更加有效的语音特征参数。梅尔 (Mel) 频率倒谱系数是基于人耳听觉特性提出的, 将人耳听觉感知特性与人类语音产生结合起来得到的一种特征参数。由于对输入信号不做假设和约束, 与输入信号特性无关, 因此, 具有较高的鲁棒性。
当声音频率低于1000Hz的时候, 人耳对声音的感知近似满足线性关系;当声音频率高于1000Hz的时候, 人耳对声音的感知不再近似满足线性关系, 而是在对数频率坐标上近似满足线性关系。
MEL频率倒谱系数的计算过程见图3。
通常MFCC系数的第一维C (0) 的能量很大, 在语音识别系统中, 将C (0) 称为能量系数, 不作为倒谱系数。

利用上述方法提取的MFCC参数只能表征语音信号的静态特征, 然而人耳对语音信号的动态特征更为敏感。为了更准确地反映语音动态特征需要进行二次特征提取。二次特征提取是指对原始特征向量进行二次分析, 通常是加权、差分、筛选。在语音识别中, 一阶和二阶差分可以表示特征向量变化速度, 体现了语音的言语和韵律变化, 较好地描述了语音信号的动态特性。因此, 采用一阶和二阶差分倒谱参数来描述语音信号。

3 动态时间规整识别算法
前面的端点检测算法确定了语音信号的起点和终点。假设参考模板为{R1, R2, (43) Rm (43) , RM}, 共M帧;测试语音为{T1, T2, (43) Tn (43) , TN}, 共N帧。由于M≠N, 动态时间规整通过寻找一个时间规整函数m=w (n) , 使得测试语音的时间轴n通过非线性变换函数w映射到参考模板的时间轴m, 并使得该函数满足一下关系式:
在这里插入图片描述
在这里, d[Tn, Rw (n) ]是第n帧测试语音特征矢量与第m帧参考模板特征矢量之间的距离。D就是处于最优时间规整情况下两矢量的累积距离。由于DTW不断地计算两矢量的距离以寻找最优的匹配路径, 所以得到的是两矢量匹配时累积距离最小所对应的规整函数, 这就保证了它们之间存在的最大声学相似性。

基本的DTW算法对端点检测非常敏感, 它要求进行比较的两个模板起点和终点分别对应, 并且对端点检测的精度要求很高, 在背景噪声较大或者语音中存在摩擦音时, 端点检测往往不会非常精准, 端点检测结果可能会对动态规整造成不可预知的误差。此时, 必须将边界约束条件放宽。通常的做法是放宽区域中边界约束条件不再要求起点和终点严格对齐, 这样就解决了由于端点检测算法的缺陷带来的参考模板和测试模板的起点和终点不能分别对齐的问题。实际中, 起点和终点分别在横轴和纵轴两个方向上各放宽2~3帧, 即起点 (1, 1) 、 (1, 2) 、 (1, 3) 、 (2, 1) 、 (3, 1) 处, 终点类推, 就可以在不影响识别结果的前提下解决端点检测缺陷问题。

⛄二、部分源代码


⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]张慧敏.基于动态时间规整算法的语音识别技术研究[J].科技资讯 2017,15(26),28-31

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11标准模板(STL)- 算法(std::lower_bound)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回指向第一个不小于给定…

Hystrix原理

背景 分布式系统环境下&#xff0c;服务间类似依赖非常常见&#xff0c;一个业务调用通常依赖多个基础服务。如下图&#xff0c;对于同步调用&#xff0c;当库存服务不可用时&#xff0c;商品服务请求线程被阻塞&#xff0c;当有大批量请求调用库存服务时&#xff0c;最终可能…

jupyter中安装scala和spark内核详细教程

jupyter中安装scala和spark内核 jupyter中安装scala和spark内核 文章目录jupyter中安装scala和spark内核一、前期准备二、安装&#xff08;一&#xff09;Anaconda1、文件上传到Linux系统上方法一&#xff1a;方法二&#xff1a;使用wget2、安装Anaconda3、激活环境4、jupyter…

一文剖析Linux内核中内存管理

Linux中内存管理 内存管理的主要工作就是对物理内存进行组织&#xff0c;然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 文章推荐&#xff1a; 关于如何快速学好&#xff0c;学懂Linux内核。内含学习路线 需要多久才能看完linux内核源码&#xff1f; ​​…

windows位图绘制(显示位图资源)LoadBitmap、CreateCompatibleDC、BitBlt、StretchBlt

位图绘制 位图相关 光栅图形-记录图像中每一点的颜色等信息。 矢量图形-记录图像算法、绘图指令等。 HBITMAP-位图句柄 位图的适用 1.在资源中添加位图资源&#xff08;在vs中点鼠标增加&#xff09; 2.在资源中加载位图LoadBitmap 3.创建一个与当前DC相匹配的DC&#xff08;内…

Js逆向教程-13浏览器和JS的关系/伪造浏览器环境 )

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-13浏览器和JS的关系/伪造浏览器环境 ) 一、浏览器必然包含几个部分&#xff1a; 显示区域、输入网址、刷新按钮DOMBOM运行…

计算机网络笔记【面试】

计算机网络笔记【面试】前言推荐计算机网络笔记二、基础篇三、HTTP篇四、TCP 篇4.1 TCP 三次握手与四次挥手面试题什么是 TCP &#xff1f;UDP 和 TCP 有什么区别呢&#xff1f;分别的应用场景是&#xff1f;TCP 连接建立TCP 三次握手过程是怎样的&#xff1f;为什么是三次握手…

Aspose.Slides 21.11.0 For .NET Crack

适用于 .NET 的 Aspose.Slides 用于 PowerPoint 文件格式的 .NET API 在 .NET C# 中读取、写入、修改、合并、克隆、保护和转换 PowerPoint 和 OpenOffice 演示文稿&#xff0c;无需任何外部软件。 Aspose.Slides for .NET 是一个用于 PowerPoint 和 OpenOffice 格式的演示文稿…

Linux Mint 的更新管理器现在支持 Flatpak

导读Linux Mint 的更新管理器变得更有用了&#xff01; Linux Mint 的更新管理器是该发行版的一个重要组成部分&#xff0c;它使新用户可以获得更为方便简易的体验。 最近的一次更新 Linux Mint 21 推出了许多改进&#xff0c;包括更新管理器对 Flatpak 的支持。 你只需要更新…

【每周CV论文推荐】初学模型蒸馏值得阅读的文章

欢迎来到《每周CV论文推荐》。在这个专栏里&#xff0c;还是本着有三AI一贯的原则&#xff0c;专注于让大家能够系统性完成学习&#xff0c;所以我们推荐的文章也必定是同一主题的。模型蒸馏是非常重要的模型压缩方法&#xff0c;在学术界研究非常广泛&#xff0c;本次我们来简…

HTML5期末考核大作业网站——卫生与健康HTML+CSS+JavaScript

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

SpringBoot SpringBoot 原理篇 1 自动配置 1.14 自动配置思想

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.14 自动配置思想1.14.1 自动配置原理1 自动配置 1.14 自动配置思…

LeetCode_dijkstra 算法_困难_882.细分图中的可到达节点

目录1.题目2.思路3.代码实现&#xff08;Java&#xff09;1.题目 给你一个无向图&#xff08;原始图&#xff09;&#xff0c;图中有 n 个节点&#xff0c;编号从 0 到 n - 1。你决定将图中的每条边细分为一条节点链&#xff0c;每条边之间的新节点数各不相同。 图用由边组成…

使用 Next.js 搭建 Monorepo 组件库文档

文章为稀土掘金技术社区首发签约文章&#xff0c;14 天内禁止转载&#xff0c;14 天后未获授权禁止转载&#xff0c;侵权必究&#xff01; 阅读本文你将&#xff1a; 使用 pnpm 搭建一个 Monorepo 组件库使用 Next.js 开发一个组件库文档changesets 来管理包的 version 和生成…

Linux进程总结详解(上——初识)

Linux进程 文章目录Linux进程前言——先从硬件和软件谈起一、冯诺依曼体系结构二、操作系统概念一、进程介绍概念进程控制块查看进程通过系统创建进程二、进程状态1.内核代码如下&#xff1a;总结前言——先从硬件和软件谈起 一、冯诺依曼体系结构 定义&#xff1a;数学家冯诺…

【数据结构】二叉树的遍历

目录☀️二叉树的构建☀️二叉树的遍历&#x1f33b;前序遍历&#x1f33b;中序遍历&#x1f33b;后序遍历☀️完整代码展示☀️二叉树的构建 便于理解二叉树的遍历&#xff0c;这里我们手动简单构建一个二叉树&#xff0c;当然&#xff0c;此处二叉树的构建并不是真正二叉树的…

C++类与对象(一)

目录 一、面向过程和面向对象认识 二、类的引入 三、类的定义 类的两种定义方式&#xff1a; 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1 如何计算类对象的大小​​​​​ 7.2 类对象的存储方式 7.3 结…

SpringBoot+Mybaits搭建通用管理系统实例十一:数据缓存功能实现

一、本章内容 使用ehcache实现系统缓存功能,并配置实现mybatis的二级缓存,自定义分页缓存的key,识别实体类型,并根据实体属性的配置,组合生成key值用于标识缓存数据。 完整课程地址二、开发视频 SpringBoot+Mybaits搭建通用管理系统实例三:缓存管理功能实现 三、缓存配置 …

滚动吧,数字

朋友有个需求关于金币滚动效果&#xff0c;网上也有很多教程&#xff1b;但多不太符合他的需求&#xff0c;所有利用空余时间帮他做了一个通用组件。 效果图如下: 1、按照次数和速度进行&#xff0c;对应的滚动效果。 2、缓动效果可以根据自己的情况进行修改。 项目地址&#x…

windows安装VMware虚拟机(附带CentOS7部署)

软件下载 链接&#xff1a;https://pan.baidu.com/s/1Vw2Bilf9uf-EYR6_MR86aA?pwdd2qr 提取码&#xff1a;d2qr VMware安装 通你上述链接下载VMware安装包&#xff0c;没有特别选项&#xff0c;选安装位置无脑下一步安装&#xff0c;安装完成后会提示你输入激活码&#xf…