Skip to content

[Bug] [Windows] 长口述中途停顿触发端点分段后,仅最后一段被注入,前面段落全部丢失 #54

Description

@CuteSamurai24

环境

  • Windows 10 (19045),AhaKey Studio 1.0.0(build 20260706171537),完整版本地模型(STREAMING_PARAFORMER,VAD 关闭)

现象

长口述(约 30 秒)中只要中途有明显停顿(换气、说"呃"、分点陈述),最终只有最后一段被加标点并注入,之前所有分段内容全部丢失。

日志时间线(实机抓取)

11:04:00.545 开始录音(无VAD)
11:04:02-11:04:08 [语音识别中] 持续输出增量 partial(第 1 段内容)
11:04:09.113 SpeechService - 端点: "比如我挂一笔,然后每一票……"   ← 第 1 次端点(换气停顿触发)
11:04:09-11:04:29 [语音识别中] 继续输出(第 2、3 段内容)
11:04:29.560 SpeechService - 端点: "比如你挂一笔,先一百股……"    ← 第 2 次端点
11:04:30.894 添加标点符号后: "每股再挂一笔。"                      ← 仅最后一段
11:04:30.894 准备注入文本: "每股再挂一笔。"(8 字,30 秒口述只剩这 8 个字)
11:04:32.691 停止录音

对比:一口气说完(中途无停顿、只有末尾一次端点)时完整注入,行为正常。

分析

流式 Paraformer 的端点检测在中途停顿时会结束当前 segment 并 reset recognizer。按 sherpa-onnx 流式识别的常规用法,端点触发时应把已完成 segment 的文本累积起来,停止录音时拼接全部 segment 注入。当前实现看起来在停止时只取了 recognizer 当前(最后一段)的结果,导致前面段落丢失。

建议

  1. 端点回调中把 segment 文本累积到 StringBuilder(或 List);
  2. 停止录音时:全部段拼接(中间补空格/标点)→ 过标点模型 → 注入;
  3. 顺带建议:注入的标点模型对多段拼接文本统一处理即可。

这个 bug 对长指令口述的使用体验影响很大,期待修复。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions