端到端语音识别

news2024/9/22 1:17:31

端到端语音识别

一.端到端语音识别的动机

1.传统语音识别语言模型训练

在这里插入图片描述

2.传统语音识别缺点
  • 流程复杂且繁琐: 传统的语音识别系统涉及的流程非常多且复杂,从数据准备、模型训练到最终的系统集成,每个步骤都需要仔细处理。
  • 入门门槛高: 要掌握语音识别技术,特别是传统方法,对学习者的要求很高,需要掌握大量的基础知识和相关技术。
  • 多模型结构: 传统的语音识别系统通常包含三个主要模型:声学模型、语言模型和发音模型。每个模型需要单独训练,并且相互配合才能实现语音识别功能。
  • 模型翻倍问题: 如果使用区分性训练方法,这些模型的训练复杂度将翻倍,因为需要进行更多的训练和调优工作,以确保模型能够区分不同的语音特征。
  • 专业知识需求: 针对特定语言定义发音字典和音素集需要大量的专业知识。这项工作不仅需要深入理解该语言的发音规则,还需要耗费大量时间进行手工制作和验证。
  • 耗时的定义和调试: 发音字典和音素集的定义过程非常耗时。为了保证语音识别系统的准确性,这些资源需要经过反复的定义、测试和调整。
3.什么是端到端语音识别?

使用单个序列到序列模型,直接将输入声学特征序列映射到文本。

输入特征

目前,端到端语音识别系统常用的输入特征是滤波器组频谱(filterbank,简称 fbank)。fbank 特征的处理过程包括以下几个步骤:

  1. 预加重:对原始语音信号进行预加重,以增强高频成分,改善信号的频谱特性。
  2. 分帧:将语音信号分成多个小的帧,每帧通常为20-40毫秒,以便进行短时分析。
  3. 加窗:对每个帧应用窗函数(如汉明窗),以减少频谱泄漏现象。
  4. 短时傅里叶变换(STFT):对每个加窗后的帧进行短时傅里叶变换,得到频谱图。
  5. Mel 滤波:应用 Mel 滤波器组,将频谱图转换为 Mel 频率尺度。
  6. 去均值:对滤波后的特征进行去均值处理,以减少噪声和冗余信息。

通常,一个 fbank 向量对应10毫秒的语音信号,因此一段十秒的语音可以生成大约1000个 fbank 向量来描述该语音。除了 fbank,梅尔频率倒谱系数(MFCC)以及原始波形(raw waveform)也在一些研究论文中被用作输入特征。然而,目前主流的方法仍然以 fbank 作为主要输入特征。

输出特征

端到端语音识别系统的输出可以是多种形式,包括:

  1. 字母:将语音转换为字母序列,适用于拼音文字和某些特定应用场景。
  2. 子词(subword):将语音转换为子词序列,这种方法在处理未登录词(OOV)和词汇丰富的语言时具有优势。
  3. :将语音直接转换为词序列,这种方法适用于词汇量较为固定和受限的应用场景。

在这里插入图片描述

二.Sequence-to-Sequence

该模型广泛应用于机器翻译和语音识别等任务。其主要优点在于输入和输出序列不需要等长,并且两者的长度都是可变的。

1.模型结构

该模型采用了序列到序列(Sequence-to-Sequence,简称 seq2seq)结构,包含两个循环神经网络(RNN),分别用于编码和解码:

  1. 编码器(Encoder):编码器网络将输入序列转换为一系列的隐状态表示。这些隐状态总结了输入序列中的信息,并将其传递给解码器。
  2. 解码器(Decoder):解码器网络利用编码器传递的隐状态逐步生成输出序列。解码过程一直持续到生成特殊的结束符(END)为止,从而实现变长的输出。

在这里插入图片描述

2.信息传递与瓶颈(橙色方框标记所示)

在传统的 seq2seq 模型中,编码器和解码器之间的信息传递依赖于编码器最后一个时刻的隐状态。这个隐状态被用作解码器的初始状态,从而指导生成输出序列。然而,这种方法存在明显的瓶颈:

  • 信息丢失:如果输入序列较长,编码器最后一个隐状态可能无法有效地包含整个输入序列的全部信息,从而导致信息丢失和翻译准确性的下降。

三.Attention机制

为了缓解上述瓶颈问题,可以引入注意力机制(Attention)。注意力机制的核心思想是让解码器在生成每个输出时刻,可以动态地“关注”输入序列的不同部分,而不是仅仅依赖编码器的最后一个隐状态。具体而言:

  1. 动态权重:解码器在生成每个输出时,通过计算与输入序列各个时刻隐状态的相似度,分配不同的权重。
  2. 加权求和:这些权重用于对输入序列的隐状态进行加权求和,从而生成一个上下文向量,提供给解码器使用。
  3. 灵活聚焦:解码器可以根据当前生成的输出动态调整对输入序列的关注点,从而更精确地捕捉输入序列中的关键信息。

在这里插入图片描述

通过注意力机制,seq2seq 模型能够更有效地处理长序列输入,使得输出的每一步可以只关注部分输入,提高翻译和识别的准确性和鲁棒性。

四.自注意力机制(Self-Attention)

自注意力机制(Self-Attention)是一种在深度学习中广泛应用的技术,特别是在处理序列数据(如自然语言处理、语音识别等)方面。它的核心思想是让序列中的每个元素都能够关注序列中所有其他元素,从而捕捉到全局信息。下面是对自注意力机制的详细介绍:

1. 概念与基本原理

自注意力机制的目的是为序列中的每个元素分配一个上下文向量,该向量是序列中所有其他元素的加权求和。具体步骤如下:
在这里插入图片描述

图片注释:K 和 V 一般是同一个向量或矩阵 , 当K、Q、V 是同一个向量或矩阵时,即是self-attention

  • 查询(Query)、键(Key)和值(Value)向量:对于序列中的每个元素,通过线性变换生成查询向量 Q Q Q、键向量 K K K 和值向量 V V V。这三个向量用于计算注意力权重和最终的上下文表示。

  • 计算注意力得分:通过计算查询向量 Q Q Q 和键向量 K K K 之间的点积,得到注意力得分。这些得分反映了序列中一个元素对其他元素的关注程度。
    A t t e n t i o n S c o r e = Q ⋅ K T Attention Score = Q \cdot K^T AttentionScore=QKT

  • 归一化注意力得分:将注意力得分通过 Softmax 函数归一化,使得得分总和为1,表示不同元素之间的权重分布。
    A t t e n t i o n W e i g h t s = Softmax ( Q ⋅ K T ) Attention Weights= \text{Softmax}(Q \cdot K^T) AttentionWeights=Softmax(QKT)

  • 加权求和值向量:使用归一化后的注意力权重对值向量 V V V​ 进行加权求和,得到每个元素的上下文表示。
    C o n t e x t V e c t o r = A t t e n t i o n W e i g h t s ⋅ V Context Vector=Attention Weights⋅V ContextVector=AttentionWeightsV

2. 计算过程

以一个长度为 n n n 的序列为例,自注意力机制的计算过程如下:

  1. 输入表示:输入序列表示为 X = [ x 1 , x 2 , … , x n ] X = [x_1, x_2, \dots, x_n] X=[x1,x2,,xn]
  2. 线性变换:将输入序列通过线性变换,得到查询矩阵 Q Q Q、键矩阵 K K K 和值矩阵 V V V​。

Q = X W Q , K = X W K , V = X W V Q=XW_Q,K=XW_K,V=XW_V Q=XWQ,K=XWK,V=XWV

其中, W Q W_Q WQ W K W_K WK W V W_V WV 是可训练的权重矩阵。

  1. 计算注意力得分

Attention Scores = Q K T d k \text{Attention Scores} = \frac{QK^T}{\sqrt{d_k}} Attention Scores=dk QKT

其中, d k d_k dk 是键向量的维度,用于缩放点积,防止值过大。

  1. 归一化
    Attention Weights = Softmax ( Q K T d k ) \text{Attention Weights} = \text{Softmax} \left( \frac{QK^T}{\sqrt{d_k}} \right) Attention Weights=Softmax(dk QKT)

  2. 加权求和
    C o n t e x t V e c t o r s = A t t e n t i o n W e i g h t s ⋅ V Context Vectors=Attention Weights⋅V ContextVectors=AttentionWeightsV

五.多头注意力(Multi-Head Attention)

为了进一步增强模型的能力,自注意力机制通常采用多头注意力机制(Multi-Head Attention)。具体做法是将查询、键和值向量分成多个头(多个子空间),分别计算注意力,然后将这些头的输出拼接起来。

在这里插入图片描述

1.头的分割:将查询、键、值向量分成 h h h 个头。
Q i = X W Q i , K i = X W K i , V i = X W V i for i = 1 , … , h Q_i = XW_{Q_i}, \quad K_i = XW_{K_i}, \quad V_i = XW_{V_i} \quad \text{for} \quad i = 1, \dots, h Qi=XWQi,Ki=XWKi,Vi=XWVifori=1,,h
2.每个头的注意力计算
Attention Weights i = Softmax ( Q i K i T d k ) \text{Attention Weights}_i = \text{Softmax} \left( \frac{Q_iK_i^T}{\sqrt{d_k}} \right) Attention Weightsi=Softmax(dk QiKiT)

Context Vectors i = Attention Weights i ⋅ V i \text{Context Vectors}_i = \text{Attention Weights}_i \cdot V_i Context Vectorsi=Attention WeightsiVi

3.拼接输出:将所有头的上下文向量拼接起来,进行线性变换。
Multi-Head Attention Output = Concat ( Context Vectors 1 , Context Vectors 2 , … , Context Vectors h ) W O \text{Multi-Head Attention Output} = \\ \text{Concat}(\text{Context Vectors}_1, \text{Context Vectors}_2, \dots, \text{Context Vectors}_h)W_O Multi-Head Attention Output=Concat(Context Vectors1,Context Vectors2,,Context Vectorsh)WO

其中, W O W_O WO 是拼接后的线性变换矩阵。

六.Transformer

详见:动手学深度学习(Pytorch版)代码实践 -注意力机制-Transformer_pytorch注意力机制代码实现-CSDN博客

七.Speech Transformer

如何把Transformer应用于 端到端语音识别呢?

No big deal , just change input.

在这里插入图片描述

八.Connectionist Temporal Classification (CTC)

Connectionist Temporal Classification (CTC)是一种专为处理序列到序列任务而设计的损失函数和解码方法,特别适用于输入和输出序列长度不对齐的情况,例如语音识别和手写字符识别。

1. 核心思想

CTC的核心思想是通过允许网络在每个时间步生成一个输出符号或特殊的空白符号(blank token),来解决输入和输出序列长度不一致的问题。最终的输出序列是通过移除所有空白符号和重复的符号得到的。

2. CTC解码
  • 空白符号:CTC引入一个特殊的空白符号 ∅ \varnothing ,用来表示非输出时刻。
  • 重复符号处理:在CTC解码过程中,连续的重复符号被压缩为一个符号。例如,输出序列"aa–bb-“(其中”-“表示空白符号)将被解码为"ab”。
3. CTC损失函数

CTC损失函数计算输入序列与目标序列的对齐概率,允许多个可能的对齐方式。CTC通过动态规划计算所有可能对齐的总概率,从而优化模型参数。
CTC Loss = − log ⁡ p ( y ∣ x ) \text{CTC Loss} = -\log p(y|x) CTC Loss=logp(yx)

其中, p ( y ∣ x ) p(y|x) p(yx) 表示给定输入序列 x x x 生成目标序列 y y y 的概率。

在这里插入图片描述

4. 优势
  • 处理变长序列:CTC能够处理输入和输出序列长度不一致的情况,特别适合语音识别等任务。
  • 无需精确对齐:CTC不需要在训练数据中提供精确的输入输出对齐信息,只需要提供目标序列即可。
  • 实时解码:CTC可以在不进行后处理的情况下生成输出序列,适用于实时应用。

九.RNN-Transducer

RNN-Transducer (Recurrent Neural Network Transducer) 是一种用于端到端序列到序列建模的神经网络架构,特别适合处理输入和输出序列长度不对齐的问题。它是对Connectionist Temporal Classification (CTC) 的扩展,结合了序列建模和对齐的功能。

1. 核心组件

RNN-Transducer由三个主要组件组成:

  • 编码器(Encoder):编码器将输入序列(如语音特征)转换为隐藏状态表示。通常使用RNN、LSTM或GRU等循环神经网络来实现。

  • 预测网络(Prediction Network):预测网络根据先前已生成的输出符号序列生成隐藏状态表示。这个网络通常也是一个RNN。

  • 联合网络(Joint Network):联合网络结合编码器和预测网络的隐藏状态,生成每个时间步的输出概

    在这里插入图片描述

2.优势
  • 处理变长序列:能够处理输入和输出序列长度不一致的问题。
  • 联合对齐和建模:将对齐过程和序列建模结合在一起,提高了模型的灵活性和性能。
  • 实时解码:适用于实时应用,可以在解码过程中生成输出序列。
3.RNN-T相比其他端到端模型的优点

流式语音识别:

  • 实时处理:RNN-T能够在使用单向编码器时进行流式语音识别,这意味着它可以在获取到一帧输入时立即生成相应的输出。
  • 逐帧解码:具体而言,RNN-T可以在每一帧输入数据到达时解码一步,而不需要等待整个输入序列结束。

与其他模型的对比:

  • LAS(Listen, Attend and Spell):LAS模型依赖于注意力机制,需要在解码时访问整个输入序列,因此只能在整句话输入完成后才能进行解码。这限制了其在实时应用中的使用。
  • Speech Transformer:类似于LAS,Speech Transformer也需要在解码时处理整个输入序列,因此也无法进行流式解码。

十.总结

1. 端到端语音识别的动机

端到端语音识别旨在简化传统ASR(Automatic Speech Recognition)的流程,通过将多个复杂的模块(如声学模型、语言模型、发音模型)整合到一个统一的神经网络中,从而简化训练和推理过程。

2. Sequence-to-Sequence & Attention
  • Sequence-to-Sequence模型:这种模型使用编码器-解码器结构,将输入序列编码成固定长度的向量,再由解码器生成输出序列。
  • Attention机制:引入注意力机制,使得解码器在生成每个输出符号时,可以动态地关注输入序列的不同部分,从而捕捉全局信息。
3. Listen, Attend and Spell (LAS)
  • 优点:没有输出独立性假设,能够通过Attention机制捕捉输入序列的全局信息。
  • 缺点:无法直接支持流式语音识别,因为LAS需要完整的输入序列才能开始解码;此外,RNN难以并行处理,训练速度较慢。
4. Speech Transformer
  • 优点:自注意力机制(self-attention)易于并行处理,训练速度快,效果好。
  • 缺点:对超参数有时非常敏感,需要仔细调参以获得最佳性能。
5. CTC (Connectionist Temporal Classification)
  • 优点:适用于输入与输出具有单调关系的任务,无需对齐标注,能够直接处理变长序列。
  • 缺点:输出独立性假设,即每个时间步的输出是独立的,可能导致性能限制;通常需要语言模型(LM)来提高性能。
6. RNN-Transducer
  • 优点:天然支持流式语音识别,可以在每个时间步进行解码,适用于实时应用场景。

  • 缺点:Loss计算不易实现,涉及复杂的动态规划算法;一般需要使用开源库来实现。
    (Connectionist Temporal Classification)

  • 优点:适用于输入与输出具有单调关系的任务,无需对齐标注,能够直接处理变长序列。

  • 缺点:输出独立性假设,即每个时间步的输出是独立的,可能导致性能限制;通常需要语言模型(LM)来提高性能。

6. RNN-Transducer
  • 优点:天然支持流式语音识别,可以在每个时间步进行解码,适用于实时应用场景。
  • 缺点:Loss计算不易实现,涉及复杂的动态规划算法;一般需要使用开源库来实现。

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

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

相关文章

WEB前端07-DOM对象

DOM模型 1.DOM概念 文档对象模型属于BOM的一 部分,用于对BOM中的核心对象document进行操作,它是一种与平台、语言无关的接口,允许程序和脚本动态地访问或更新HTML、XML文档的内容、结构和样式,且提供了一系列的函数和对象来实现…

近几天,北京大学副校长、教务长王博亲自为藏族女孩送上北京大学首封录取通知书!

藏族女孩代吉永措收到了北京大学2024年首封本科录取通知书。她来自青海湟川中学,已被北京大学历史学科强基计划录取,即将就读于北京大学历史学系。北京大学副校长、教务长王博亲自为代吉永措送上了这份录取通知书,并与她亲切交流了未来的学习…

Linux介绍和文件管理

一Linux的起源 1.Unix Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核 2.Minix MINIX是一种基于微 内核架构的类UNIX计算机操作系统,由 Andrew S. Tanenbaum发明 3.Linux内核 芬兰赫尔辛基大学的研究生Linus Torvalds基于Gcc、 ba…

注册安全分析报告:OneApm

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

C语言 ——— 打印水仙花数

目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数,其各位数字的n次方之和等于该数本身 如:153 1^3 5^3 3^3,则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…

万字 AI 干货及感悟分享

最近一直在研究 AI Agent 在零代码平台中的应用, 特地研究并总结了一份AI学习的干货, 方便大家快速理解LLM, 并熟悉主流的AI大模型框架, 以及如何基于AI, 来改善我们传统的工作模式. 上面是本文的核心大纲, 接下来开始我的分享和总结. LLM介绍 1. LLM概念 大语言模型&#x…

【安当产品应用案例100集】001 — 基于UKEY的文件加密流转

随着企业信息化程度的不断提高,数据已成为企业最重要的资产之一。然而,数据泄露的风险也随之增加。数据泄露可能导致企业商业机密泄露、客户隐私泄露、经济损失以及法律诉讼等一系列严重后果。因此,保护数据安全已成为企业不可忽视的重要任务…

互联网行业的产品方向(二)

数字与策略产品 大数据时代,数据的价值越来越重要。大多数公司开始对内外全部数据进行管理与挖掘,将业务数据化,数据资产化,资产业务化,将数据产品赋能业务,通过数据驱动公司业务发展,支撑公司战…

3112. 访问消失节点的最少时间 Medium

给你一个二维数组 edges 表示一个 n 个点的无向图,其中 edges[i] [ui, vi, lengthi] 表示节点 ui 和节点 vi 之间有一条需要 lengthi 单位时间通过的无向边。 同时给你一个数组 disappear ,其中 disappear[i] 表示节点 i 从图中消失的时间点&#xff0…

Linux-交换空间(Swap)管理

引入概念 在计算机中,硬盘的容量一般比内存大,内存(4GB 8GB 16GB 32GB 64GB…),硬盘(512GB 1T 2T…)。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器&#xff0c…

如何在 PostgreSQL 中处理海量数据的存储和检索?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 如何在 PostgreSQL 中处理海量数据的存储和检索?一、优化表结构设计二、分区技术三、数据压…

二叉树的后序遍历(寻找重复的子树,序列化

class Solution {List<TreeNode> resnew LinkedList<>();Map<String,Integer> mapnew HashMap<>();//用于存储子树public List<TreeNode> findDuplicateSubtrees(TreeNode root) {String xfind(root);return res;}public String find(TreeNode r…

HZNUCTF2023中web相关题目

[HZNUCTF 2023 preliminary]guessguessguess 这道题目打不开了 [HZNUCTF 2023 preliminary]flask 这道题目考察SSTI倒序的模板注入&#xff0c;以及用env命令获得flag 看题目&#xff0c;猜测是SSTI模板注入&#xff0c;先输入{7*7},发现模板是倒序输入的 输入}}7*7{{返回77…

springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)

文章目录 springboot nacos监听配置变化&#xff08;监听指定DataId/监听任何变化&#xff09;监听任何配置变化Nacos注解NacosConfigurationPropertiesNacosValueNacosConfigListenerNacosInjectedNacosConfigServiceNacosNamingService springboot nacos监听配置变化&#xf…

OpenAI 开打价格战,GPT-4o 最新变种价格骤降 96%-97%

当地时间周四早晨&#xff0c;美国人工智能初创公司 OpenAI 宣布&#xff0c;正式上架价格显著下降的新一代入门级别人工智能「小模型」GPT-4o mini。 价格比较&#xff5c;图片来源&#xff1a;Artificial Analysis 据 OpenAI 披露&#xff0c;GPT-4o mini 的 API 价格将会是…

【AI大模型Agent探索】深入探索实践 Qwen-Agent 的 Function Calling

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

django报错(二):NotSupportedError:MySQL 8 or later is required (found 5.7.43)

执行python manage.py runserver命令时报版本不支持错误&#xff0c;显示“MySQL 8 or later is required (found 5.7.43)”。如图&#xff1a; 即要MySQL 8或更高版本。但是企业大所数用的还是mysql5.7相关版本。因为5.7之后的8.x版本是付费版本&#xff0c;贸然更新数据库肯定…

JAVASE-医疗管理系统项目总结

文章目录 项目功能架构运行截图数据库设计设计模式应用单列设计模式JDBC模板模板设计模式策略模式工厂设计模式事务控制代理模式注解开发优化工厂模式 页面跳转ThreadLocal分页查询实现统计模块聊天 项目功能架构 传统的MVC架构&#xff0c;JavaFX桌面端项目&#xff0c;前端用…

水经微图Web版1.10.0发布

水经微图&#xff08;简称“微图”&#xff09;新版已上线&#xff0c;在该版本中主要新增了三调图例符号库&#xff0c;以及其它功能的优化。 当前版本 当前版本号为&#xff1a;1.10.0-beta.2 如果你发现该版本中存在问题&#xff0c;请及时反馈给我们修订。 关于我们产品…

Adobe国际认证详解-影视后期

在当今的数字媒体时代&#xff0c;影视后期制作作为创意产业的核心环节&#xff0c;对于专业技能的要求日益提高。Adobe国际认证&#xff0c;作为全球创意设计领域的重要标杆&#xff0c;为影视后期制作人员提供了一个展示自我、提升技能的国际舞台。 何为影视后期&#xff1f;…