Repository navigation
SrcBox v1.1.18
v1.1.18 Release Notes
Release Date: 2026-10-14
Previous Version: v1.1.17
Highlights
本版把语音遥控从「能听懂一个词」推进到「能听懂一整句」——回看昨天晚上的新闻联播 这类「回看 + 时间 + 频道 + 节目名」的任意组合现在都能直接执行;语音词表(短语 / 时间词 / 噪声词)从程序里独立出来,可以不重装软件单独升级;同时修掉离线语音模型下载被服务器拒绝(403)与断点续传反复失败(416)两个问题,并补上《苹果语音控制》《安卓语音控制》两篇教程。
- 整句语音理解重做:支持日历日期(
10月13号/十三号/2026年10月13日)、星期(上周五/星期一)、汉字数字(十三过去被算成 3)、时段换算(晚上8点过去被当成早上 8 点)与「时间线索」窗口(说8点也能找到 7 点开播的节目),并把已经用于判断时间的词从节目名过滤词里剔除。 - 语音词表包(独立升级):内置短语、介词、噪声词、时段与星期词表改由 JSON 词表包提供,可在 设置 → Web 遥控器 → 语音 里「检查更新」(从 GitHub Release 下载,带校验与失败回退)、导入本地文件、或移除并回到内置词表。
- 语音设置补全:新增匹配严格度(宽松 / 标准 / 严格)、时间线索分钟数、是否识别日历日期、「只有一个匹配就直接回看」(此前有配置、没有界面)、追加过滤词。
- 离线语音模型下载修复:下载请求缺少
User-Agent,被 ModelScope 的 LFS CDN 直接拒绝(403);.part文件已经下满、或服务器拒绝断点续传(416)时下载会永久失败——现在会重置并重新下载。 - 新增教程:《苹果语音控制》(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;面板内部配色已逐像素对齐,该差异仅出现在透明分层窗口边缘,本版未处理。 - 远程页面不显示播放源健康状态(数据模型中没有该字段)。
- 菜单构建仍会累积内部菜单项引用(长时间运行后菜单刷新略慢),沿用上一版的记录,本版未改动。