语音识别的基本概念

news2024/11/26 23:38:27

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

​​​​​​​

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

波形

所有现代的言语描述在某种程度上都是概率性的。这意味着单位之间或单词之间没有特定的界限。语音到文本的翻译和其他语音应用从来都不是 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.coloradmin.cn/o/1631956.html

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

相关文章

【Unity动画系统】详解Root Motion动画在Unity中的应用(二)

Root Motion遇到Blend Tree 如果Root Motion动画片段的速度是1.8,那么阈值就要设置为1.8,那么在代码中的参数就可以直接反映出Root Motion的最终移动速度。 Compute Thresholds:根据Root Motion中某些数值自动计算这里的阈值。 Velocity X/…

公共代理IP与独享代理IP的区别是什么?

IP地址,是网络世界中设备互相识别的重要线索,当我们谈论相关话题的时候,总会听说“公共IP”和“独享IP”这两个词。作为用户,我们该如何选择更适合自己的IP资源呢,两者又有何区别? 承载用户量:公…

ArcGIS小技巧—基于DEM的河网提取

1、使用DEM数据提取河流水系网络 原始DEM数据中存在误差,或喀斯特地貌等真实地形情况,将引起DEM数据中存在凹陷区域。 在进行水流方向的计算上,如果有洼地会造成错误,因此我们需要进行填洼处理,获得相对准确的DEM数据…

ULTIMATE VOCAL REMOVER V5 for Mac:专业人声消除软件

ULTIMATE VOCAL REMOVER V5 for Mac是一款专为Mac用户设计的人声消除软件,它凭借强大的功能和卓越的性能,在音乐制作和后期处理领域崭露头角。 ULTIMATE VOCAL REMOVER V5 for Mac v5.6激活版下载 这款软件基于深度神经网络,通过先进的训练模…

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展?

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展? 在当今企业的数字化转型中,服务器的部署和管理成为了保证业务连续性和拓展性的关键。尤其对于站群服务器来说,随着企业业务的增长和市场的扩展,需要从较小规模的253个IP地址…

Python列表:全面指南

一、引言 1.1 Python列表简介 在Python编程中,列表(List)是最常用的数据结构之一,它是一个有序的集合,可以容纳任意类型的对象,如数字、字符串甚至其他列表。列表的特点是可变性,这意味着你可…

CAPS Wizard for Mac:打字输入辅助应用

CAPS Wizard for Mac是一款专为Mac用户设计的打字输入辅助应用,以其简洁、高效的功能,为用户带来了全新的打字体验。 CAPS Wizard for Mac v5.3激活版下载 该软件能够智能预测用户的输入内容,实现快速切换和自动大写锁定,从而大大…

看来我对PYTHON的感觉没错,谷歌也已经受不了了

看来不是我一个人感觉PYHTON不完美了,老东家谷歌已经受不了,直接让走人! 你们用Python真的感觉那么好用吗? 你们用Python真的感觉那么好用吗(二)

实习面试算法准备之图论

这里写目录标题 1 基础内容1.1 图的表示1.2图的遍历 2 例题2.1 所有可能的路径 1 基础内容 图没啥高深的,本质上就是个高级点的多叉树而已,适用于树的 DFS/BFS 遍历算法,全部适用于图。 1.1 图的表示 图的存储在算法题中常用邻接表和邻接矩…

基于Albedo-NDVI特征空间遥感荒漠化信息提取

1. 背景 土地荒漠化是指包括气候变异和人类活动在内的种种因素造成的干旱半干旱和亚湿润干地区的土地退化。及时准确地掌握土地荒漠化发生发展情况是有效防止和治理土地荒漠化的基本前提。目前遥感技术在土地荒漠化监测中起到了不可替代的作用。使用遥感影像数据可以提取土地荒…

Ubuntu20.04 [Ros Noetic]版本——在catkin_make编译时出现报错的解决方案

今天在新的笔记本电脑上进行catkin_make的编译过程中遇到了报错,这个报错在之前也遇到过,但是,我却忘了怎么解决。很是头痛! 经过多篇博客的查询,特此解决了这个编译报错的问题,于此特地记录!&…

Java数组深度剖析:掌握数据结构的基石

引言 在编程世界中,数仅仅是一种数据类型,它是理解内存分配、多维数据处理以及性能优组像是构建复杂数据结构的基本积木。它们简洁、高效,是管理元素集的首选方式。在Java中,数组不化的关键。 这篇文章致力于深入探讨Java数组的各…

PhotosCollage for Mac:优雅且实用的照片拼贴软件

PhotosCollage for Mac是一款优雅且实用的照片拼贴软件,为Mac用户提供了一个便捷、高效的平台,以创建精美、个性化的照片拼贴作品。 PhotosCollage for Mac v1.4.1激活版下载 该软件界面简洁直观,操作便捷。用户只需将想要拼贴的照片拖入“照…

java案例-服务端与客户端(传输对象)

需求 代码 SysUser 用户类Operation 操作类Client 客户端Server 服务端ServerReaderThread 服务端线程类 SysUser 用户类 需要实现Serializable 方便序列化,传输对象 public class SysUser implements Serializable {private String username;private String passwo…

欧科云链:为什么减半对比特币生态的影响正在逐步“减弱”?

出品|OKG Research 作者|Jason Jiang 欧科云链OKLink数据显示,比特币于区块高度840000(北京时间2024年4月20日8:09)成功完成第四次减半,比特币挖矿奖励正式由6.25BTC减少至3.125BTC。此次减半之后&#x…

RT-Thread之线程管理(线程的基础概念和使用)

文章目录 前言一、RT-Thread线程的概念二、线程的创建与删除2.1用户线程和系统线程2.2线程控制块2.3线程栈2.4入口函数 三、线程的创建和启动3.1线程创建的种类3.2动态创建线程3.3静态创建线程 总结 前言 本篇文章来给大家讲解RT-Thread中的线程管理,线程管理是属于…

GD32E103C8T6 封装LQFP-48 GigaDevice(兆易创新) 单片机

GD32E103C8T6 是由GigaDevice(兆易创新)公司生产的一款基于ARM Cortex-M4内核的32位MCU(微控制器)。以下是GD32E103C8T6的一些主要功能和参数介绍: 主要功能: 高性能ARM Cortex-M4内核: 采用120MHz的ARM …

Matlab实现CNN-BiLSTM模型,对一维时序信号进行分类

1、利用Matlab2021b训练CNN-BiLSTM模型,对采集的一维时序信号进行分类二分类或多分类 2、CNN-BiLSTM时序信号多分类执行结果截图 训练进度: 网络分析: 指标变化趋势: 代码下载方式(代码含数据集与模型构建&#xff0…

iview 自定义项求和的方法和错误点

这是iview自定义某几项参数合计的方法,其实是蛮简单的,很多人自定义合计的时候,老是会不知道怎么处理除了需要合计的几项的其他项,其实不需要管,不需要合计的项直接返回空就好了,需要的就在计算的里面做key…