15 — 延迟预算与调优
在参考机型 RTX 3060 12 GB 上,系统目标是:
- 语音到语音端到端 < 2.5 s。
- OBS 字幕延迟 < 1.5 s。
预算拆分
| 阶段 | 典型值 | 主要受哪些参数影响 |
|---|---|---|
| 麦克风采样块 | ≤ 200 ms | stt.chunk_duration |
| STT partial | 300–800 ms | stt.window_seconds、stt.beam_size、模型规模 |
| STT confirmed | +300–700 ms | stt.confirm_threshold、stt.max_segment_age |
| LLM translation | 100–250 ms | translation.max_tokens、n_ctx、prompt 长度 |
| TTS TTFA | 400–1500 ms | 后端、tts.streaming_mode、分块/批量 |
| 播放启动 | ~50 ms | audio_output.buffer_size、crossfade_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_age:53e3cbe从 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 时“必须闭麦”的空白延迟。除非耳机已有强硬件回声消除,否则建议开启。
排障流程
- 在固定长度测试语句下观察 Section A2 指标。
- STT partial 高:降低
window_seconds,并确认compute_type=int8_float16。 - translation 高:缩短系统提示、减小
context_window_size,或切换 API 后端。 - TTS TTFA 高:确认预热成功(看日志),检查
streaming_mode;Qwen3-TTS 需确认低延迟 preset(123b65e)。 - 播放欠载(under-run):提高
audio_output.buffer_size。