CapsWriter-Offline
这是 CapsWriter-Offline
,一款PC端的语音输入和字幕转录工具。
主要功能:
- 按下键盘上的
大写锁定键
开始录音,松开时,系统会立即识别并输入结果。 - 将音视频文件拖拽到客户端即可转录生成srt字幕。
视频教程:CapsWriter-Offline 电脑端离线语音输入工具
特点
- 完全离线、无时长限制、低延迟、高准确率、中英混合输入、自动转换阿拉伯数字、自动调整中英间距
- 热词功能:可在
hot-en.txt
、hot-zh.txt
和hot-rule.txt
中添加三种热词,客户端动态加载 - 日记功能:默认每次录音识别后,结果保存在
年份/月份/日期.md
,录音文件保存在年份/月份/assets
- 关键词日记:识别结果若以关键词开头,会被记录在
年份/月份/关键词-日期.md
,关键词在keywords.txt
中定义 - 转录功能:将音视频文件拖拽到客户端即可转录生成srt字幕
- 服务端与客户端分离,可支持多台客户端
- 编辑
config.py
可配置服务端地址、快捷键、录音开关等
懒人包
Windows系统:
- 请确保安装了Microsoft Visual C++ Redistributable 运行库
- 服务端使用的onnxruntime仅支持Windows 10及以上版本
- 服务端加载模型需要4G系统内存,仅支持64位系统
- 额外打包了32位系统可用的客户端,支持Windows 7及以上版本
- 模型文件较大,单独打包,解压后请放入软件目录的
models
文件夹
其他系统:
- 其他系统可下载模型、安装依赖后从Python源码运行
- 由于缺乏Mac设备,无法打包Mac版本,只能从源码运行,可能需要解决一些问题(系统限制下,客户端需要sudo启动,默认快捷键为
right shift
)
模型说明:
- 模型文件较大,为方便更新单独打包
- 解压后请放入软件目录的
models
文件夹
下载地址:
- 百度网盘: https://pan.baidu.com/s/1zNHstoWZDJVynCBz2yS9vg 提取码: eu4c
- GitHub Release: Releases · HaujetZhao/CapsWriter-Offline
(百度网盘链接可能失效,不一定会更新。GitHub Releases是最可靠的下载方式。)
功能:热词
如需替换专用名词,可添加热词文件。规则文件中以#
开头的行和空行会被忽略,可用作注释。
- 中文热词请添加到
hot-zh.txt
文件,每行一个,根据拼音替换,每1万条热词约增加3ms延迟 - 英文热词请添加到
hot-en.txt
文件,每行一个,根据字母拼写替换 - 自定义规则热词请添加到
hot-rule.txt
文件,每行一个,用等号分隔搜索词和替换词,如毫安时 = mAh
可在core_client.py
文件中配置是否匹配中文多音字,是否严格匹配拼音声调。
检测到修改后,客户端会动态加载热词,效果示例:
- 若
hot-zh.txt
中有热词"我家鸽鸽",所有识别结果中的"我家哥哥"都会被替换为"我家鸽鸽" - 若
hot-en.txt
中有热词"ChatGPT",所有识别结果中的"chat gpt"都会被替换为"ChatGPT" - 若
hot-rule.txt
中有热词"毫安时 = mAh",所有识别结果中的"毫安时"都会被替换为"mAh"
功能:日记、关键词
默认每次语音识别结束后,会按年、月分类保存录音文件和识别结果:
- 录音文件存放在"年/月/assets"文件夹下
- 识别结果存放在"年/月/日.md" Markdown文件中
例如今天是2023年6月5日:
- 语音输入任意内容后,录音会被保存到
2023/06/assets
路径下,以时间和识别结果命名,并将识别结果保存到2023/06/05.md
文件中,便于日后查阅 - 如果在
keywords.txt
中定义了关键词"健康"用于记录身体状况,吃完饭后可以按住CapsLock
说"健康今天中午吃了大米炒饭",由于识别结果以"健康"关键词开头,这条记录会被保存到2023/06/05-健康.md
中 - 如果在
keywords.txt
中定义了关键词"重要"用于记录突发灵感,有想法时可以按住CapsLock
说"重要,xx问题可以用xxxx方法解决",由于识别结果以"重要"关键词开头,这条记录会被保存到2023/06/05-重要.md
中
功能:转录文件
启动服务端后,将音视频文件拖拽到客户端即可转录生成四个同名文件:
json
文件,包含字级时间戳txt
文件,包含分行结果merge.txt
文件,包含带标点的整段结果srt
文件,字幕文件
如果生成的字幕有小错误,可以在分行的txt
文件中修改,然后将txt
文件拖拽到客户端。客户端检测到输入的是txt
文件,就会查找同名的json
文件,结合json
文件中的字级时间戳和txt
文件中的修正结果,更新srt
字幕文件。
注意事项
- 安装
FFmpeg
后,录音将以mp3
格式保存;未安装时,将以wav
格式保存 - 音视频文件转录功能依赖
FFmpeg
,打包版本已内置FFmpeg
- 默认快捷键为
caps lock
,可在core_client.py
中修改 - MacOS无法检测
caps lock
按键,可改用right shift
按键
修改配置
编辑config.py
,开头部分有注释指导修改服务端、客户端的:
- 连接地址和端口,默认为
127.0.0.1
和6006
- 键盘快捷键
- 是否保存录音文件
- 需要移除识别结果末尾的标点(如果想删除句尾问号,可在此处添加)
下载模型
服务器端使用了 sherpa-onnx,加载了阿里巴巴开源的 Paraformer 模型(转换为量化的onnx格式)进行语音识别,整个模型大小约为230MB。可以下载已转换好的模型文件:
此外,还使用了阿里巴巴的标点符号模型,大小约为1GB:
由于模型文件过大,并未包含在GitHub仓库中。你可以从百度网盘或GitHub Releases页面下载已转换好的模型文件,解压后将"models"文件夹放置在软件根目录
自启动、隐藏窗口、托盘图标、Docker
Windows下隐藏黑窗口启动,参见 #49,将以下内容保存为vbs文件并运行:
CreateObject("Wscript.Shell").Run "start_server.exe",0,True
CreateObject("Wscript.Shell").Run "start_client.exe",0,True
Windows自启动:创建快捷方式并放入"shell:startup"目录即可。
带托盘图标的GUI版本,参见 H1DDENADM1N/CapsWriter-Offline
Docker版本,参见 Garonix/CapsWriter-Offline at docker-support
源码安装依赖
[新增] Linux端
# 针对core_server.py
pip install -r requirements-server.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
# [注意]: kaldi-native-fbank==1.17(使用1.18及以上版本会报错`lib/python3.10/site-packages/_kaldi_native_fbank.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZN3knf24OnlineGenericBaseFeatureINS_22WhisperFeatureComputerEE13InputFinishedEv`)
# 针对core_client.py
pip install -r requirements-client.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
sudo apt-get install xclip # 确保core_client.py正常运行
运行方式
core_server.py
# 无需root权限运行
core_client.py
# 注意:必须以root权限运行!
Windows端
pip install -r requirements-server.txt
pip install -r requirements-client.txt
某些依赖在Python 3.11中暂时无法安装,建议使用Python 3.8至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
解决。
源码运行
- 运行
core_server.py
脚本,将加载Paraformer识别模型和标点模型(会占用2GB内存,加载时间约50秒) - 运行
core_client.py
脚本,它将打开系统默认麦克风并开始监听按键(MacOS端需要sudo
权限) - 按住
CapsLock
键开始录音,松开CapsLock
键结束录音,识别结果将立即输入(录音时长短于0.3秒不计)
MacOS端注意事项:
- MacOS上监听
CapsLock
键可能出错,需要将快捷键更改为其他按键,如right shift
打包方法
Windows/MacOS/Linux均使用以下命令完成打包:
pyinstaller build.spec
运行方式
Linux
双击run.sh
自动输入sudo密码并实现左右分屏显示
打赏
如果你愿意,可以通过打赏的方式支持我: