桃子桃子快讯
返回首页
工具

本地 Whisper 听写工具 Dictata 发布 v0.1.0

Rust 编写的 Windows 本地语音听写工具,集成 whisper.cpp 与可选本地 LLM 改写,全程数据不离…

2026.08.15 · 周六5 分钟阅读

Dictata 是一款 100% 本地运行的 Windows 语音听写工具,采用 Rust 编写,集成 whisper.cpp 与可选的本地 LLM 后处理。开发者近日在 Hacker News 上以「Show HN」形式发布 v0.1.0 版本,强调全程数据不出本机。

核心功能

Dictata 通过全局热键触发录音,再次按下即可将转写文本自动粘贴到当前活动窗口,主要功能包括:

  • 热键听写:支持切换式与按住说话两种模式,附带可自定义大小、透明度与位置的浮动波形条
  • 连续流式模式:检测到停顿即插入文本,实时反馈
  • 静音跳过:可选的 whisper.cpp 语音活动检测,首次使用下载约 2 MB 模型,可减少空白的误识别
  • Vulkan GPU 加速:支持 AMD、Intel 与 NVIDIA 显卡,CPU 模式亦可运行
  • 多音频源:麦克风、系统音频(WASAPI loopback)或会议模式混合
  • LLM 后处理:可调用本地 OpenAI 兼容接口进行「改写」「邮件」「消息」「列表」等格式化输出
  • 自定义词表与替换规则:作为初始 prompt 注入 whisper
  • Hugging Face 模型搜索:可通过关键词、仓库或直链安装任何 ggml .bin 模型
  • 多语言界面:法语、英语、西班牙语,附深色主题与系统托盘图标

技术架构

Dictata 由多个模块组成,核心职责如下:

  • main.rs:全局热键、状态机、转写线程调度
  • audio.rs:cpal 音频采集与 16 kHz 重采样,ffmpeg 解码
  • transcriber.rs:whisper-rs 封装,负责模型加载与转写
  • streaming.rs:基于停顿的流式分块与渐进输出
  • modes.rs / llm.rs:输出模式与本地 LLM 后处理
  • models.rs:ggml 模型目录、下载/删除、Hugging Face 查询与路径管理
  • settings.rs / settings_logic.rs:设置窗口 UI 与可测试的业务逻辑
  • dock.rs / history.rs / paste.rs / hotkey.rs / tray.rs:浮窗、历史、粘贴、热键、托盘等

项目配套 64 个单元测试,覆盖配置、重采样、混音、设置逻辑、Hugging Face 查询解析、取消手势、下载安全等场景,并提供 CLI 示例 cargo run --example transcribe -- <file.wav>,可通过环境变量 DICTATA_GPU=1 启用 GPU。

平台与构建

Dictata 目前仅支持 Windows 10/11,Linux 版本未在该版本中提供。若要转写文件,需将 ffmpeg 加入 PATH。GPU 构建需要 Vulkan SDK 与 Visual Studio Build Tools(包含 CMake 与 Ninja)。常见构建命令:

  • CPU 专用:cargo build --release --no-default-features
  • GPU 构建:需在 Visual Studio 开发人员命令提示符中设置 CMAKE_GENERATOR=Ninja 并配置 VULKAN_SDK

需要注意的是,whisper.cpp 的 vulkan-shaders-gen 子项目路径可能超出 Windows MAX_PATH(260 字符)的限制,触发 FTK1011C1083 错误。解决办法是在 .cargo/config.toml 中将 target-dir 指向盘符根目录的短路径,例如 C:/wt

许可与发布

Dictata 采用「带 Commons Clause 附加条款」的 MIT 许可:可自由使用、复制、修改、分发与自托管,但不得直接销售软件,亦不得以本软件为主要价值提供付费 SaaS、托管或付费支持等商业化服务。

发布脚本会在 dist/ 目录生成 dictata-<version>-windows-x86_64[-cpu].zip 压缩包,内含可执行文件、README、LICENSE 与 CHANGELOG;由于开发配置可能包含个人数据,程序会在首次运行时自行生成默认配置,不会随包附带。可执行文件为单一二进制,自带图标与版本元数据,GPU 版的 Vulkan 加载由显卡驱动提供,无需额外 DLL。

信源