Skip to content

v2.2.6 — 设置自动化 + 正确性修复 + ASS/LRC 导出

Choose a tag to compare

@Superce1l Superce1l released this 22 Oct 09:32
· 21 commits to main since this release

STTMiniTool v2.2.6

本版是一次集中修复与体验升级:两个「玄学」设置项移出设置页改为自动判断(VAD 灵敏度、每段最长秒数),三处正确性修复(CPU 转录取消、长音频说话者标签、GPU 识别提示),并新增 ASS 卡拉OK / LRC 导出、最近转录列表与真实更新检查。全套改动有 75 例单元测试兜底。

✋ OpenVINO 转录可随时取消

此前用 CPU 核心转录长音频时点「取消」,程序会把剩余段落全部跑完才在收尾时报「已取消」——结果被丢弃,时间全浪费。现转录循环在段间检查取消事件(与 CrispASR 引擎同一契约),点击取消立即停止。

👥 长音频说话者标签不再跨片错乱

超过 2 小时的音频走切片转录 + 说话者分离时,每一片独立聚类会导致同一人在片 1 是「说话者1」、片 2 变成「说话者2」。现改由调度层统一分离:逐片提取声纹中心,按 cosine 相似度映射到全局编号,整份字幕同一人始终同一编号。

💬 GPU 引擎的「识别提示」生效了

「识别提示」输入框此前在 CrispASR 引擎下被静默忽略——贴了歌词/关键词毫无效果也不提示。现 whisper / qwen3 两个后端统一传入 --prompt 初始提示(截 500 字,两后端实测接受且不回显)。

🎛️ 设置页精简:两项改自动判断

  • 语音检测灵敏度(VAD)→ 自动重试:默认门槛(0.50)没检出人声、但全段最高人声概率达到可信下限(0.18)时,自动逐级降低门槛(0.35 → 0.22)重试——覆盖「说话轻/远场录音被挡掉」这一手动调低设置的主因;真静音/纯音乐不浪费重试,直接给出明确诊断。
  • 每段最长秒数 → 任务自适应:勾选「时间轴对齐」时段上限自动压到 10 秒(抑制长段歌词的「段尾字级跑掉」漂移);不勾则用模型上限(0.6B 30 秒),段更少、吞吐更高。

老用户 settings.json 里的旧键会被忽略,无需手动清理。

🆕 新功能

  • 导出格式菜单:保存字幕现支持 SRT / ASS 卡拉OK(字级时间轴 → \k 逐字拍点,播放器直接逐字高亮)/ LRC 歌词 / 纯文本
  • 最近转录列表:首页列出 subtitles/ 最近产出(50 条),点击回填波形视图,可再校对、另存
  • 真实更新检查:「检查更新」现通过 GitHub API 比对最新版本,有新版直接打开下载页
  • 录制真实时间轴:录制转换导出的 SRT 改用录音内的真实秒数(此前每段固定 5 秒顺排,无法用于同步)
  • 卡拉OK逐字弹跳:补完「放大跳动」曲线——字被唱到的瞬间弹起回落、开唱前微抬蓄力(Apple Music 动态歌词风)

⚡ 性能

  • VAD 长音频批量推理:时间轴连续分块沿 batch 维并行,60 秒音频 0.37s → 0.11s;阈值判定与逐窗顺序推理完全一致
  • 大文件上传流式落盘:转录请求增量解析、音频边收边写盘——拖入几 GB 的视频不再把整份文件读进内存(此前内存峰值 ≥ 2 倍文件大小)
  • 前端播放优化:播放/卡拉OK循环去掉全量 DOM 扫描,数千段字幕的长音频不再卡顿

🧱 工程

  • 75 例单元测试(tests/,unittest):字幕分行、切片合并、SRT 解析、设置存储、流式解析、说话者映射、VAD 等价性等
  • settings.json 收敛为单点读写:线程锁 + 临时文件原子替换,修复并发写丢更新、进程被杀留半截文件两类隐患
  • 引擎转录改返回结构化结果(TranscribeResult),移除实例侧通道
  • 界面补全 English 翻译覆盖

打包内容:STTMiniTool.exe(onefile,WebView2 界面)+ CrispASR 核心二进制。模型文件不随包附带,首次使用时按需下载。

全部改动经 75 例单元测试与真实语音端到端回归验证:正常音量/6% 音量/噪声混合音频的 VAD 自动重试路径、冻结 EXE 无头自检(status --json)、切片说话者映射、流式上传边界情况,全部通过。