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

文章目录

实现差异

特性 非流式识别实现 流式识别实现
模型架构 全局上下文模型 (如: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)
答题方式 读完全书后,深思熟虑,写下最终答案 每读完一页,就写下当前页的答案,并可能根据后续页的内容修改前一页的答案
核心约束 无时间约束,追求最高分 必须在规定时间内(低延迟)交卷,平衡答题速度和正确率
相关推荐
HyperAI超神经2 小时前
AI 论文周报丨视觉语言模型应用/不稳定奇点族新发现/强化学习……一文了解多领域创新趋势与前沿动态
人工智能·ai·语言模型
ahe1682 小时前
用deepseek部署全自动的机器人--bytebot
人工智能
无垠的广袤2 小时前
【LattePanda Mu 开发套件】AI 图像识别网页服务器
服务器·人工智能·python·单片机·嵌入式硬件·物联网
芒果量化3 小时前
ML4T - 第7章第7节 逻辑回归拟合宏观数据Logistic Regression with Macro Data
人工智能·机器学习·逻辑回归·线性回归
西岭千秋雪_3 小时前
RAG核心特性:ETL
数据仓库·人工智能·spring boot·ai编程·etl
无风听海3 小时前
神经网络之Softmax激活函数求导过程
人工智能·深度学习·神经网络
youcans_3 小时前
【Trae】Trae 插件实战手册(1)PyCharm 安装 Trae
人工智能·python·pycharm·ai编程·trae
说私域3 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的引流爆款设计策略研究
人工智能·小程序
张较瘦_3 小时前
[论文阅读] AI + 软件工程 | 从“事后补救”到“实时防控”,SemGuard重塑LLM代码生成质量
论文阅读·人工智能·软件工程