语音识别的基本概念

语音识别的基本概念​​​​​​​

​​​​​​​

言语是一种复杂的现象。人们很少了解它是如何产生和感知的。天真的想法常常是语音是由单词构成的,而每个单词又由音素组成。不幸的是,现实却大不相同。语音是一个动态过程,没有明确区分的部分。找一个声音编辑器并查看演讲录音并聆听它总是很有用的。例如,这是音频编辑器中的语音录音。

波形

所有现代的言语描述在某种程度上都是概率性的。这意味着单位之间或单词之间没有特定的界限。语音到文本的翻译和其他语音应用从来都不是 100% 正确的。对于通常使用确定性系统的软件开发人员来说,这个想法相当不寻常。它产生了许多仅针对语音技术的问题。

言语结构

在目前的实践中,语音结构的理解如下:

语音是连续的音频流,其中相当稳定的状态与动态变化的状态混合在一起。在这一系列状态中,人们可以定义或多或少相似的声音类别或音素。人们认为文字是由电话构成的,但这肯定不是事实。与电话相对应的波形的声学特性可能会因许多因素而有很大差异 - 电话环境、说话者、讲话风格等。所谓的协同发音使手机听起来与其“规范”的表现截然不同。接下来,由于单词之间的转换比稳定区域提供更多信息,因此开发人员经常谈论双音素- 两个连续电话之间的电话部分。有时开发人员会谈论亚音位单元 - 手机的不同子状态。通常可以找到三个或更多不同性质的区域。

数字三很容易解释:电话的第一部分取决于其前一个电话;中间部分稳定,接下来就看后续手机了。这就是为什么选择用于语音识别的手机通常具有三种状态的原因。

有时,电话是在上下文中考虑的。这种音素在上下文中被称为 三音素甚至五音素。例如,单词“bad”中带有左音素“b”和右音素“d”的“u”听起来与单词中带有左音素“b”和右音素“n”的同一个音素“u”听起来有点不同。 “禁止”。请注意,与双音素不同,它们的波形范围与普通音素相同。它们只是名称不同,因为它们描述的声音略有不同。

出于计算目的,检测三音素的部分而不是整个三音素很有帮助,例如,如果您想为三音素的开头创建一个检测器并在许多三音素之间共享它。声音检测器的全部种类可以用少量不同的短声音检测器来表示。通常我们使用4000个不同的短声检测器来组成三音素检测器。我们将这些探测器称为“senone”。senone 对上下文的依赖可能比左右上下文更复杂。它可以是由决策树或其他方式定义的相当复杂的函数。

接下来,手机构建子词单元,例如音节。有时,音节被定义为“还原稳定实体”。例如,当语音变快时,电话经常会改变,但音节保持不变。此外,音节与语调轮廓相关。还有其他方法可以构建子词 - 基于形态(在形态丰富的语言中)或基于语音。子词经常用于开放词汇语音识别。

子词形成单词。单词在语音识别中很重要,因为它们极大地限制了电话的组合。如果有 40 个音素,平均一个单词有 7 个音素,则必须有 40^7 个单词。幸运的是,即使是词汇量丰富的人在实践中也很少使用超过 20k 的单词,这使得识别方式更加可行。

单词和其他非语言声音,我们称之为填充词(呼吸、嗯、呃、咳嗽),形成话语。它们是暂停之间的独立音频块。它们不一定与句子匹配,句子是更多语义概念。

除此之外,还有一些对话行为,例如轮流,但它们超出了本文档的目的。

识别过程

识别语音的常见方法如下:我们获取一个波形,将其按静音分开,然后尝试识别每个话语中所说的内容。为此,我们希望采用所有可能的单词组合并尝试将它们与音频进行匹配。我们选择最佳的匹配组合。

在这个匹配过程中有一些重要的概念。首先是特征的概念。由于参数数量较多,我们正在尝试对其进行优化。根据语音计算得出的数字,通常通过将语音划分为帧来计算。然后,对于每帧(通常长度为 10 毫秒),我们提取代表语音的 39 个数字。这就是所谓的特征向量。生成参数数量的方法是一个积极研究的主题,但在简单的情况下,它是频谱的导数。

其次,是模型的概念。模型描述了一些收集口语单词的共同属性的数学对象。实际上,对于 senone 的音频模型,它是三个状态的高斯混合 - 简而言之,它是最可能的特征向量。从模型的概念来看,存在以下问题:

  • 该模型对现实的描述效果如何,
  • 考虑到模型的内部问题以及模型是否可以做得更好
  • 如果条件发生变化,模型的适应性如何

语音模型称为隐马尔可夫模型或 HMM。它是描述黑盒通信通道的通用模型。在该模型中,过程被描述为以一定概率相互改变的一系列状态。该模型旨在描述任何顺序过程,例如语音。HMM 已被证明对于语音解码确实非常实用。

第三,它本身就是一个匹配过程。由于将所有特征向量与所有模型进行比较所需的时间比宇宙存在的时间更长,因此通常通过应用许多技巧来优化搜索。在任何时候,我们都会维护最佳匹配变体,并随着时间的推移扩展它们,为下一帧生成最佳匹配变体。

楷模

根据语音结构,语音识别中使用了三种模型进行匹配:

声学模型包含每个声学的声学属性。有包含属性(每个音素最可能的特征向量)的上下文无关模型和上下文相关模型(由具有上下文的 senone 构建)。

语音词典包含从单词到音素的映射。这种映射不是很有效。例如,其中只注明了两到三个发音变体。然而,大多数时候它足够实用。字典并不是将单词映射到音素的唯一方法。您还可以使用通过机器学习算法学习的一些复杂函数。

语言模型用于限制单词搜索。它定义了哪个单词可以跟在先前识别的单词之后(请记住,匹配是一个顺序过程),并通过剥离不可能的单词来帮助显着限制匹配过程。最常见的语言模型是n-gram语言模型;这些包含单词序列的统计数据以及有限状态语言模型;这些通过有限状态自动化定义语音序列,有时带有权重。为了达到良好的准确率,您的语言模型必须在搜索空间限制方面非常成功。这意味着它应该非常擅长预测下一个单词。语言模型通常将所考虑的词汇限制为其包含的单词。这就是名字识别的问题。为了解决这个问题,语言模型可以包含更小的块,例如子词甚至音素。

这三个实体在一个引擎中组合在一起来识别语音。如果您要将引擎应用于其他语言,则需要将此类结构落实到位。对于许多语言,都有声学模型、语音词典,甚至大词汇量语言模型可供下载。

使用的其他概念

格子是表示识别变体的有向图通常,获得最佳匹配是不切实际的。在这种情况下,点阵是表示识别结果的良好中间格式。

N 最佳变体列表就像格子,尽管它们的表示不如格子那么密集。

单词混淆网络(香肠)是格子,其中严格的节点顺序取自格子边缘。

语音数据库- 任务数据库中的一组典型录音。如果我们开发一个对话系统,它可能是用户录制的对话。对于听写系统,它可能正在阅读录音。语音数据库用于训练、调整和测试解码系统。

文本数据库- 为语言模型训练等而收集的样本文本。通常,文本数据库以样本文本形式收集。这种集合的问题是将现有文档(如 PDF、网页、扫描件)放入语音文本形式。也就是说,您需要删除标签和标题,将数字扩展为其口语形式,并扩展缩写。

优化了什么

当开发语音识别时,最复杂的问题是使搜索精确(考虑尽可能多的变体来匹配)并使其足够快而不会运行很长时间。由于模型并不完美,另一个挑战是使模型与语音相匹配。

通常,系统在测试数据库上进行测试,该数据库旨在正确表示目标任务。

使用以下特征:

单词错误率:假设我们有一个原始文本和一个长度为N 个单词的识别文本。I是插入的单词数。D是删除的单词数,S表示替换的单词数。据此,错误率可以计算为

WER = (I + D + S) / N

WER 通常以百分比来衡量。

准确率:与误词率几乎相同,但不考虑插入。

准确度 = (N - D - S) / N

对于大多数任务来说,准确性比 WER 更差,因为插入对于最终结果也很重要。然而,对于某些任务,准确性是解码器性能的合理衡量标准。

速度:假设音频文件的录制时间 (RT) 为 2 小时,解码需要 6 小时。那么速度算作3xRT。

ROC 曲线:当我们谈论检测任务时,存在误报和命中/未命中的情况。为了说明这些,使用了ROC曲线。这样的曲线是描述误报数量与命中数量的关系图。它试图找到误报数量很少且命中数量匹配 100% 的最佳点。

还有其他属性通常不被考虑,但对于许多实际应用仍然很重要。您的首要任务应该是建立这样的措施并在系统开发过程中系统地应用它。您的第二个任务是收集测试数据库并测试应用程序的性能。

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

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

相关文章

linux学习:线程安全(信号量+互斥锁读写锁+条件变量+可重入函数)

目录 信号量 有名信号量 步骤 api 创建、打开一个POSIX有名信号量 对 POSIX 有名信号量进行 P、V 操作 关闭、删除 POSIX 有名信号量 例子 无名信号量 步骤 api 初始化、销毁 POSIX 无名信号量 互斥锁读写锁 例子 两条线程 使用互斥锁来互斥地访问标准输出 在加锁…

1.认识USB协议

目录 前言 在嵌入式场景的具体体现 USB通信协议 总结 前言 在这之前,我们需要认识USB是什么东西,它是一种通信协议,协议只是规定数据的,在物理层面上,它可以有多种表现形式。在我们日常生活中也非常常见&#xff0…

FebHost:什么是挪威.no域名,如何注册?

挪威国家域名介绍 挪威是一个位于北欧的国家,北面和西面是大西洋和北海,东面和南面则与瑞典、芬兰接壤。挪威是一个高度发达的经济体,其政府在经济管理和可持续发展方面也取得了很多成就。挪威的人均GDP在世界范围内排名非常靠前&#xff0c…

【Unity】 使用代码分析(Roslyn Analyzers)实现自动代码审查(Code Review)

索引 Roslyn AnalyzersCode Review自动 Code Review 案例1.public、internal权限的字段建议以大写字母开头。2.private、protected权限的字段建议以下划线小写字母开头。3.不建议直接继承 MonoBehaviour,建议继承至 HTBehaviour。4.不建议使用 Input 判断输入或获取…

命令执行。

命令执行 在该项目的readme中,描述了怎么去调用的flink 通过java原生的runtime来调用flink,下一步就是去看看具体的调用过程了,是否存在可控的参数 找到具体提交命令的类方法CommandRpcClinetAdapterImpl#submitJob() 这里要确定command&am…

C++-6

使用模板类&#xff0c;实现顺序栈。 #include <iostream>using namespace std; template <typename T> class Seqlite {T data[30];int len0; public:void head_inst(T date);void head_dele();void show(); }; template <typename T> …

Phi-3-mini-4k-instruct 的功能测试

Model card 介绍 Phi-3-Mini-4K-Instruct 是一个 3.8B 参数、轻量级、最先进的开放模型&#xff0c;使用 Phi-3 数据集进行训练&#xff0c;其中包括合成数据和经过过滤的公开可用网站数据&#xff0c;重点是 高品质和推理密集的属性。 该型号属于 Phi-3 系列&#xff0c;Mini…

Django框架之ORM操作

一、选择数据库 1、默认数据库 Django默认的数据库是sqlite3数据库 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: BASE_DIR / db.sqlite3,} }2、指定数据库 修改连接到MySQL数据库 DATABASES {default: {ENGINE: django.db.backends.mysql,# 数据库名…

一、安装Redis并运行

Windows安装Redis 1.打开网址下载 下载地址&#xff1a;https://github.com/tporadowski/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择 我选择的是 然后一步步安装 可以参考&#xff1a;https://blog.csdn.net/zbx931197485/article/d…

李廉洋:4.29黄金原油最新走势分析,做单必看策略,

传统定价框架下&#xff0c;黄金兼具货币、商品和金融三重属性&#xff0c;对应货币、抗通胀和避险价值&#xff0c;因此通常与美元、美债利率反向变动。但近期这一定价规律“失灵”了&#xff0c;黄金、利率和美元同涨。三者同涨后&#xff0c;一个月后续转为下跌的频率超过一…

JS - 以工厂模式和原型模式方式建造对象、JS的垃级回收机制、数组的使用

创建对象的方式 使用工厂方法来建造对象 在JS中我们可以通过以下方式进行创建对象&#xff1a; var obj {name:"孙悟空",age:18,gender:"男",sayName:function(){alert(this.name);}};var obj2 {name:"猪八戒",age:28,gender:"男",…

【Java EE】总结12种锁策略以及synchronized的实现原理

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

基于yolov5实时实例分割

是一个结合了最新技术进展&#xff08;State-of-the-Art, SOTA&#xff09;的实时实例分割项目&#xff0c;基于著名的YOLOv5目标检测架构&#xff0c;并对其进行扩展以实现对图像中每个对象实例的精确像素级分割。以下是该项目的中文介绍&#xff1a; YOLOv5&#xff1a; YOL…

Java后端利用百度地图全球逆地理编码,获取地址

声明&#xff1a;本人是在实习项目的时候遇到的问题 一.使用Api分为四步骤全球逆地理编码 rgc 反geo检索 | 百度地图API SDK 步骤1,2自行完成 接下来去获取AK 二.申请AK 登录百度账号 点击创建应用&#xff0c;选择自己想用的服务&#xff0c;我只单选了逆地理编码&#xff…

go语言实现简单认证样例

目录 1、代码实现样例 2、postman调用 1、代码实现样例 package mainimport ("net/http""strings""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var (// 密钥&#xff0c;用于验证 JWT 令牌signingKey []byte("…

【1762】java校园单车投放系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java校园单车投放管理系统是一套完善的java web信息管理系统 采用serlvetdaobean&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#…

C语言基础知识笔记——万字学习记录

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要参考浙大翁恺老师的C语言讲解以及其他博主的C语言学习笔记&#xff0c;进而梳理C语言的基础知识&#xff0c;为后续系统性学习数据结构和其他语言等知识夯实一定的基础。&#xff08;其他博主学习笔记的链接包括&#x…

网络服务SSH-远程访问及控制

一.SSH远程管理 1.SSH介绍 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;最早是由芬兰的一家公司开发出来&#xff0c;并且在IETF &#xff08;Internet Engineering Task Force&#xff09;的网络草案基础上制定而成的标准协议。主要用来实现字符…

案例-部门管理-删除

黑马程序员JavaWeb开发教程 文章目录 一、查看页面原型二、查看接口文档三、开发1、Controller2、Service&#xff08;1&#xff09;service接口层&#xff08;3&#xff09;service实现层 3、Mapper4、Postman 一、查看页面原型 二、查看接口文档 三、开发 1、Controller 因…

短视频账号“四部定位法”,让流量噌噌上涨 沈阳短视频剪辑培训

在当下短视频的风潮中&#xff0c;企业纷纷涉足这一领域&#xff0c;希望通过短视频平台吸引用户、提升品牌知名度、促进销售转化。 然而&#xff0c;面对海量的内容和激烈的竞争&#xff0c;企业如何才能在短视频领域脱颖而出&#xff1f; 在企业涉足短视频领域之前&#xf…