[实时字幕端点]:完成无新文字快速结束录音,包含1.5秒停滞配置、Capture端点和回归测试
This commit is contained in:
@@ -147,6 +147,18 @@ The first implementation is a per-turn heuristic endpoint, not persistent voicep
|
||||
4. `VoiceAssistantPipeline` 在 `speech_started` 后把 capture 阶段已开始录音的帧 feed 给 realtime STT session;当 partial 文本变化时才 emit,避免刷屏。
|
||||
5. `OWNER_REALTIME_TRANSCRIPT_ENABLED=1` 默认启用;设置为 `0` 可临时回退到只显示 final transcript。
|
||||
|
||||
## Realtime Transcript Idle Endpoint
|
||||
|
||||
真人 `run-live` 日志显示,用户已看到实时字幕完整推进后,capture 仍可能继续等待 VAD 或主说话人端点。新增 `OWNER_REALTIME_TRANSCRIPT_IDLE_TIMEOUT_MS` 作为文本级端点,默认 `1500` ms:
|
||||
|
||||
1. CaptureStage 只在已经输出过至少一次有效 `transcript_partial` 后启用该端点。
|
||||
2. 每次 `transcript_partial` 真实发出时,记录该帧的音频时间戳为 `last_partial_ms`。
|
||||
3. 后续已开始录音但没有新的 partial 文本输出时,如果当前帧时间戳与 `last_partial_ms` 的差值达到配置阈值,调用 `VadRecorder.finish("partial_transcript_idle")` 构建当前录音片段。
|
||||
4. 构建出的 segment 继续走 final STT、LLM、TTS,不把 partial 文本写入上下文。
|
||||
5. 配置为 `0` 时关闭该端点,保留只依赖主说话人/VAD 的旧行为。
|
||||
|
||||
该端点使用音频帧时间戳而不是 wall-clock,避免批量读帧或 CPU 抖动导致误判。它不会在没有 partial 的场景提前结束,避免 STT 尚未给出第一段文本时切掉用户开头。
|
||||
|
||||
## Model Files
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user