17 — 故障排查

整理开发过程中高频问题与解决方法,可作为排查清单。

安装阶段

llama-cpp-python 装成 CPU 版。 强制安装 CUDA wheel:

venvs\venv_main\Scripts\pip install llama-cpp-python `
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121

GPT-SoVITS 服务因 import 错误启动失败。 确保启动 api_v2.pyPYTHONPATH 包含 vendor\GPT-SoVITSvendor\GPT-SoVITS\GPT_SoVITSstart.ps1 已处理;手动启动需复现(857f3fb)。

9880 端口被占用。 启动脚本会跳过新 SoVITS 进程。可结束旧进程或改 tts.api_port

运行阶段

STT 输出重复短语或模板句。 两层防护:

  • config/filters.txt 添加字面幻觉短语(890b782)。
  • 依赖 vocal10n.stt.filters 的邻接去重和短语重复抑制(d6116c5)。

若仍循环,检查 stt.beam_size = 1 且输入音频未削波。

字幕确认太慢或在句中断开。stt.max_segment_age53e3cbe 从 2 秒提升到 4 秒)。想更快确认就调低,想更完整句边界就调高。

音频设备选择异常/出现重复项。 PortAudio 可能在多个 host API 下重复上报同一设备。UI 已按名称去重(74be837)。若旧设备失效,手动重新选择一次触发重开。

TTS 队列在消耗,但听不到声音。 确认 tts.ref_audio_path 指向存在文件。新版本使用绝对路径(4a19037);旧版本常因路径错误静默失败。

TTS 首次响应慢。 服务启动后会后台预热(0f22fcc142f915)。若仍冷启动,检查日志确认预热请求是否成功。

Qwen3-TTS 输出被污染/协议错乱。 stdout 仅用于协议数据,stderr 单独排空(2311042)。不要在 qwen3_server.py 往 stdout print()

回声环:TTS 被 STT 再次识别。 确认 aec.enabled = true。混响较大可提高 aec.filter_taps(默认 2048,约 128 ms@16kHz)。若用户说话被压制,aec.dt_threshold 可能过低,适当提高(f334773)。

UI

下拉箭头/按钮被裁切或不可见。 相关修复位于 46675dc2e3bcef。若自定义主题复现,参考 stt_tab.py 中控件最小尺寸设置。

切换到 Simple 模式后 Section A 显示异常。 Pro 与 Simple 的 Section A 布局独立(e96bcb9)。切换模式应触发重建;若未生效,重启应用。

Simple 模式 Start All 卡住。 每阶段有独立超时。查看卡住的状态胶囊并结合日志定位;Qwen3-TTS 预热超时预算最长(81cedf4)。超时后会自动回滚。

文件输出

output/ 没有生成文件。 仅当至少一个 output.* 开关为真时才会创建 writer。检查 Output 页,并确认 output.directory 可写。

SRT 时间轴看起来不对。 SRT 时间来自片段时间/延迟追踪,不是墙钟时间。若会话开始与首个输入存在偏移,和墙钟对比可能看似异常,但文件内部相对时间应一致。