15 — 延迟预算与调优

在参考机型 RTX 3060 12 GB 上,系统目标是:

  • 语音到语音端到端 < 2.5 s
  • OBS 字幕延迟 < 1.5 s

预算拆分

阶段典型值主要受哪些参数影响
麦克风采样块≤ 200 msstt.chunk_duration
STT partial300–800 msstt.window_secondsstt.beam_size、模型规模
STT confirmed+300–700 msstt.confirm_thresholdstt.max_segment_age
LLM translation100–250 mstranslation.max_tokensn_ctx、prompt 长度
TTS TTFA400–1500 ms后端、tts.streaming_mode、分块/批量
播放启动~50 msaudio_output.buffer_sizecrossfade_ms

这些延迟由 LatencyTracker 实时采样并展示在 Section A2。

可调参数

STT

  • compute_type:默认 int8_float16。Ampere 上切 int8 通常更省显存且略快;float16 更慢但可能略稳。
  • beam_size:默认 1(贪心)。增大 beam 常增加 100–300 ms,收益有限。
  • window_seconds:更短可降 partial 延迟,但长句连贯性会下降。6.5 秒是折中。
  • max_segment_age53e3cbe 从 2.0 提到 4.0,减少句中强刷;如需更“跟手”可调低。

Translation

  • n_ctx:默认 512 以压低 TTFB。仅在 prompt/上下文/词表确实超限时再增。
  • max_tokens:限制为 64 控制最坏延迟;若频繁超长,通常是上游批次过大。
  • temperature / top_k:保持 0 / 1 以提高确定性。
  • context_window_size:2 对一般足够维持代词一致性。
  • 后端切换:可切 api 指向 LM Studio 等大卡后端,controller 透明切换。

TTS

  • streaming_mode:SoVITS 流式分块预设。较低值更偏“大块输出”(TTFA 高但播放器更轻松)。
  • speed_factor:1.2–1.3 可降低主观延迟(音频更快播完)。
  • tts_queue_max_pending:建议保持较低(默认 3),防止突发长语音造成队列积压。
  • 两级播放:Phase 5(e9d4556)默认启用,crossfade_ms 默认 50 ms。

AEC

AEC 本身增加的音频路径延迟很小(每块一次 NLMS)。但它能避免 TTS 时“必须闭麦”的空白延迟。除非耳机已有强硬件回声消除,否则建议开启。

排障流程

  1. 在固定长度测试语句下观察 Section A2 指标。
  2. STT partial 高:降低 window_seconds,并确认 compute_type=int8_float16
  3. translation 高:缩短系统提示、减小 context_window_size,或切换 API 后端。
  4. TTS TTFA 高:确认预热成功(看日志),检查 streaming_mode;Qwen3-TTS 需确认低延迟 preset(123b65e)。
  5. 播放欠载(under-run):提高 audio_output.buffer_size