AtomType:一款 Rust + Tauri 写的本地离线语音输入法,让开发者真正“动口不动手”
发布时间:2026/9/11 18:05:35 锦皓数字建站

摘要AtomType 是一个面向开发者的开源离线语音输入工具。它用全局热键启动录音在本机完成音频采集、VAD 分段、Paraformer 语音识别、标点恢复、词典改写和文本注入。模型准备阶段需要联网下载下载完成后日常语音识别链路可以在本地完成适合代码输入、会议转写、客服回复和日常聊天等隐私敏感场景。AtomGit 项目仓库https://atomgit.com/xiaohong-ai/AtomType玄武社区https://xuanwu.openatom.org想先动手体验可以直接阅读第七节的新手使用教程完成安装、模型下载和第一次语音输入再回头了解项目架构。一、为什么我想做 AtomType写代码的人应该都懂一种很细碎的痛中文注释、英文变量、Issue 搜索、PR 描述、AI 编程助手提示词一天里中英文输入法来回切思路经常被打断。语音输入当然不是新东西但开发者场景对它的要求更苛刻不能把业务语音、代码上下文、会议内容随便传到云端要能识别常见技术词比如 Kubernetes、Docker、GitHub、Tauri要能在任意输入框里工作而不是只能待在某个 App 里要足够轻不要为了一个输入工具拉起一大套复杂服务。AtomType 就是围绕这些需求做出来的按下热键说话松开后文字进入当前光标位置。它不是聊天机器人也不是会议 SaaS而是一个尽量贴近系统输入层的本地语音输入法。二、AtomType 是什么一句话概括AtomType 是一款基于 Rust Tauri 构建的本地离线语音输入工具核心目标是让语音识别在电脑本机完成并把识别结果直接注入当前焦点输入框。它的主要能力包括全局热键录音支持按住说话、点按开关、开始/结束键三种模式本地 ASR基于 sherpa-onnx ParaformerVAD 分段与静音自动停止减少无效录音和纯静音误识别标点恢复让长句转写更自然自定义词典和 Rime 英文词库导入修正常见专有名词智能数字转换、语气词过滤、繁体输出、尾部标点处理可选本地 AI 文本优化使用 llama.cpp 的llama-cli加载本地 GGUF 模型不可用时回退规则处理WAV/SRT 转写适合会议录音、课程音频、访谈材料Tauri GUI提供仪表盘、模型管理、词典管理和录音悬浮球。下图是 AtomType 的仪表盘界面可以看到运行状态、转写统计、模型占用和权限状态等信息图 1AtomType 仪表盘界面便于查看运行状态与模型信息。三、最适合哪些场景1. Vibe Coding把想法快速说给 AI 编程助手开发时经常不是“不会写”而是“懒得敲”。比如你可以直接说帮我写一个校验邮箱的正则要求支持多级子域名AtomType 会把语音转成文字并注入当前输入框。再配合 AI 编程助手提示词、注释、需求描述都可以更快进入编辑器。2. 中英混合技术表达开发者说话天然会混杂中文和英文技术词把这个 Kubernetes Pod 重启一下然后检查 Docker 日志AtomType 的定位不是普通聊天输入而是尽量照顾开发者这类混合表达。再加上自定义词典可以把chatgpt规范成ChatGPT把项目名、服务名、人名做成更稳定的改写规则。3. 会议、网课和音频转写对于会议录音、课程音频、访谈材料AtomType 支持离线转写音频文件并生成带时间轴的 SRT 字幕。大文件不用先上传到云端对公司内部会议、客户沟通记录、个人学习材料都更安心。4. 客服、聊天和高频重复输入客服回复、社群沟通、日常 IM 中很多内容其实是口语化短句。全局热键 焦点注入的好处是你不用切到某个固定窗口当前光标在哪里识别文本就进入哪里。四、工作原理从一句话到当前输入框AtomType 的核心链路并不神秘可以理解成一条本地流水线图 2从热键录音到文本注入的本地处理流程。完整流程如下全局热键触发录音状态机cpal从麦克风采集音频音频被重采样成 16kHz 单声道VAD 判断有效语音片段静音门控过滤纯静音和地噪sherpa-onnx Paraformer 在本地进行语音识别CT-Transformer 恢复标点词典系统做 hotwords 规范化和最长前缀改写文本后处理执行数字转换、语气词过滤、繁简转换等规则可选本地 AI 优化文本atomtype-inject把最终文本注入当前系统焦点。这里有个很关键的工程细节纯静音或地噪直接送入端到端 ASR 模型时模型可能会“幻觉”出文字。AtomType 在 pipeline 里加入了 VAD 和 RMS 能量门控尽量避免无语音输入进入识别器。五、系统架构10 个 workspace 成员各司其职AtomType 是一个 10 成员 Cargo workspace。CLI、GUI、音频、ASR、词典、注入等能力拆开维护边界比较清晰。图 3AtomType 的模块划分与系统架构。核心模块如下模块作用crates/atomtype共享类型、错误和基础常量atomtype-configTOML 配置加载、默认值、JSON Schemaatomtype-audio麦克风采集、WAV 读写、重采样、静音检测atomtype-asrRecognizer trait、Sherpa 后端、VAD、标点、模型下载atomtype-hotkey全局热键监听atomtype-inject跨平台文本注入atomtype-dict词典加载、Rime 导入、专有名词改写atomtype-ai本地 AI 文本优化依赖外部llama-cli不可用时规则回退atomtype-cli命令行入口支持 daemon、transcribe、models、dict、config 等命令src-tauriTauri 2 GUI 后端管理窗口、托盘、悬浮球和热键流程GUI 前端位于ui/是纯静态 HTML/CSS/JS没有额外前端构建链路。对于 Rust 项目来说这一点很舒服核心逻辑在 Rust界面层保持轻量。六、几个值得说的工程设计1. 模型常驻与空闲卸载ASR 模型首次加载需要时间。AtomType 在 GUI 后端维护了全局识别器单例热键触发后可以复用已加载模型同时又有空闲卸载逻辑长时间不用时释放内存下一次使用再自动加载。2. 静音自动停止点按模式下用户说完之后持续静音达到配置时长程序可以自动停止录音并开始识别。实现上不是简单 wall-clock 定时而是跟随采样流做 RMS 判断避免“刚按下还没开口”就误触发停止。3. 词典改写适配开发者表达语音识别模型不一定知道你的项目名、内部服务名和技术栈缩写。AtomType 的词典系统支持 hotwords、rewrites 和 Rime 英文词库导入用后处理方式提升开发者词汇稳定性。4. 平台差异明确处理macOS 需要麦克风、辅助功能、输入监控等权限Linux 下系统焦点文本注入依赖ydotool、wl-clipboard、wtype、xdotool、xclip等外部工具Windows 使用系统 API 和剪贴板路径做兼容。项目没有把跨平台差异藏起来而是把它们变成可诊断、可配置的实现。七、新手使用教程从安装到第一次语音输入第一次使用建议先跑通“打开应用 → 下载模型 → 授予权限 → 设置热键 → 输入一句话”这条流程。普通用户可以优先查看发行版安装包想从源码运行的读者可以按本节后半部分操作。1. 从 AtomGit 获取项目或安装包打开AtomGit 项目仓库https://atomgit.com/xiaohong-ai/AtomType进入仓库的发行版Releases页面https://atomgit.com/xiaohong-ai/AtomType/releases查看是否有适合自己系统和处理器架构的安装包以发行版实际附件为准。仓库 README 给出的 Windows 安装包形式为AtomType_版本_x64-setup.exe适合大多数 Windows 用户下载后双击并按安装向导操作。AtomType_版本_x64_en-US.msi适合需要 MSI 的部署环境。安装完成后从开始菜单打开 AtomType。如果发行版暂时没有适合你的安装包可以按照第 6 步从源码构建。仓库的“下载源码 ZIP”得到的是代码需要构建后才能运行。2. 下载并加载离线模型打开 AtomType 后进入仪表盘找到“模型”区域保持网络连接点击“下载模型”。等待下载和解压完成查看页面上的进度与状态提示。点击“加载模型”等待模型加载完成。查看“音频输入设备”列表确认电脑能够识别你的麦克风。上文图 1 展示了仪表盘界面可结合页面中的状态信息检查准备情况不同版本的界面布局可能略有调整。离线使用的前提是先准备好模型。首次下载需要联网模型准备完成后日常语音识别在本机进行。第一次体验可以先使用基础识别功能本地 AI 文本优化可在后续按需配置。3. 授予录音和输入所需权限macOS进入“系统设置 → 隐私与安全性”为 AtomType 开启麦克风、辅助功能和输入监控权限。若通过终端运行 CLI需要留意系统提示中对应的终端程序。授权后重新启动应用或命令。Windows在“设置 → 隐私和安全性 → 麦克风”中允许麦克风访问并允许桌面应用访问麦克风不同系统版本的菜单名称可能略有不同。Linux除麦克风可用外还需要按桌面会话安装文本注入工具具体见第八节。麦克风权限负责“听见”热键监听负责“开始和结束录音”文本注入权限负责“把字写进输入框”。遇到问题时可以按这三段分别排查。4. 设置热键完成第一次语音输入在 GUI 的“语音输入”页面找到“录音快捷键”和“录音模式”将快捷键设为F2模式设为“按住说话”。如果F2与系统或其他应用冲突可通过“更改”按钮录入其他快捷键。接着按以下步骤试用打开记事本、文本编辑器或聊天输入框点击空白处让输入光标出现。保持焦点在目标输入框按住刚设置的热键。对麦克风说“今天先整理项目文档再检查 Docker 日志。”松开热键等待本地识别完成。检查当前输入框是否出现与语音内容对应的文字。验收标准能够开始录音、松开后结束录音并将识别结果写入当前输入框。实际措辞、英文识别和标点会受模型、收音与配置影响不要求与示例逐字一致。熟悉以后还可以改用“点按”模式按一次开始再按一次停止。如果启用了静音自动停止说完后等待设定的静音时长也可以结束录音。笔记本若把F2用作亮度等功能键可尝试配合Fn或直接换一个快捷键。5. 新手常见问题排查现象可以先检查什么按热键没有反应快捷键是否冲突、应用是否仍在运行macOS 是否授予输入监控权限录不到声音系统是否允许麦克风访问、是否选对输入设备、麦克风是否静音提示模型不可用下载是否完成模型是否加载成功源码用户可运行models doctor有识别结果但输入框没有文字目标输入框是否获得焦点macOS 辅助功能权限或 Linux 注入工具是否就绪第一次出字较慢首次加载模型需要时间可先点击“加载模型”预热再开始录音技术词或项目名识别不稳定在词典管理中添加专有名词与替换规则再用同一句话验证效果6. 从源码构建 CLI如果没有合适的安装包或希望研究实现可以从 AtomGit 克隆源码。以下构建、模型下载与 CLI 演示命令以macOS / Linux 终端为例Windows 可使用 PowerShell并按下文说明调整可执行文件路径。先准备环境环境准备内容通用工具安装 Git 和 Rustrustup当前仓库指定 Rust 1.96README 还列出了 Node.js 20macOS执行xcode-select --install安装 Xcode Command Line Tools已安装可跳过Linux按发行版安装编译工具和项目依赖Debian / Ubuntu 的依赖包括libasound2-dev、libgtk-3-dev、libwebkit2gtk-4.1-dev、librsvg2-dev图形界面的完整系统依赖可参考 Tauri 环境准备文档Windows安装 Microsoft C Build Tools勾选“使用 C 的桌面开发”图形界面还需要 WebView2 Runtime安装后重新打开终端确认 Git 和 Cargo 可用git--versioncargo--version克隆仓库并进入项目目录gitclone https://atomgit.com/xiaohong-ai/AtomType.gitcdAtomType构建命令行程序cargobuild--release-patomtype-cli首次构建默认 ASR 后端时sherpa-rs会下载 sherpa-onnx 预编译库需要保持联网。构建成功后macOS / Linux 的可执行文件位于target/release/atomtype。在项目根目录依次执行以下命令下载模型、检查模型并列出麦克风设备./target/release/atomtype models download ./target/release/atomtype models doctor ./target/release/atomtype devices确认模型检查没有缺失文件等错误、输入设备列表中有可用麦克风后启动监听./target/release/atomtype daemon--hotkeyF2 --hotkey-mode pressed保持这个终端进程运行切到文本编辑器按照第 4 步完成第一次语音输入。结束使用时回到终端按CtrlC停止监听。Windows PowerShell 用户将上述./target/release/atomtype换成.\target\release\atomtype.exe其后的子命令和参数保持一致例如.\target\release\atomtype.exe models download.\target\release\atomtype.exe models doctor.\target\release\atomtype.exe devices.\target\release\atomtype.exe daemon--hotkey F2--hotkey-mode pressed7. 从源码启动图形界面可选在系统构建依赖准备好后安装 Tauri 2 命令行工具cargoinstalltauri-cli--version^2--locked在 AtomType 项目根目录启动 GUIcargotauri dev窗口打开后按第 24 步完成模型准备、权限配置和热键输入。体验 GUI 热键时先停止此前运行的 CLI daemon避免两个进程同时响应同一个热键。需要生成当前平台的发布安装包时再执行cargotauri build构建产物可在target/release/bundle/下查看具体格式由操作系统和项目打包配置决定。8. 转写已有 WAV 录音生成字幕可选把一段 WAV 录音放到项目根目录命名为meeting.wav。在模型准备完成后执行./target/release/atomtype transcribe meeting.wav--formatsrt--outputmeeting.srt命令完成后用文本编辑器打开同一目录下的meeting.srt检查是否生成带序号、时间轴和识别文本的字幕内容。如果文件在其他位置将命令中的文件名替换为实际路径路径含空格时用引号包住。如果希望输出 JSON执行./target/release/atomtype transcribe meeting.wav--outputmeeting.jsonCLI 的这组示例针对 WAV 文件其他音视频格式应先转换为 WAV或使用项目 GUI 支持的解码流程。八、权限与依赖提醒macOS 首次使用一般需要授予麦克风权限用于录音采集辅助功能权限用于向当前焦点注入文字输入监控权限用于全局热键监听。Linux 用户需要注意会话类型会话常见依赖说明Waylandydotool、wl-clipboard通用路径通常通过剪贴板 模拟粘贴实现wlroots Waylandwtypesway、Hyprland 等环境可直接输入X11xdotool、xclip直接输入失败时回退剪贴板这类权限和依赖不是缺点而是系统级输入工具必须面对的现实边界。AtomType 的价值在于把它们尽量封装成可检查、可配置、可诊断的流程。九、为什么开源隐私工具最难的是信任。如果一个语音输入工具只说“我不会上传你的数据”用户其实很难验证。但开源项目可以把实现摆出来音频怎么采集、模型怎么加载、文本怎么注入、哪些地方需要联网下载资源都可以被社区审计。AtomType 的开源也不是“做完了扔出来”而是希望更多人一起把它打磨得更好提升不同口音、技术词、项目名的识别稳定性优化 Windows 和 Linux 桌面环境兼容性补充更多模型选择改进 GUI 体验和错误诊断让离线语音输入成为开发者日常工具链的一部分。十、项目信息AtomGit 项目地址https://atomgit.com/xiaohong-ai/AtomType发行版入口https://atomgit.com/xiaohong-ai/AtomType/releases开源协议Apache-2.0技术栈Rust、Tauri 2、sherpa-onnx、Paraformer、silero-vad、CT-Transformer定位开发者友好的本地离线语音输入工具十一、走进玄武社区一起交流开源实践如果你对 AtomType、Rust、Tauri 或本地离线 AI 工具感兴趣欢迎访问玄武社区了解社区内容与开源动态参与技术交流玄武社区入口https://xuanwu.openatom.org体验 AtomType 后也欢迎回到 AtomGit 项目仓库 点亮 Star、提交 Issue 或参与代码贡献。反馈问题时可以附上系统版本、AtomType 版本、复现步骤和相关截图帮助维护者定位问题。写在最后AtomType 解决的不是一个宏大的问题而是开发者每天都会遇到的小摩擦不想打字、不想切输入法、不想把语音和会议内容传到云端。它的体验目标也很简单按下热键说出想法文字就出现在当前输入框。如果你也喜欢 Rust、Tauri、本地优先工具或者正在寻找一个更适合开发者的离线语音输入法欢迎体验 AtomType、Star 项目、提交 Issue 或 PR。AtomType您的声音绝不离开电脑。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。