CapsWriter-Offline,可能是最好用的 PC 端语音输入工具(离线识别)

CapsWriter-Offline

这是 CapsWriter-Offline ,一个 PC 端的语音输入工具。

运行后,只要按下键盘上的 大写锁定键,就会开始录音,当你松开 大写锁定键 时,就会识别你的录音,并将识别结果立刻输入。

视频教程:CapsWriter-Offline 电脑端离线语音输入工具

特性

  1. 完全离线、低延迟、高准确率、中英混输、自动阿拉伯数字、自动调整中英间隔
  2. 热词功能:可以在 hot-en.txt hot-zh.txt hot-rule.txt 中添加三种热词,客户端动态载入
  3. 日记功能:默认每次录音识别后,识别结果记录在 年份/月份/日期.md ,录音文件保存在 年份/月份/assets
  4. 关键词日记:识别结果若以关键词开头,会被额外记录在 年份/月份/日期-关键词.md,关键词在 keywords.txt 中定义
  5. 服务端、客户端分离,可以让一台主机为局域网内的电脑提供识别服务
  6. 用文本编辑器打开 core_client.py ,可以编辑服务端地址、快捷键、录音开关……

懒人包

对于 Windows10 64 位用户,我打包了 exe 版本,可以从百度网盘或者 GitHub Releases界面下载。

对于 MacOS ARM 用户,我也做了打包版本,可以从百度网盘或者 GitHub Releases界面下载。(由于系统限制,客户端需要 sudo 启动,且默认快捷键为 right shift

由于模型文件太大,为了方便更新,打包版本中没有包含模型文件,所以需要分别手动下载软件和模型,模型文件也放在了百度网盘和 GitHub Releases 界面里边。

打包版本里有一个 models 文件夹,请把模型文件解压后放到 models 里,之后双击 exe,分别打开 ServerClient 即可使用。

下载地址:

模型打包后大小约 1.4G,下载要花些时间。

(百度网盘容易掉链接,补链接太麻烦了,我不一定会补链接。GitHub Releases 界面下载是最可靠的。)

其它系统,可以下载模型、安装依赖后从 Python 源码运行。

功能:热词

如果你有专用名词需要替换,可以加入热词文件。规则文件中以 # 开头的行以及空行会被忽略,可以用作注释。

  • 中文热词请写到 hot-zh.txt 文件,每行一个,替换依据为拼音,实测每 1 万条热词约引入 3ms 延迟
  • 英文热词请写到 hot-en.txt 文件,每行一个,替换依据为字母拼写
  • 自定义规则热词请写到 hot-rule.txt 文件,每行一个,将搜索和替换词以等号隔开,如 毫安时 = mAh

你可以在 core_client.py 文件中配置是否匹配中文多音字,是否严格匹配拼音声调。

检测到修改后,客户端会动态载入热词,效果示例:

  1. 例如 hot-zh.txt 有热词「我家鸽鸽」,则所有识别结果中的「我家哥哥」都会被替换成「我家鸽鸽」
  2. 例如 hot-en.txt 有热词「ChatGPT」,则所有识别结果中的「chat gpt」都会被替换成「ChatGPT」
  3. 例如 hot-rule.txt 有热词「毫安时 = mAh」,则所有识别结果中的「毫安时」都会被替换成「mAh」

功能:日记、关键词

默认每次语音识别结束后,会以年、月为分类,保存录音文件和识别结果:

  • 录音文件存放在「年/月/assets」文件夹下
  • 识别结果存放在「年/月/日.md」Markdown 文件中

例如今天是2023年6月5号,示例:

  1. 语音输入任一句话后,录音就会被保存到 2023/06/assets 路径下,以时间和识别结果命名,并将识别结果保存到 2023/06/05.md 文件中,方便我日后查阅
  2. 例如我在 keywords.txt 中定义了关键词「健康」,用于随时记录自己的身体状况,吃完饭后我可以按住 CapsLock 说「健康今天中午吃了大米炒饭」,由于识别结果以「健康」关键词开头,这条识别记录就会被保存到 2023/06/05-健康.md
  3. 例如我在 keywords.txt 中定义了关键词「重要」,用于随时记录突然的灵感,有想法时我就可以按住 CapsLock 说「重要,xx问题可以用xxxx方法解决」,由于识别结果以「重要」关键词开头,这条识别记录就会被保存到 2023/06/05-重要.md

image-20230604144824341

注意事项

  1. 目前使用的模型是 Paraformer 非流式模型,即录完再转,因此录音时间越长,上屏延迟越大。主流性能的 Windows 笔记本,RTF 大约 0.06,即大约每10s 录音需 0.6s 转录时长。
  2. 当用户安装了 FFmpeg 时,会以 mp3 格式保存录音;当用户没有装 FFmpeg 时,会以 wav 格式保存录音
  3. 默认的快捷键是 caps lock,你可以打开 core_client.py 进行修改
  4. MacOS 无法监测到 caps lock 按键,可改为 right shift 按键

修改配置

你可以打开 core_server.py ,在开头部分有注释,指导你修改服务端的端口,默认是 6006

你可以打开 core_client.py ,在开头部分有注释,指导你修改客户端的:

  • 连接的地址和端口,默认是 127.0.0.16006
  • 键盘快捷键
  • 是否要保存录音文件
  • 要移除识别结果末尾的哪些标点,(如果你想把问号也删除掉,可以在这边加上)

下载模型

本工具服务端使用了 sherpa-onnx ,载入阿里巴巴开源的 Paraformer 模型(转为onnx格式),来作语音识别,整个模型约 1GB 大小。下载有已转换好的模型文件:

另外,还使用了阿里巴巴的标点符号模型(转为了onnx格式):

模型文件太大,并没有包含在 GitHub 库里面,你可以从百度网盘或者 GitHub Releases 界面下载已经转换好的模型文件,解压后,放入 models 文件夹。

源码安装依赖

Windows 端

pip install -r requirements-server.txt pip install -r requirements-client.txt

有些依赖在3.11还暂时不无法安装,建议使用 python 3.10

Mac 端

在 Arm 芯片的 MacOS 电脑上(如 MacBook M1)无法使用 pip 安装 sherpa_onnx ,需要手动从源代码安装:

git clone https://github.com/k2-fsa/sherpa-onnx
cd sherpa-onnx
python3 setup.py install

在 MacOS 上,安装 funasr_onnx 依赖的时候可能会报错,缺失 protobuf compiler,可以通过 brew install protobuf 解决。

源码运行

  1. 运行 core_server.py 脚本,会载入 Paraformer 模型识别模型(这会占用1GB的内存,载入时长约十几秒)
  2. 运行 core_client.py 脚本,它会打开系统默认麦克风,开始监听按键(MacOS 端需要 sudo
  3. 按住 CapsLock 键,录音开始,松开 CapsLock 键,录音结束,识别结果立马被输入(录音时长短于0.3秒不算)

MacOS 端注意事项:

  • MacOS 上监听 CapsLock 键可能会出错,需要快捷键修改为其他按键,如 right shift
21 Likes

大佬啊,capswriter真是好使,特地登录来捧场。不过这个离线版,安装要求对很多普通用户来说好像高了一点。

另外问一下大佬,capswriter还有没有更新计划呢?比如将来有没有可能自定义快捷键?

1 Like

比起注册阿里云的 API 已经很低了。下载 Python 、下载项目、下载模型、安装依赖,然后双击就可以用了。

你可以动手操作一下,看见哪里也会有问题不会做。而且在脚本里边也可以直接修改快捷键。

CapsWriter 的最终目标是完全离线化的实时语音输入,还在等合适 Windows 端开源的离线模型工具(实时识别)。

大佬,配置Python等等一系列操作对父母长辈来说实在太难。啥时候能出个exe的安装包

是不是也不支持Windows7?

大佬,服务端01-sherpa-onnx-server.py跑不起来


看起来是里面的路径不太对 但是py文件里没有设置路径的地方,是不是编译的时候,sherpa-onnx-offline-websocket-server里面写死了?

你是没下载模型,只下载了脚本吧,模型要放到 paraformer-offline-zh 文件夹

不知道用Whisper.cpp改写一个有没有戏,之前试用过WhisperDesktop,编译后的exe文件体积还是很小的

更新了,出 Win10-64打包版的了。

没戏,对算力要求太高,延迟太大

需要从源码运行。Python3.8 可以用。我没有精力去做 win7 的打包。

出打包版了,可以编辑 py 文件修改快捷键

2 Likes


我好像看到个实时的?

实时的暂时没有 onnx 实现,速度很慢,也上不了 Linux 端。

好的,现在也很好用了,期待大佬的gui版本

好东西啊,先谢谢大佬。抽时间下载试试。

请问支持音频文件的转录吗?

2 Likes

安装个虚拟声卡应该可以支持转录

@Qingwa 邀请你来试用试用,我觉得这个质量能上首页

来了来了

感谢大佬提供的这个软件。已经测试成功。开始一直启动不了客户端,窗口弹一下就消失了。经过调试,发现是加载音频流失败。最后把麦克风孔插上,再次运行就正常了。其实麦克风孔上插的是一个耳机,并没有麦克风,但同样能录入打字。这个帖子就是用语音输入实现的。

现在有一个问题就是,无法在每一段话后面加上句号,中间好像可以自动加逗号。两句话之间也没有加入空隙。用语音说句号,结果出来的是句号两个字。建议可以在每一段录音文字的后面加一个空格,这样便于后期人工加标点。或者说一段语音文字最后两个号是句号时,转换成标点。

1 Like

编辑客户端配置,配置方法看 Readme