Speech Recognition模型:Connectionist Temporal Classification(CTC)

本文主要是介绍Speech Recognition模型:Connectionist Temporal Classification(CTC),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在上一篇讲的speech recognition模型 LAS 中,我们提到,LAS由encoder 和 decoder 组成,其在做speech recognition任务时,有一个很大的缺点,即:无法做到“边听边翻译”,换言之,在使用LAS做翻译时,需要将“原文"全部输入模型,才可得到译文(这里的译文 指 将 语音 转为 文字)。

本节所讲的模型CTC很好的克服了LAS的这一弱点,它可以实时的将”语音"翻译为“文字”。

一,CTC机理

CTC的模型结构如下,其主体为一个uni-directional RNN 以及 classifier,input为acoustic feature,output为token(即 译文)。在每一个time step,将acoustic feature作为input输入RNN,所得的 h 将被送入一个 classifer,该classifer将输出token distribution,选取拥有最大概率值的token作为该time step的output.
由于每个time step输入的acoustic feature很短,只有10 minsecond,因此,可能存在CTC无法识别该acoustic feature的情况,为了防止这种情况的发生,可在token vocabulary中加入null,当CTC无法识别该time step下token时,可以将其output定为为null.
next time step的input 为current time step的h 以及 next time step的acoustic feature,据此,得到next time step的token.
在这里插入图片描述
二,paired train data的获取

上面提到的CTC工作原理,input和output是成对出现的,即 acoustic feature和token是成对出现的,而我们在实际中得到的train data通常为 (语音,译本),无法细化到(acoustic feature, token),在实际中,我们可以穷举所有可能的 (acoustic feature, token)对,用于CTC的训练。
在获取(acoustic feature, token)对时,我们可能会发现,可能4个acoustic feature只对应2个word(如word),在这种情况下,我们可以将 “空” 插入这2个word中间,穷举所有可能形式,作为CTC的Paired train data,如下图所示:
在这里插入图片描述
在这里插入图片描述
三,CTC存在问题

如果不对原语音数据做down sampling,则CTC中input多少个acoustic feature,就会output多少个token。由于CTC中每一个time step output的产生都是相对独立的,因此,CTC中不同的time step可能会产生相同的一个token,就像是结巴了一样,通常,会将outputs中相同的token合并为一个token,以避免结巴的情况。
在这里插入图片描述
四,LAS与CTC的结合

LAS由encoder和decoder组成,在构建LAS模型时,我们可以将CTC嫁接在LAS的encoder上,从而达到LAS和CTC的结合。

这篇关于Speech Recognition模型:Connectionist Temporal Classification(CTC)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539676

相关文章

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot