当前位置: 首页 > news >正文

语音识别-流式和非流式实现方式

文章目录

      • 实现差异
      • 非流式识别的实现
      • 流式识别的实现
      • 总结

实现差异

特性非流式识别实现流式识别实现
模型架构全局上下文模型(如:Transformer,全序列 BERT)流式兼容模型(如:RNN-T,Chunk-Based Transformer,流式 CTC)
注意力机制全局注意力:可关注整个音频序列的任何部分Chunk 注意力/单调注意力:只能关注过去和有限未来的音频块
解码策略离线解码:完全句子的束搜索(Beam Search),可前向后向优化流式解码:实时束搜索或贪心解码,可能结合右边界检测
数据流处理整段输入:处理完整的音频文件或语音段Chunk 流输入:将音频切成小块(如:每 100ms)进行增量处理
输出方式一次性输出:最终最优结果增量输出:持续输出并修正假设词序列

非流式识别的实现

非流式的核心思想是 “纵观全局,优化决策”

  1. 特征提取与整段输入

    • 系统首先读取整个音频文件,并提取全局特征(如 FBank,MFCC)
    • 整个特征序列(比如一个 [T, D] 的矩阵,T 是时间步,D 是特征维度)被一次性送入声学模型
  2. 声学模型(关键区别所在)

    • 使用可以看到整个序列的模型架构,最典型的是基于全局注意力机制TransformerConformer
    • Self-Attention 机制:序列中的任何一个时间步都可以与所有其他时间步(无论是过去还是未来)进行交互和信息聚合。这意味着,识别第 1 秒的一个词时,模型可以参考第 10 秒的上下文信息来消除歧义。这是其高准确率的根本原因
  3. 解码与优化

    • 使用束搜索(Beam Search)在整个序列上寻找最优的词序列路径
    • 由于没有时间压力,可以进行非常复杂的搜索和重评分(Rescoring),例如使用更大的语言模型对束搜索的 N 个最佳结果进行二次优化,选出最终最好的一个
  4. 输出

    • 整个过程结束后,输出唯一的最佳识别文本

简而言之,非流式实现像一个"闭卷考试",考生可以反复翻阅整本教材后再写下最终答案。

流式识别的实现

流式的核心思想是 “局部决策,快速响应,逐步修正”。其实现的关键在于如何在无法看到未来全部信息的情况下,尽可能做出正确的判断

  1. Chunk 流式特征提取与输入

    • 音频不是一次性输入,而是被分割成小的进行流水线处理。例如,每 40ms 采集一次音频,但每 100ms(一个 chunk)送一次数据给模型
  2. 声学模型(为实现流式而做的特殊设计)

    • 这是最核心的差异。流式模型必须被设计成因果的(Causal)半因果的(Semi-Causal)

    a. RNN-Transducer (RNN-T)

    • 目前流式识别的主流和最佳选择。它由一个编码器(Encoder)、一个预测网络(Predictor)和一个联合网络(Joiner)组成
    • 编码器:处理音频输入。可以设计成流式的,例如使用单向 LSTM因果卷积 + Chunk 注意力 Transformer,只使用过去和当前 chunk 的信息
    • 预测网络:基于已经输出的历史文本来预测下一个词(类似于语言模型),是纯因果的
    • 工作机制:编码器吃进一块新音频,联合网络将其与预测网络的输出结合,计算是输出一个新词还是继续等待更多音频(输出 <blank>)。这个过程循环往复,天然适合流式输出

    b. 流式 CTC

    • CTC 模型本身是帧同步的,每输入一帧就可以计算输出,天然适合流式
    • 但纯 CTC 的流式识别效果通常不如 RNN-T,因为缺乏显式的语言模型建模。常通过 CTC 前缀束搜索实现流式解码,并结合外部语言模型

    c. Chunk-Based Transformer/Conformer

    • 这是为了让强大的 Transformer 模型能用于流式而做的改进
    • 核心思想:将全局注意力限制在一个局部窗口内。模型在处理当前 chunk(块)时,只能注意到有限的过去 chunk 和未来的几个 chunk(例如:看过去 400ms,未来 200ms)。这个"有限的未来"被称为右上下文(Right Context)Look-ahead
    • 实现:通过 Mask 机制限制注意力范围,实现可控的延迟。Look-ahead 越大,延迟稍高,但准确率会提升
  3. 流式解码

    • 使用流式束搜索。与离线版不同,它需要定期(例如每读完一个 chunk)就**发射(emit)**已经确定的部分假设结果,而不是等到最后
    • 需要判断何时输出一个词是"确定"的。有些策略是当某个词的概率超过阈值,或者在束搜索中保持领先若干 chunk 后,就将其输出
  4. 增量输出

    • 解码器会持续输出部分结果,例如:我 -> 我们 -> 我们一 -> 我们一 -> 我们一起。用户看到的是文本在不断地被修正和补充

简而言之,流式实现像一个"开卷随堂测验",你只能一边听讲一边翻看刚刚讲过的和老师刚刚写下的少量板书来答题,并且需要不断交出头答案。

总结

实现方面非流式流式
数据输入整本书一页一页地传过来
阅读方式可以随意前后翻看整本书只能看刚刚读过的几页和即将要读的下一页(Look-ahead)
答题方式读完全书后,深思熟虑,写下最终答案每读完一页,就写下当前页的答案,并可能根据后续页的内容修改前一页的答案
核心约束无时间约束,追求最高分必须在规定时间内(低延迟)交卷,平衡答题速度和正确率
http://www.dtcms.com/a/410649.html

相关文章:

  • 网站被攻击 是vps问题还是dz程序建设网站的经验
  • uniapp中pinia(setup语法)使用流程
  • SimpleBEV:改进的激光雷达-摄像头融合架构用于三维目标检测
  • 一个网站制作流程qq快速登录入口
  • Flash Attention学习笔记
  • 解决 QGraphicsDropShadowEffect 导致的 UI 持续刷新
  • 用 LoRA 微调 Qwen3-0.6B 模型,打造专属宠物商店智能客服
  • 建搜索引擎网站衡东网络推广公司
  • Go test 命令完整指南:从基础到高级用法
  • apifox认证登录自动化
  • 江西网站建设哪家专业女装wordpress
  • IDEA JVM优化配置idea64.vmoptions - 保守兼容版本 兼容IDEA 2023.3.6版本【亲测可用】
  • 网站图片像素多少做视频有赚钱的网站
  • APT攻击:隐蔽战场的威胁与防御之道
  • 小兔鲜项目
  • 黑马点评学习笔记01(手机号校验(正则表达式))
  • 声明式事务7
  • 外贸专业网站制作昆明建设网站哪家好
  • 鸿蒙原生contact.queryContacts通讯录查询实现
  • 根据百度地图做网站太原h5建站
  • 【JAVA】从入门到放弃-02-工具、类型、输入输出
  • 伪静态怎么设置(详细教程)
  • 【leetcode】57. 插入区间
  • 多sheet excel 导出
  • 手机移动端网站是什么用什么软件做网站布局
  • cesium-kit:让 Cesium 开发像写 UI 组件一样简单
  • 电子工程师网站wordpress the ken
  • Nginx HTTPS 深入实战 配置、性能与排查全流程(Nginx https
  • 网站建设和优化的营销话术亚马逊雨林生存游戏手机下载
  • 一场“无感换心”手术:金仓数据库如何让电子证照系统平滑告别MongoDB