• 欢迎访问誉卿博客,推荐使用最新版火狐浏览器和 Chrome 浏览器访问本网站。

  • 初不解禅心未住,悟后逍遥游处方。 山水有情皆由心,见山见水皆天堂。

本地语音转文字总装崩?CapsWriter-Offline 部署避坑与排错指南

工具 yqdnsjs 22小时前 8次浏览 0个评论 扫描二维码
封面

一份帮你省下几小时排错时间的实战笔记,从路径、模型到 FFmpeg、弹窗卡死,逐个击破。

导语

想给电脑装个本地离线语音转文字工具,结果比想象中折腾:录音莫名存成 WAV、拖个 MP4 进去"毫无反应"、翻译弹窗要么空白要么一闪而过、CapsLock 还卡在录音状态……如果你也在部署 CapsWriter-Offline 时被各种报错和环境问题劝退,这份避坑指南就是为你写的。我们不重复官方教程,只讲真踩过的坑和对应的解决办法。


① 工具一句话介绍

CapsWriter-Offline 是一个本地离线的语音转文字工具。长按 CapsLock(或鼠标侧键)即可听写,也能把 MP4/MP3/M4A 等音视频文件拖进去自动转录出文本与字幕,全部在本地完成,数据不出本机,适合注重隐私、又想要高效率听写的场景。


② 部署前准备 / 环境要求

  • 安装路径:建议固定到 C:CapsWriter-Offline。不要放到路径特别长、权限复杂、或被同步盘(如 OneDrive)锁定的位置——Windows 下语音监听、托盘、模型加载和日志写入都更怕路径权限问题。
  • 程序本体:下载或解压 HaujetZhao/CapsWriter-Offline 的 Windows 发行包,核心入口应包含 start_server.exestart_client.execonfig_server.pyconfig_client.py,以及 coreinternalLLMmodels 等目录。
  • 模型文件:需按 config_server.py 中的路径放置,例如:
  • modelsSenseVoice-SmallSensevoice-Small-ONNXSenseVoice-Encoder.fp16.onnx
  • modelsQwen3-ASRQwen3-ASR-1.7Bqwen3_asr_llm.gguf
  • modelsQwen3-ForcedAlignerQwen3-ForcedAligner-0.6Bqwen3_aligner_llm.q5_k.gguf
  • FFmpeg:部署到 C:CapsWriter-Offlineffmpegbin,用于把录音压成 MP3、读取音视频音频流、用 ffprobe.exe 取时长与进度。
  • 系统麦克风:Windows 设置里确认麦克风已插入可用、隐私设置允许桌面应用访问麦克风、默认输入设备是实际麦克风。

③ 常见坑点与对应解决办法(忠实保留报错/命令/路径)

坑1:模型文件检查失败 现象:启动报模型文件检查失败。 原因:模型目录名、文件名必须和 config_server.py 完全一致,少一个层级或文件名大小写不对都会失败。 解决:严格按配置里的层级与大小写放置,例如 SenseVoice-Encoder.fp16.onnxqwen3_asr_llm.gguf 等。

坑2:FFmpeg 检测不到 现象:录音保存成 WAV,或拖 MP4 转录失败。 排查:

<code class="language-powershell">Get-Command ffmpeg
Get-Command ffprobe</code>

解决:只把 FFmpeg 放目录里还不够,运行进程必须在 PATH 中找到它。在启动脚本中追加本地 ffmpegbin

<code class="language-powershell">$env:Path = "C:CapsWriter-Offlineffmpegbin;" + $env:Path</code>

坑3:拖 MP4 看起来没反应 原因:文件转录是后台运行,不是即时弹窗;长视频尤其 Qwen3-ASR + ForcedAligner 会比较慢(实测 291 秒视频约 125 秒,RTF≈0.43,即 1 分钟音频约 26 秒处理)。 解决:看日志判断是否在跑,logsclient_latest.loglogsserver_latest.log 中出现 开始转录文件 即表示正在处理,耐心等即可。需要更快可先启动 SenseVoice 再拖文件。

坑4:LLM 文件名乱码 现象:角色无法触发、划词翻译没反应。 解决:把 LLM 目录下乱码文件名恢复为 大助理.py小助理.py翻译.py;复制/解压/压缩时确认中文文件名未变成乱码(Windows 中文文件名须用 UTF-8 正确保存)。

坑5:翻译弹窗空白 现象:API 实际返回了内容,但弹窗蓝色区域为空白。 原因:Markdown/HTMLLabel 渲染路径与模型输出格式兼容性不好。 解决:给角色增加 toast_markdown = False 关闭 Markdown 渲染(toast_editable = False 亦可一并设置),避免渲染路径导致空白。

坑6:翻译弹窗一闪而过 现象:翻译成功但还没看清就消失。 解决:设 toast_duration = 0 表示固定弹窗、不自动关闭;关闭方式:弹窗上按 Esc 或点右键。

坑7:CapsLock 卡在录音状态 现象:按一次后程序"没反应",日志停在 [caps_lock] 触发:开始录音,后面没有 释放:完成录音。 原因:Windows/监听器漏掉了 CapsLock 松开事件,客户端一直以为在录音。 解决:增加最大录音时长兜底 max_record_seconds = 60,超过 60 秒仍未收到松开事件会自动结束录音,防止卡死。

坑8:打 zip 时中文文件名损坏 现象:Windows 自带 tar.exe -a -cf xxx.zip 可能按 CP437 处理 zip 文件名,遇到中文文件名会报:

<code>Can't translate Pathname ... to CP437</code>

解决:用 Python zipfile 打包(Zip64 + UTF-8 文件名)更稳。

坑9:API Key 别写进包 真实 Key 只放用户环境变量,不写入 LLM*.pymodels*.py、文档笔记、便携包。推荐:

<code class="language-powershell">[Environment]::SetEnvironmentVariable('SILICONFLOW_API_KEY', '你的 API Key', 'User')</code>

config_server.pyapi_key = '' 即从环境变量读取。打包前扫描:

<code class="language-powershell">rg "sk-" C:CapsWriter-OfflinedistCapsWriter-Offline-CPU-Portable -n</code>

sk-xxx 是占位符,真实 Key 要清掉。)


④ 验证是否跑通的方法

启动后,日志中应看到:

<code>找到音频设备: 麦克风 (...)
音频流已启动
键盘监听器已启动
鼠标监听器已启动
WebSocket 建立成功</code>

拖音视频文件转录时,日志出现:

<code>已显示文件转录模式启动提示
待处理文件: [...]
正在处理文件: ...
开始转录文件: ...
音频数据发送完成
转录完成: ...</code>

输出一般保存在原视频旁边:同名 .txt.json.srt(视配置 file_save_srt/file_save_txt/file_save_json)。查看 GPU 是否用于 GGUF:日志出现 offloaded 29/29 layers to GPUVulkan0 model buffer 表示走 GPU;若看到 CPU KV buffer / CPU compute buffer 则说明对应部分在 CPU 上。

排错常用命令:

<code class="language-powershell">Get-Process start_client,start_server -ErrorAction SilentlyContinue
Get-Content C:CapsWriter-Offlinelogsclient_latest.log -Encoding UTF8 -Tail 120
Get-Content C:CapsWriter-Offlinelogsserver_latest.log -Encoding UTF8 -Tail 120</code>

⑤ 结语 + 互动

本地部署 CapsWriter-Offline 的坑大多集中在路径权限、模型目录命名、FFmpeg 的 PATH、以及几个弹窗/监听器边界情况上,按上面逐条核对基本都能跑通。日常建议:听写用 启动-SenseVoice.cmd(快),长文件/字幕用 启动-Qwen3-ASR.cmd(准),翻译选中文字后说"翻译一下",看完按 Esc 关弹窗。

你在部署本地语音工具时踩过最离谱的坑是什么?或者哪条排错方法对你最有用的?欢迎在评论区聊聊,我们一起把这份避坑清单补全 👇

配图示意
喜欢 (0)

您必须 登录 才能发表评论!