Commit Graph
64 Commits
Author SHA1 Message Date
crosswk f7f37252fb feat(网页版): 官网首页与 Demo 支持中英切换,默认跟随浏览器语言
页面文案默认英文,导航栏加语言开关,选择记在 localStorage,Demo 的内置提示词
也各留一套。中文标题与副标题仍允许 /api/public/config 覆盖,方便自部署方改文案。
后端与 server/README 的措辞统一改为 AI cleanup,和客户端的「AI 整理」对齐。
2026-08-13 22:09:42 +08:00
crosswk 79c3f8a61c feat(自动更新): 后台静默下载,改由用户或退出时安装
原先下载完就立刻关闭应用装上,正在说话的用户会被一个关不掉的全屏遮罩打断。现在下载完
只在侧栏「关于」图标上提示,由用户点「立即安装」,或在下次关闭应用时静默装好。
顺带补上周期检查(原先只在启动时查一次,常驻托盘的用户几周都发现不了新版本)、安装包
sha512 校验、已下载包的复用;并修复自建服务器用户收不到更新 —— 更新 manifest 原先跟随
用户可改写的后端地址。设置里的「自动检测更新」开关不再暴露,底层设置项保留备用。
2026-08-12 16:16:32 +08:00
crosswk 900ffd7c7b feat(本地模型): 新增英文 ASR 模型 Parakeet Unified EN 与 Nemotron 3.5
Parakeet 在英文上同时是目录里最快和最准的一档(LibriSpeech WER 1.62%、
Vulkan RTF 0.023),代价是只支持英文;Nemotron 覆盖 32 个 locale,补上
欧洲语系与多语言混用的场景。权重转存到自有仓库,与上游字节一致。

Nemotron 是第一个只认带地区 locale(en-US / zh-CN)的模型,而界面的语种
设置只有 auto/zh/en/ja/ko,给不出这种形式,故语种改为先按模型自报的清单
解析、再传给引擎。
2026-08-12 12:05:15 +08:00
crosswk df8ac2ce29 feat: 完成界面英文化并加强快捷键校验 2026-08-12 09:42:00 +08:00
crosswk 375688d276 feat(0.1.6): 识别失败不再只显示「无有效声音」,各模式补齐诊断日志
云 API 各家 provider 原先在失败点几乎不记日志,空结果还走成功路径,用户只看到
「未检测到有效声音」却无从排查。现在统一经 providers/diag.rs 记录失败环节、HTTP
状态与服务端追踪 ID,空结果必留痕(只记字数、不记文本),原因写进历史记录详情;
供应商卡片新增「测试全部」。同时修复鼠标侧键/中键按住说话约 1.7 秒后自动结束、
豆包服务端中途断连被当成没有声音、报错路径按字节截断中文导致的 panic,以及官网
GitHub 链接指向错误仓库。
2026-08-09 08:42:56 +08:00
crosswk b833d9ffe1 feat: 0.1.5 — 语音识别服务卡片化,修复本地模型加载卡住界面
新增
- 云 API 语音识别改为卡片式管理:一张卡一套完整配置,同一家可存多份
  (如两个百炼账号),点一张即启用;卡上显示可用状态与实测耗时,耗时是用
  内置音频真跑一次识别测出来的,按 RTF 分档
- 豆包 ASR 支持新版控制台的接入方式:新版只需一个 API Key,设置中可显式
  选择控制台代次,两代密钥各存一份,来回切换不必重新粘贴

变更
- 设置页的键盘快捷键说明改为讲清 Esc:录音或识别处理期间按 Esc 可取消本次
  识别,不插入文字,录音也不保留
- 「检测当前应用」的等待时间从 3 秒延长到 5 秒
- 悬浮窗长度的选项改按「长 / 中 / 短」排列
- 识别服务的检测结论超过 24 小时转为中性色并提示重测
- 千问流式识别缺少业务空间 ID 时在卡片上直接提示,不再等到录音时才失败

修复
- 选择本地识别模型后界面假死:读取引擎状态的命令移出主线程,且不再与模型
  加载抢同一把锁;加载期间给出明确提示
- 豆包仅填写一个密钥时,会把密钥同时当作 App ID 发送并写进请求体
- 仅开通「并发版」资源的豆包账号无法使用普通识别,现在会在小时版与并发版
  之间依次尝试
- 豆包的连接与请求日志记录服务端返回的 X-Tt-Logid,便于排查连接问题

详细变更见 CHANGELOG.md。
2026-08-07 17:47:56 +08:00
crosswk e30b314a1c docs: 更正 CHANGELOG 中「服务器模式下 AI 服务页」的描述
该页后来改成只标注不生效、配置与测试仍可正常进行,CHANGELOG 仍写着「整体置灰」,
与实际行为不符。
2026-08-06 22:06:23 +08:00
crosswk 4c7605e5f0 feat: 0.1.4 — 本地识别换代,AI 服务与设置页重做
新增
- 本地识别改用 transcribe.cpp(GGUF/ggml):可选模型从 2 个扩到 5 个
  (SenseVoice Small、Fun-ASR Nano、Qwen3-ASR 0.6B/1.7B/1.7B 高精度),
  支持 Vulkan 显卡加速并可手动切回 CPU,加载后预热一次推理,空闲可卸载
- AI 服务改为卡片式管理:一张卡一套完整配置,可测连通性与响应延迟并分档留痕
- 应用 Prompt 规则支持用户自建,含「检测当前应用」自动填进程名
- 快捷键支持 Ctrl+Win 这类纯修饰键组合,三类快捷键之间做冲突检测
- 配置导出可按需选择,导入前给出新增/更新/跳过的变更预览
- 热词组、文本替换、润色模式支持拖拽排序

变更
- 移除 sherpa-onnx:安装体积与首次响应都由新引擎接管,旧 ONNX 权重开机自动回收
- 「格式规范」仅在未开 AI 整理时生效,开启后排版交给 AI;文本替换始终生效
- 单次录音上限提前在设置页说明,最后一分钟显示剩余时间
- 全应用统一称「AI 整理」(此前有三种叫法)

修复
- 本地模式下模型未下载时仍能开始录音
- 历史记录可同时播放多条录音
- 设置页开关与选择器在读回已保存值时出现一次跳变
- 应用规则误匹配(在 Outlook 中写标题含 Teams 的邮件被 Teams 规则抢走)
- 弹窗遮罩未覆盖整个窗口

构建
- 客户端构建新增 CMake 与 Vulkan SDK 前置,README/CONTRIBUTING 已同步
- 打包随附 VC++ 运行库(app-local),并在发版前校验安装包内容

详细变更见 CHANGELOG.md。
2026-08-06 21:40:32 +08:00
crosswk 3b1f1e8980 更新 0.1.3 更新日志与关于页亮点:新增「历史记录开关」条目 2026-07-29 23:28:29 +08:00
crosswk 67b23f687f 新增关闭历史记录开关:可在设置中停止保存历史记录(默认开启) 2026-07-29 22:19:00 +08:00
crosswk 670f43c309 CHANGELOG 0.1.3:反馈可查看进度、修复麦克风列表看不到设备名、修复「请靠近麦克风」说话不消失 2026-07-29 22:04:10 +08:00
crosswk 8fdf35d16f 修复「请靠近麦克风」说话也清不掉:容忍字间短暂停顿,累计正常音量达0.5s即清除,不再被停顿打回 2026-07-29 21:59:34 +08:00
crosswk d38bece14b 去掉 auto-accept 参数,改由 PermissionRequested 处理器授权麦克风(使权限持久granted以恢复设备枚举) 2026-07-29 21:37:02 +08:00
crosswk 0b8de417c1 麦克风名字:挂 WebView2 PermissionRequested 处理器将麦克风置为持久授权,恢复设备枚举 2026-07-29 21:33:53 +08:00
crosswk f1bf117af6 回退 --use-fake-ui-for-media-stream(导致WebView2创建失败0x8000FFFF) 2026-07-29 21:14:48 +08:00
crosswk e63c04f0a4 麦克风名字为空:WebView2 加 --use-fake-ui-for-media-stream 使权限持久化以恢复设备枚举 2026-07-29 21:06:09 +08:00
crosswk f017cde9df 麦克风列表:始终在活跃音频流下枚举,适配新版WebView2的设备名隐藏行为 2026-07-29 20:54:46 +08:00
crosswk 41d98dd275 修复麦克风名字为空:在音频流活跃时枚举设备(WebView2自动放行下权限不持久) 2026-07-29 20:40:08 +08:00
crosswk af7d5529e7 修复麦克风列表:枚举前先申请权限,恢复显示系统全部麦克风 2026-07-29 20:34:39 +08:00
crosswk b13eaccb79 客户端:将超链接样式移到网址本身,查看反馈进度改为说明文字 2026-07-29 20:25:58 +08:00
crosswk 8f70c94521 客户端:反馈成功提示注明待作者通过后方可查看进度 2026-07-29 20:23:28 +08:00
crosswk 741c92ff31 客户端:反馈成功提示移到消息位(不再额外撑高卡片),网址补全 /feedback.html 后缀 2026-07-29 20:14:55 +08:00
crosswk 67d5299bca 客户端:反馈成功提示显示服务器地址,查看反馈进度改为带上角标的下划线超链接 2026-07-29 20:03:04 +08:00
crosswk 65bbaaa686 客户端:反馈发送成功提示与查看进度链接合并为一行并常驻 2026-07-29 19:38:29 +08:00
crosswk 75dff8bb1f 客户端:查看反馈页链接改用当前配置的服务器地址 2026-07-29 17:54:44 +08:00
crosswk ae6b498206 客户端:反馈提交成功后增加查看公开反馈页的链接 2026-07-29 16:48:57 +08:00
crosswk 340a9805be 录音时区分「麦克风静音」与「声音偏小」,默认麦克风被静音显示红色高警
- 新增查询默认采集设备静音状态的命令 get_mic_mute_state(Windows Core Audio,查 eCapture 端点 GetMute),录音开始即时查询
- 默认麦克风被系统静音 → 悬浮窗即时红色高警「麦克风已被静音」;此时只在胶囊里居中显示红字、不画平波形,避免撑破圆角
- 基于音频信号的两档提醒:完全无信号(峰值≈0)→「未检测到声音」,有声音但 RMS 偏低 →「请靠近麦克风」
- 悬浮窗 warning 支持 error(红)/warn(琥珀) 两种级别;有警告时隐藏计时数字以免撑宽胶囊
- 检测到真实说话即清除提醒;选了特定麦克风时静音查询暂退回信号检测(默认设备可靠支持)
- 抽出 classifyMicLevel 纯函数并补单元测试;CHANGELOG / 关于页「本次更新」归入 0.1.3
2026-07-29 16:05:40 +08:00
crosswk 7d5eade190 0.1.3: 修复右Alt热键抢焦点、数字规范化误转「一点」、诊断页AI未开启;新增模型自定义存储位置与历史手工编辑
- 键盘钩子:Alt 类单键热键(按住说话/免提)连 keyup 一起吞,避免松键呼出目标程序菜单栏抢走输入框焦点、导致插入落空但日志显示成功
- 数字规范化:整点仅在有明确时间信号时才转,口语「一点」不再被误转为「1点」
- 诊断页:所有模式(含默认的服务器模式)关闭「AI 整理」后均显示「未开启(极速模式)」
- 新增本地模型自定义存储位置:可改存到其它磁盘,更换目录后自动迁移已下载模型
- 历史记录支持手工编辑整理结果:失焦/离开页面自动保存,编辑过的记录加小图标标记
- 版本号 0.1.2 → 0.1.3,同步更新 CHANGELOG 与关于页「本次更新」亮点
2026-07-29 13:40:14 +08:00
crosswk 73c8fa2a08 备份与迁移导入改用应用内弹窗,并补充导入导出更新日志与关于页
- 导入的覆盖确认与成功提示改为应用内弹窗(替代原生系统对话框),导入完成后自动重启

- 导出/导入失败提示改为卡片内内联横幅,与导出成功/进度样式统一

- CHANGELOG 将「备份与迁移」列为新增功能并说明导入导出;关于页发布亮点同步补充
2026-07-24 15:07:27 +08:00
crosswk d9ae553d3c 修复设置保存卡顿并优化诊断页 AI 校对状态显示(0.1.2)
- 修复保存润色模式/切换麦克风等设置后卡顿 2-4 秒:get_client_runtime_info 改用原生接口(GetUserDefaultLocaleName / GlobalMemoryStatusEx)替代 PowerShell,并把机器信息采集移出设置刷新热路径、启动时取一次复用

- 诊断页「AI 校对」未开启时不再显示绿色对勾,改为中性「未开启」状态并温和提示

- 通用设置无标题卡片补充「偏好设置」标题

- 更新 CHANGELOG 与关于页发布亮点,标注 0.1.2 发布日期
2026-07-24 12:12:13 +08:00
crosswk fc1eb4b0e7 修复悬浮窗创建失败并增加分级诊断日志;新增本地备份/恢复;版本 0.1.2
- 悬浮窗:WebView2 浏览器参数统一到 main.rs 全局常量,移除主窗专属 additionalBrowserArgs,并加启动一致性护栏

- 悬浮窗:创建链路改为分级日志(create dispatched / page load / renderer ready / render ack)与失败分类

- 新增本地备份与恢复功能

- 版本号 bump 到 0.1.2
2026-07-24 10:55:10 +08:00
crosswk 77bfe8b74f chore: 版本号 bump 到 0.1.1
- package.json / Cargo.toml / Cargo.lock / tauri.conf.json 版本号 0.1.0 → 0.1.1
- CHANGELOG 0.1.1 定版日期
2026-07-22 10:27:48 +08:00
crosswk d57db341dd 数字规范化时间修复 + 历史搜索高亮 + 默认开启(0.1.1)
- 数字规范化:修复时间(如「九点三十二分」)被误当小数、以及句末小数偶发不生效;默认改为开启
- 历史记录搜索:命中的关键词在正文与 ASR 原文里高亮显示
- 更新 CHANGELOG 与关于页更新摘要至 0.1.1
- 更新 README 用户反馈微信群二维码图片
2026-07-22 09:28:54 +08:00
crosswk b120593bdc 热词管理:过多时折叠 + 温和提示 + 支持情况表格
- 分类内热词超过 30 个自动折叠(显示前 30,可展开全部)
- 热词总数超过 200 时显示可关闭的温和提示(热词并非越多越好)
- 热词说明 ⓘ 改为表格,列出各模型热词支持与上限;Tooltip content 放宽为 ReactNode
2026-07-21 20:04:47 +08:00
crosswk 11ef6727ef 悬浮窗与快捷键体验优化(0.1.1)
- 悬浮窗置顶:显示/前台切换/显示期间周期性用原生 SetWindowPos 重申
  HWND_TOPMOST(不抢焦点),修复被其他置顶程序(播放器/会议共享条等)遮挡
- 低音量提醒:文案缩短并单行不换行、需持续说话约 0.5s 才消失(不再闪烁)、
  未听到过说话时静音约 2s 提醒、已说过话后约 5s 才提醒,避免过度催促
- 识别结果为空时用琥珀色短暂显示「未检测到有效声音」,不再一闪而逝
- 快捷键:「按住说话」「免提模式」支持绑定鼠标中键(复用低级鼠标钩子)
- 快捷键设置区新增信息说明(ⓘ);绑定中键后一次性提示其原功能将被占用
2026-07-21 10:15:59 +08:00
zhifu gao d879abe643 Clarify hotword support across ASR modes (#23)
Closes #20. Docs-only: hotword support matrix across ASR modes + docs regression test.
2026-07-20 01:36:57 +00:00
crosswk e9f0859980 插入文本内容排除出剪贴板历史与云剪贴板
- 写入剪贴板时附加 CanIncludeInClipboardHistory=0、CanUploadToCloudClipboard=0
  及 ExcludeClipboardContentFromMonitorProcessing 标记,使插入的文本及
  「保护剪贴板」还原的内容都不进入 Win+V 历史与云剪贴板
- CHANGELOG、关于页更新摘要同步记录本次优化
2026-07-18 20:31:10 +08:00
crosswk b34f063659 增强各 ASR 引擎的热词识别
- 豆包:热词 context 移到 request.corpus.context,修复热词不生效
- 千问 qwen3-asr-flash(非实时):改用逗号词表并加回显检测,避免整串回显热词库
- 新增 restoreHotwordSpacing:还原被 ASR 拆开/改小写的无空格热词,并接入重新识别路径
- 新增「热词注入 AI 提示词」开关(默认关,位于 AI 整理页),把热词表注入系统提示词以提升准确率
- 实时字幕开关与热词页新增信息提示,说明各模型热词支持与实时字幕取舍
2026-07-18 19:46:25 +08:00
crosswk f74dae42d1 fix: 数字规范化支持多段点分版本号 + 放宽豆包 Access Token 校验
- 数字规范化:多段「数字点数字点数字」按版本号处理(零点一点零 → 0.1.0),
  单段仍为普通小数(三点一四 → 3.14),修复此前只转第一段留下「点零」的问题
- 豆包 Access Token 格式校验放宽:Token 可能含 - _ 等符号、长度不固定,
  改为仅在包含空格/换行等明显异常时提示,避免误报
2026-07-17 23:48:49 +08:00
crosswk 95dd015130 feat: 流式实时字幕 + 诊断常见问题 + 应用规则扩展(0.1.0)
- 新增流式实时字幕:说话时在悬浮窗实时显示识别文字,支持豆包 Seed-ASR 2.0 与千问 qwen3-asr-flash-realtime;开关位于设置-外观页,默认关闭
- 悬浮窗字幕 UI:内容驱动尺寸、朝下尖角、光标闪烁动画,消除漂移与抖动
- 实时字幕仅对支持流式的模型生效(doubao_v2、qwen_realtime);千问实时需填写北京地域业务空间 ID
- qwen3-asr-flash 短音频热词回显修复
- 诊断页新增「常见问题」模块(文字无法插入的排查步骤)
- 应用 Prompt 规则新增 Codex、微信、QQ
- 修复诊断报告覆盖记录终点时间多余的 [ 符号
- 版本升级至 0.1.0,更新 CHANGELOG 与关于页更新摘要
2026-07-17 19:45:55 +08:00
crosswk 68dff21dc6 fix: 桌面模式服务器不再拼接指令语气的 user 消息外壳,三端 AI 校对统一中性标签 2026-07-17 10:11:16 +08:00
crosswk 8aa0751e2a feat: 快捷键支持鼠标侧键(PTT/免提),侧键经底层鼠标钩子录制与触发 2026-07-17 10:10:07 +08:00
crosswk 557839014e docs: 更新 CHANGELOG 0.0.9(补充一键更新、公告栏、自动更新修复与 0.0.8 手动升级说明) 2026-07-16 12:32:35 +08:00
crosswk 386ea1d298 perf: ptt-watchdog 健康快照改为按需记录,正常时每10分钟心跳 2026-07-16 11:25:06 +08:00
crosswk dffb6081f8 chore: 增强悬浮窗与文本注入的诊断日志
- 文本注入失败时记录 GetLastError(排查插入失败,如 err=5 为权限/UIPI)
- 悬浮窗 present 日志增加运行时长、GDI/USER 句柄数、可见性(排查长时间运行后悬浮窗不显示)
2026-07-16 11:02:02 +08:00
crosswk 56ca218cf5 fix: 首页公告 info 级别改用蓝色(原用主题色叠透明度显示为灰) 2026-07-16 10:15:47 +08:00
crosswk c1772935a5 feat: 新增运营公告端点 /api/notice
- 读取 notices/notice.json 下发公告,无文件时返回空
- 新增 notices_dir 配置项
2026-07-15 23:30:51 +08:00
crosswk 4680003a11 feat: 一键检查更新、修复更新后自动重开、首页远程公告
- 关于页「检查更新」改为一步到位:检查→下载→安装
- 修复自动更新安装完成后无法自动重新打开应用的问题
- 新增首页公告栏:可由服务端下发通知,引导用户(如手动下载新版)
2026-07-15 23:29:42 +08:00
crosswk edcc0fc3a1 feat: 0.0.9 新增文本处理设置,优化云 API 识别与悬浮窗
新增
- 文本处理设置(热词页):一组不依赖 AI 的文本格式开关,关闭 AI 整理也生效
  - 数字规范化:中文数字转阿拉伯数字(如 三点一四 → 3.14、百分之十五 → 15%)
  - 去除句末标点、标点替换为空格
  - 智能分段改为可关闭的开关,默认开启

优化
- 云 API 识别配置:千问 ASR(含流式)仅需百炼 API Key,App ID 仅豆包显示
- 提升千问 ASR 流式连接与结果聚合稳定性,减少异常回退
- 多显示器下悬浮窗显示在录音所在屏幕底部
- 写入失败的结果悬浮窗自动关闭更快,复制后约 0.5 秒关闭

chore: 版本号升至 0.0.9(package.json / tauri.conf.json / Cargo.toml)
2026-07-15 20:06:46 +08:00
crosswk 8080e66437 fix: 优化千问流式语音识别
- 修复千问流式 WebSocket 连接异常
- 修正千问流式的 App ID 配置显示
- 按实时协议聚合最终识别结果
2026-07-15 10:24:44 +08:00