更新日志

May 30, 2026 · View on GitHub

v2.6

  • GPU 预加速:服务端新配置(默认关闭),适用于 Nvidia 独显,录音开始时主动锁定显存高频率,大幅降低模型转录延迟至 0.1s
  • 标点处理优化:仅对 8 词以内的结果去除末尾标点,长句不再误伤;可通过配置 config_client.py 指定某些程序强制去除标点
  • 带延迟的附加回车:用于同花顺等场景,输入股票名后等待 0.5s 自动回车切换,可在 config_client.py 配置
  • 角色功能简化:角色功能简化为单一开关;默认角色改用 DeepSeek API,方便新用户填入密钥后直接体验
  • ITN 增强:连续多数字转换更鲁棒
  • 活动窗口日志:每次识别后通过 debug 日志输出当前活动窗口名,方便用户配置 paste_apps
  • 标点模型容错:取消强制检查,加载失败时静默回退,避免启动受阻
  • 热词使用体验:右键菜单点击「热词」直接打开 hot.txt 文件,不再弹窗
  • 重启菜单:托盘右键新增「重启」选项,便于修改配置后快速重启生效
  • 集成显卡兼容:加入调试性配置项,集显出问题时可通过禁用 feature 解决
  • Windows Terminal 适配:支持隐藏 Windows Terminal 控制台窗口

v2.5

  • 引入 Qwen3-ASR-1.7B:140ms 极速推理,准确率夯爆。Decoder Vulkan 加速默认打开,需占 1.6GB 显存。显卡空闲时,会降低显存频率,冷启动转录延迟升至 300ms。若用管理员权限运行 nvidia-smi -lmc 9000 锁定显存不降频,实测 RTX5050 转录延迟可降至 100ms
  • 集成 Force Aligner:辅助 Qwen3-ASR 支持时间戳,按需加载、超时释放,仅文件转录时占用资源
  • 热词别名:热词支持用 | 分隔定义多个别名,
  • 角色别名name| 分隔定义多个别名,解决 ASR 对角色名识别不准的问题
  • 移除纠错历史:热词别名已能覆盖纠错历史的需求,移除 hot-rectify.txt 及相关逻辑
  • 文件转录支持热词:文件转录现在也可以使用热词功能
  • 语言配置config_client.py 新增 language 选项,支持指定识别目标语言
  • 架构重构:进行了大量重构,方便后续维护
  • 日志优化:只保留一份日志文件

v2.4

  • 改进 Fun-ASR-Nano-GGUF 模型,使 Encoder 支持通过 DML 用显卡(独显、集显均可)加速推理,Encoder 和 CTC 默认改为 FP16 精度,以便更好利用显卡算力,短音频延迟最低可降至 200ms 以内。
    • 若用管理员权限运行 nvidia-smi -lmc 9000 锁定显存不降频,实测 RTX5050 转录延迟可降至 100ms
  • 服务端 Fun-ASR-Nano 使用单独的热词文件 hot-server.txt ,只具备建议替换性,而客户端的热词具有强制替换性,二者不再混用
  • 可以在句子的开头或结尾说「逗号、句号、回车」,自动转换为对应标点符号,支持说连续多个回车。
  • Fun-ASR-Nano 加入采样温度,避免极端情况下的因贪婪采样导致的无限复读
  • 服务端字母拼写合并处理

v2.3

  • 引入 Fun-ASR-Nano-GGUF 模型支持,推理更轻快
  • 重构了大文件转录逻辑,采用异步流式处理
  • 优化中英混排空格
  • 增强了服务端对异常断连的清理逻辑

v2.2

  • 改进热词检索:将每个热词的前两个音素作为索引进行匹配,而非只用首音素索引。
  • UDP广播和控制:支持将结果 UDP 广播,也可以通过 UDP 控制客户端,便于做扩展。
  • Toast窗口编辑:支持对角色输出的 Toast 窗口内容进行编辑。
  • 多快捷键:支持设置多个听写键,以及鼠标快捷键,通过 pynput 实现。
  • 繁体转换:支持输出繁体中文,通过 zhconv 实现。

v2.1

  • 更强的模型:内置多种模型可选,速度与准确率大幅提升。
  • 更准的 ITN:重新编写了数字 ITN 逻辑,日期、分数、大写转换更智能。
  • RAG 检索增强:热词识别不再死板,支持音素级的 fuzzy 匹配,就算发音稍有偏差也能认出。
  • LLM 角色系统:集成大模型,支持润色、翻译、写作等多种自定义角色。
  • 纠错检索:可记录纠错历史,辅助LLM润色。
  • 托盘化运行:新增托盘图标,可以完全隐藏前台窗口。
  • 完善的日志:全链路日志记录,排查问题不再抓瞎。

v1.0

  • 通过分段识别和去重,实现了支持无限时长语音的转写
  • 客户端支持转写音视频文件为 srt 字幕,只需将音视频文件拖动到客户端 exe 上打开即可

v0.6

  • 新增日记功能,将每日的录音结果保存在一个 Markdown 文件中
  • 新增关键词日记功能,每日的以关键词开头的录音结果会保存在特别的 Markdown 文件中
  • 新建录音文件夹的时候,会复制一个 Python 辅助脚本,用于清理没有被 Markdown 文件引用的附件,这样一来,通过编辑 Markdown 日记就可以清理不需要保存的录音
  • 新增定义录音文件保存目录
  • 默认保存48000采样率高品质录音录音,如果用户安装了 FFmpeg 则保存为 mp3 格式,否则保存为 wav 格式
  • 输入方式改为模拟 Ctrl + V 粘贴,粘贴完后恢复剪贴板内容
  • 使用 rich 库输出彩色文字,尽量在各种终端达到一致的显示效果

v0.5

  • 修改热词文件后,不用重启客户端,就可以动态更新热词了。

v0.4

  • 为客户端加入了三种热词功能:中文、英文、自定义
  • 改进了对中文数字的搜索,当数字的左侧或者右侧有英文时,就一定会被选中。
  • 改进了中英空格排版,能够正常输出 iPhone 4s 这样的词语。

v0.3

  • 客户端当音频设备名不可 utf-8 解码时,不再闪退
  • 客户端添加配置可以编辑修改,要消除识别结果末尾哪些标点
  • 客户端添加配置可以修改快捷键
  • 客户端添加配置可以修改快捷键触发的时间阈值
  • 客户端连接中断会自动进行重试
  • 客户端提示当前所用的快捷键
  • 服务端对识别结果,中英文混排进行空格校正
  • 当地址无法被绑定时提示问题,而不是直接闪退

起源

2020年10月,因手机上的语音输入法很好用,但电脑上却没有足够好用的语音输入法,我手写了一个工具 CapsWriter,通过长按大写锁定键录音,松开后,调用阿里云的一句话识别 API,识别后上屏。12月的时候,还加入图形化界面。但当时大学宿舍的校园网经常抽风,没有稳定的网络环境,转录延迟飘忽不定。有时候说完话了,等了好几秒,才发现 WiFi 没有连接,毁心态。但是当时并没有识别率能满足要求的离线中文 ASR 模型。

后来 Whisper 发布,中文识别率确实不错,但是模型延迟很高,无法满足本地语音输入。

到了2023年5月,在B站看到了 极客湾 的视频 我们做了个能对话的AI派蒙,免费给大家玩! ,他们实现的效果非常好,其中提到 ASR 模型用了阿里 FunASR 团队发布的开源 Paraformer 模型,于是就拿来测试了下,果然识别准确率很棒、延迟超低,于是弃坑 CapsWriter ,立马新开了 CapsWriter-Offline ,用 sherpa-onnx 调用 Paraformer 进行转录,效果非常好。

2025年12月09日,我看到阿里 FunASR 团队开源了 Fun-ASR-Nano 模型,拿来一测,果然准确率又上一个台阶,在 sherpa_onnx 支持后,我赶紧更新了 CapsWriter-Offline v2.1,一次性加入了 SenseVoice-Small 和 Fun-ASR-Nano 模型的支持。但问题是当时 sherpa_onnx 是用 ONNX 实现的 Fun-ASR-Nano,速度有些慢。

我研究了 Fun-ASR-Nano 的架构,发现它的 Decoder 是 LLM 架构,而推理 LLM 最快的是 LLama.cpp 。虽然我编程能力差,但刚好此时,Google 推出了 Antigravity AI 编程 IDE,里面有 Gemini 和 Claude 模型,在他们的帮助下,我成功写出了 Fun-ASR-GGUF,用 onnx 和 gguf 格式混合运行 Fun-ASR-Nano,用 LLama.cpp 加速它的 LLM Decoder 部分,在我的笔记本上实现了最快的推理速度:

设备RTF
GPU RTX50500.025
CPU U9-285H0.1

2026年01月21日Qwen3-TTS 开源发布了,生成效果极其优异,让我特别想要,但官方版本推理速度很慢,于是基于 Fun-ASR-GGUF 的加速推理经验,在 Antigravity 的帮助下,我又实现了 Qwen3-TTS-GGUF ,也是用 LLama.cpp 加速它的 LLM Decoder 部分。

2026年01月28日,间隔没几天,Qwen3-ASR 开源发布了,本来没抱太大预期的,但下载 1.7B 一测后,又给我震惊了,准确率竟比 Fun-ASR-Nano 还上一个台阶,能吊打闭源模型!于是在 Qwen3-TTS-GGUF 经验的帮助下,我马不停蹄地实现了 Qwen3-ASR-GGUF 加速推理,实现了最快的推理速度:

设备RTF
GPU RTX50500.05
CPU U9-285H0.2

这就是 CapsWriter-Offline 大致的来路。总体就是这几个组件:

  • 模型推理
  • 热词替换
  • 按键监听与录音

当前只有 Windows 的打包,是因为我只有 Windows 电脑,没有 Linux 与 MacOS 的需求。在 Vibe Coding 时代,我相信需求的小伙伴在 Claude Code 的帮助下,也能在其系统上做出类似功能的实现。