
软件介绍
CapsWriter-Offline是CapsWriter 的离线版,一个好用的 PC 端的语音输入工具。但是离线版是控制台运行,不方便使用,我就用deepseek写了个python的gui图形界面工具来管理。
下载地址
HaujetZhao/CapsWriter-Offline: CapsWriter 的离线版,一个好用的 PC 端的语音输入工具 ,使用方法主要看这个,介绍的最全面。
夸克下载链接,这是我打包exe后的下载地址,里面有打包工具的代码和打包后的文件以及gui图形界面的使用介绍。软件纯绿色,不需要安装,解压放置模型即可使用。
Releases · 531014023/CapsWriter-Offline-Windows-gui,补一个打包后exe文件下载地址,github发布页面比较稳,不会和谐。
使用方法
只需要下载CapsWriter-Offline-Windows-gui-exe.win-amd64-3.11.zip和models.zip这两个压缩包,解压到自己新建的文件夹,models.zip解压放置到exe.win-amd64-3.11\CapsWriter-Offline-Windows-64bit下面,运行exe.win-amd64-3.11下的.exe文件即可使用。
自行打包使用方法
建议使用打包好的文件,自行打包需要动手能力强,也没必要,效果和我提供的是一样,除非你实在不放心我打包的文件,可以自行打包。
打包所需文件:
CapsWriter-Offline-Windows-64bit# 待打包程序文件setup.py# 打包程序caps_writer_launcher.py/caps_writer_launcher_pyqt.py# 二选一,默认用pyqt版本,如果用旧版需要在setup.py中修改caps_writer_launcher_pyqt.py改为caps_writer_launcher.py
python setup.py build
此命令会在当前目录生成build文件夹,其中就是一个完整的应用,执行exe即可打开使用,需要注意的是在使用命令前,需要先将github程序CapsWriter-Offline-Windows-64bit放到当前目录供打包使用。
两个打包脚本执行的逻辑不一样,caps_writer_launcher.py打包后执行的是CapsWriter-Offline-Windows-64bit下的start_all.vbs,此文件是自定义的,就是隐藏黑窗口命令:
CreateObject("Wscript.Shell").Run "start_server.exe",0,False
WScript.Sleep 1000
CreateObject("Wscript.Shell").Run "start_client.exe",0,False
如果不是用的我提供的程序就需要自己添上start_all.vbs文件。
caps_writer_launcher_pyqt.py执行的是CapsWriter-Offline-Windows-64bit下的start_server.exe,start_client.exe,这个就不用添加start_all.vbs文件了。不过由于读取dos窗口内容会出现音频输出报错,需要修改核心程序代码,CapsWriter-Offline的核心音频处理功能位于 CapsWriter-Offline-Windows-64bit/util/client_stream.py 文件中。在文件import结束后增加代码:
# 对于Windows,尝试设置标准输出的编码
if sys.stdout.encoding is None or sys.stdout.encoding.upper() != 'UTF-8':
try:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
except:
pass
就可以解决这个问题。如果你用的是我提供的CapsWriter-Offline-Windows-64bit程序就不需要修改,我已经修改好了。
模型也需要去github的发布页面下载model.zip,下载后放置到打包后的exe文件同级的CapsWriter-Offline-Windows-64bit目录下即可使用。
打包前目录结构

build目录结构
build下面只有一个文件夹exe.win-amd64-3.11,下面的结构如下:

模型文件放置位置

注意事项
由于读取dos窗口内容会出现音频输出报错,需要修改核心程序代码,CapsWriter-Offline的核心音频处理功能位于 util/client_stream.py 文件中。在文件import结束后增加代码:
# 对于Windows,尝试设置标准输出的编码
if sys.stdout.encoding is None or sys.stdout.encoding.upper() != 'UTF-8':
try:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
except:
pass
就可以解决这个问题。