首页 > 其他分享 >ASR项目实战-任务队列在文件转写特性中的应用

ASR项目实战-任务队列在文件转写特性中的应用

时间:2023-12-31 09:01:39浏览次数:34  
标签:ASR 队列 DB 重试 任务 实例 转写

转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持。
一个简单、直接的实现方案,即:

  • 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中。
  • 由算法服务的实例从任务队列中提取任务,并执行转写操作。
  • 待执行完毕之后,将转写结果保存至DB中,供调用方查询。

本文主要针对介绍任务队列的要求和选型。

在语音识别的文件转写的场景下,对于任务队列的常规诉求:

  1. 允许多个生产服务向队列中增加任务。
  2. 允许多个消费服务从队列中提取任务。
  3. 任务队列自身具备可靠性,避免自身成为影响整体系统可靠性的单点。
  4. 任务队列的读、写操作,效率满足业务要求,避免成为影响整体系统效率的单点。
  5. 单个任务,仅支持由一个消费服务提取和处理。
  6. 消费方在处理某指定的任务时,假如超时或者失败,则要求将任务重新放回到队列中,由其它消费服务的实例完成任务的处理。
  7. 消费方的实例异常重启后,该实例上当前正在处理的任务,需要重新被抓取至原实例或者新实例上,继续处理。

对于5、6,一般可以理解为任务的事务性。

关于实现任务队列的可选方案,一般有如下几种:

  • Redis
  • Kafka
  • DB(比如MySQL)

一般而言,Kafka、Redis自身可以满足上述要求中的1、2、3、4,实现并不困难,但5、6,则存在一定的困难。
而基于DB的方案,可以很好的满足1、2、5、6,但在提供3、4时存在一定的困难。此外,当消费方的实例的数量增加时,由于需要采用轮询的方式来提取任务,可能导致DB的CPU占用率有所提升。当任务的并发度提升时,容易出现死锁的现象,或者提升DB处理数据行锁的开销。

语音识别业务中文件转写请求的特点:

  • 当前的用户调用总量相对比较低。
  • 同一时间,来自客户的请求的并发度比较低。
  • 用户对于时延的敏感度相对比较低。
  • 用户对转写任务的成功率有比较高的诉求。

综合考虑项目组当前的人力情况、技术储备情况、交付进度的要求,选择了基于DB来实现任务队列的方案。

在DB中新建任务队列表,包含如下字段:

  • 任务ID,唯一标识。
  • 创建时间,用于后续计算任务端到端转写时间。
  • 任务结束时间,用于后续计算任务端到端转写时间。
  • 任务状态,当前任务处于排队中、处理中、处理结束、失败。对于失败的任务,假如重试次数低于门限值,则需要重试。
  • 锁定时间,用于确定任务是否超时,超时的任务需要重试。超时时间的定义,需要综合文件转写的实时比和语音文件自身的时长,给出恰当的定义,避免失败后等待过长的时间才能触发重试。
  • 当前处理任务的实例的标识,用于确定任务当前由哪个实例在转写。当算法服务的实例重启时,可以加载本实例相关的任务,执行重试操作。
  • 重试次数,系统需要提供自动重试的能力,可以规避某特定实例自身的问题导致的失败的现象,降低运维人员主动介入处理时的工作量。但不能无限制重试,需要定义重试的次数。

参考资料

标签:ASR,队列,DB,重试,任务,实例,转写
From: https://www.cnblogs.com/jackieathome/p/17935681.html

相关文章

  • ASR项目实战-决策点
    针对语音识别的产品,分别记录设计、开发过程中的决策点。实时语音识别对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果。客户端在启动识别时,即开始发送语音数据,期望在等待较短的时间后,即收到最初的识别结果。第一段语音数据和第一个识别结果之间的时延,一般......
  • ASR项目实战-架构设计
    一般而言,业务诉求作为架构设计的输入。需求清单对于语音识别产品而言,需满足的需求,举例如下:功能需求文件转写。长文件转写,时长大于60秒,小于X小时,X可以指定为5。短文件转写,时长小于60秒。实时语音识别。长语音识别,时长大于60秒,小于Y小时,Y可以指定为5。短语音识别,时长......
  • ASR项目实战-项目交付历程
    本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程。2019年12月中旬接到项目交付任务,收集基本知识,启动业务分析工作。2020年1月完成竞品分析的整理。梳理合作伙伴的清单,整理项目计划,启动和各合作伙伴的沟通工作。启动架构方案、设计方案的准备工作。2020年2月和......
  • ASR项目实战-交付团队的分工
    对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队。通常认为,用户,负责购买服务的群体,而消费者,负责使用业务的群体。这两个群体,不在本文的讨论范围之内,因此后续的介绍中,除非明确说明,否则默认均不涉及。产品团队,研......
  • ASR项目实战-产品分析
    分析Google、讯飞、百度、阿里、QQ、搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力。产品分类ASR云服务产品,从用户体验、时效性、音频时长,可以划分为如下几类:实时短音频转写,可以用于支撑输入法、搜索、导航等场景。实时长音频转写,可以用于支撑视频字幕、图文直......
  • ASR项目实战-前处理
    本文深入探讨前处理环节。首先介绍一些基本的名词,比如文件名后缀文件格式音频格式采样率和位深预备知识文件名后缀、文件格式和音频格式常见的音频文件,比如.wav、.mp3、.m4a、.wma等,这些都代表什么?仅仅是这类音频文件的后缀而已,不一定和音频文件的编码、音频数据的编码......
  • ASR项目实战-后处理
    本文深入探讨后处理环节。在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。分词和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉空格。对于中文来说,......
  • ASR项目实战-数据
    使用机器学习方法来训练模型,使用训练得到的模型来预测语音数据,进而得到识别的结果文本,这是实现语音识别产品的一般思路。本文着重介绍通用语音识别产品对于数据的诉求。对数据的要求训练集相关要求,如下:地域,需要覆盖使用人群所在的地域,且数据的比例适中。口音,需要覆盖典型的......
  • ASR项目实战-构建Kaldi
    准备工作安装构建时依赖的基础软件软件清单如下:bzip2python3automakelibtoolcmakegccg++gfortrangitsubversion不同平台安装软件的方式不同,比如可以使用yum或者apt-get等。下载开源软件软件清单如下:LibunwindglogOpenFSTOpenBLASKaldi按照一定的规则,将下......
  • ASR项目实战-语音识别
    本文深入探讨语音识别处理环节。本阶段的重点特性为语音识别、VAD、热词、文本的时间偏移、讲话人的识别等。语音识别业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。基于Kaldi的方案,优......