Skip to content

SrcBox v1.1.18

Choose a tag to compare

@github-actions github-actions released this 14 Oct 02:52
· 7 commits to main since this release

v1.1.18 Release Notes

Release Date: 2026-10-14
Previous Version: v1.1.17


Highlights

本版把语音遥控从「能听懂一个词」推进到「能听懂一整句」——回看昨天晚上的新闻联播 这类「回看 + 时间 + 频道 + 节目名」的任意组合现在都能直接执行;语音词表(短语 / 时间词 / 噪声词)从程序里独立出来,可以不重装软件单独升级;同时修掉离线语音模型下载被服务器拒绝(403)与断点续传反复失败(416)两个问题,并补上《苹果语音控制》《安卓语音控制》两篇教程。

  1. 整句语音理解重做:支持日历日期(10月13号 / 十三号 / 2026年10月13日)、星期(上周五 / 星期一)、汉字数字(十三 过去被算成 3)、时段换算(晚上8点 过去被当成早上 8 点)与「时间线索」窗口(说 8点 也能找到 7 点开播的节目),并把已经用于判断时间的词从节目名过滤词里剔除。
  2. 语音词表包(独立升级):内置短语、介词、噪声词、时段与星期词表改由 JSON 词表包提供,可在 设置 → Web 遥控器 → 语音 里「检查更新」(从 GitHub Release 下载,带校验与失败回退)、导入本地文件、或移除并回到内置词表。
  3. 语音设置补全:新增匹配严格度(宽松 / 标准 / 严格)、时间线索分钟数、是否识别日历日期、「只有一个匹配就直接回看」(此前有配置、没有界面)、追加过滤词。
  4. 离线语音模型下载修复:下载请求缺少 User-Agent,被 ModelScope 的 LFS CDN 直接拒绝(403);.part 文件已经下满、或服务器拒绝断点续传(416)时下载会永久失败——现在会重置并重新下载。
  5. 新增教程:《苹果语音控制》(Siri + 快捷指令)与《安卓语音控制》(手机内置助手 + 自定义命令),见文档站「使用指南」。

1. 整句语音理解(回看类指令)

以前「回看 + 时间 / 频道 / 节目名」只要组合两项以上就很难命中,典型表现是要么「没找到」,要么把一堆不相干的节目列成候选。本版把解析拆成「日期 → 时段 → 钟点」三步,再按时间线索在节目单里落点:

说法 v1.1.17 v1.1.18
回看20点的新闻联播 找不到(20点 混进节目名,且只在 20:00 之后的时段里找) 回看 19:00 那一档
回看晚上8点的新闻联播 按早上 8 点找 按 20:00 找
回看八点的新闻联播 时间词混进节目名 早上 8 点(与所说时间一致)
回看十三号的新闻联播 日期被忽略(按今天),且汉字「十三」被解析成 3 正确落在 13 号
回看2026年10月13日的新闻联播 找不到 正确
回看上周五的新闻联播 找不到 正确
回看昨天晚上八点半的新闻联播 「半」残留在节目名里,找不到 正确
回看3台昨天晚上的新闻联播 列出 3 个候选 回看 3 台 19:00 那一档
回看今天的新闻联播 连带 体育新闻、新闻大求真 一起给候选 只有一个匹配就直接回看

解析规则:

规则 说明
日历日期 10月13号、13号、2026年10月13日;没写年份且算出的是未来日期时,按上一年 / 上一个月回退
星期 星期一 / 周一 / 礼拜一 / 上周五 / 本周(英文、俄文同义说法一并支持)
汉字数字 十三、八点半、十点 等一律先转成阿拉伯数字再解析(十三 以前被误算成 3)
时段换算 晚上8点 → 20:00,早上8点 → 08:00,凌晨12点 → 00:00,中午12点 → 12:00
时间线索 说出钟点后按「节目开始时间」落点,默认允许提前 60 分钟(可在设置里改 0–240)
槽位拆解 已在时间判断里用掉的词(20点、昨天晚上、10月13号、八点半)不再留在节目名过滤词里
候选降噪 弱相似度(半数字符重合,如 体育新闻 vs 新闻联播)在标准严格度下不再进候选

2. 语音词表包(独立升级)

语音识别之外的词表——内置短语(20 条)、介词、噪声词、时段表、星期表——全部搬进一份 JSON「词表包」,程序只保留一份内置兜底版本:

能力 位置
检查更新 设置 → Web 遥控器 → 语音 → 词表包 →「检查更新」:从 voice-pack Release 下载清单,比对版本后下载、校验 SHA-256、原子替换
导入本地包 同一区域的「导入」,选一个 .json 词表包即可生效
移除 「移除」后立即回到内置词表,无需重启
手动放置 把包放到 %LOCALAPPDATA%\SrcBox\voice\pack.json 也会被加载

下载顺序为「Release 资产 → 设置里的 CDN 镜像 → jsDelivr」,任何一步失败都会回退,校验不过(大小或 SHA-256 不符、schema 不符、正则无法编译)一律拒绝并保留原有词表;安装失败不影响正在使用的词表。

仓库侧同时提供 voice/manifest.json(清单)、voice/v1/zh-CN.json(与内置表逐字一致的金样包)、voice/schema/*.json,由 .github/workflows/voice-pack.yml 在词汇变更时自动发布——词表因此可以独立于程序版本升级。

说明:包内正则一律带 50 毫秒超时,包大小上限 512 KiB、条目上限 500 条,并拒绝指向目录之外的路径。

3. 语音设置

设置 → Web 遥控器 → 语音新增一组「语义匹配」设置:

设置 默认 作用
匹配严格度 标准 宽松 / 标准 / 严格,对应候选阈值 0.45 / 0.55 / 0.70,自动执行阈值 0.75 / 0.85 / 0.92
时间线索(分钟) 60 说出钟点后允许提前多少分钟落点
识别日历日期 开 关掉后 10月13号 这类日期不再被解析(按今天算)
只有一个匹配就直接回看 开 关掉后即使只有一个节目命中也会先让你确认
追加过滤词 空 用 `

4. 离线语音模型下载修复

问题 说明
下载必被拒(403 Forbidden) 模型 CDN 对不带 User-Agent 的请求直接返回 403(正文字面是 You don't have permission to access the URL on this server),浏览器能下、程序不能下;现在共享 HttpClient 统一带上 SrcBox/<版本>
断点续传永久失败(416) .part 文件恰好等于远端文件大小时会发出 Range: bytes=<size>-,服务器回 416,旧代码直接抛异常且不清理,重试永远失败;现在检测到 .part 已满会先重置,收到 416 会删除后从零重下
下载中断后无法恢复 断点续传按文件逐个校验,模型 4 个文件的 SHA-256 与发布值一致才算完成;设置页提供「下载 / 校验 / 删除」三个入口

5. 新增教程:苹果 / 安卓内置语音控制

不需要打开 SrcBox 的遥控页面,直接用手机自带的助手也能控制播放器:

  • 苹果语音控制(docs/guide/apple-voice-control.md):用「快捷指令」把一句话变成 GET /api/voice?text=... 请求,再用 Siri 调用;含快捷指令逐屏配置、令牌与网段校验、以及常见报错。
  • 安卓语音控制(docs/guide/android-voice-control.md):用手机内置助手(小布 / 小爱等)的「自定义命令」指向同一条接口,含命令示例与触发方式。

两篇都基于 Web 遥控器已经开放的 HTTP 语音接口,页面与接口行为见《Web 遥控器》文档。

6. 文档与测试

  • 四种语言(中文 / English / 繁體中文 / Русский)的《Web 遥控器》新增两节:语义匹配设置(五个新旋钮)与语音词表包(在线升级、导入、移除、手动放置)。
  • 新增《苹果语音控制》《安卓语音控制》两篇教程,并加入文档站侧边栏与使用指南索引。
  • 自动化用例总数由 v1.1.17 的 461 通过 / 0 失败 提升到 539 通过 / 0 失败(另有 1 个默认跳过的金样生成用例):新增用例覆盖日期 / 星期 / 汉字数字 / 时段换算 / 时间线索窗口 / 槽位拆解、词表包解析与校验、合并与热加载、SHA-256 与目录穿越防护、安装 / 导入 / 移除流程、清单与镜像回退顺序、模型下载的 416 与已满 .part 分支。
  • 回看组合句用探针矩阵逐句复核(回看20点…、回看晚上8点…、回看十三号…、回看3台昨天晚上的… 等),确认由「候选」变为直接执行。

Known Issues

  • 若 SrcBox 运行在受限完整性级别下(例如程序目录被安全策略或沙箱标记为 Low Integrity、进程被降权),它无法写入用户配置目录、也无法创建用户密钥容器,HTTPS 因此不可用;此时页面与二维码会自动给出 http://,不会给出打不开的 https://。这类限制来自运行环境,不是程序缺陷——把程序放在普通的用户目录下运行即可恢复。
  • 语音词表的识别层热词本版未启用:当前使用的 SenseVoice-Small 模型不支持热词嵌入(热词通道只在 SeacoParaformer 投影上生效),需要更换模型,留待后续评估。词表包目前作用于指令解析层(短语 / 时间词 / 噪声词)。
  • 浅色主题下全屏 EPG 浮窗的最外圈存在 1 个设备像素的浅灰边(约 #AAAAAA),深色主题下为 #707070;面板内部配色已逐像素对齐,该差异仅出现在透明分层窗口边缘,本版未处理。
  • 远程页面不显示播放源健康状态(数据模型中没有该字段)。
  • 菜单构建仍会累积内部菜单项引用(长时间运行后菜单刷新略慢),沿用上一版的记录,本版未改动。

Download