高性能、低延迟、易配置,你的数据永远在本地。
MoFA IME 是一款 macOS 常驻语音输入器:按住热键(fn)说话,松开即本地转写,默认(可选关闭) LLM 润色,并自动写入当前输入框。
首次使用请先打开 MoFA IME 设置 下载模型(至少 1 个 ASR 模型;并推荐再下载 1 个 LLM 模型)。
- 全局热键触发:基于
CGEventTap,默认Fn/Globe,亦支持Cmd/Ctrl/Alt/Shift + 主键。 - 菜单栏常驻:状态图标与文字实时更新,菜单可监看
状态/识别/发送/提示。 - 输入法式悬浮窗:显示录音、转录、润色、发送等阶段;可见 ASR 预览文本。
- 常驻悬浮球:可拖动的圆形悬浮按钮,点击展开历史窗口;可在设置中关闭。
- 历史窗口:显示最近输入记录,支持一键复制;内置设置/退出/关闭快捷按钮。
- 本地模型链路:目前用
Whisper ASR + Qwen GGUF,支持自动选型与显式切换。 - LLM 封装方式:通过
mofa-input的 Rust FFI 封装接入llama.cpp(本地 GGUF 推理)。 - 模型管理 GUI:下载、删除、切换模型;支持热键录制与运行参数保存。
- 文本注入多级回退:
AXUIElement失败后,自动回退至剪贴板粘贴,再回退Unicode 事件输入。 - 质量守护:静音检测、模板噪声句过滤、英文占比判定(英文场景不强转中文)。
- 监听全局热键按下/抬起事件。
- 按下即开启录音,抬起即停止并提交音频。
- 先行本地 ASR 转写,得原始文本。
- 依配置决定发送模式:
ASR 原文或LLM 润色。 - 走输入注入链路(AX -> 剪贴板粘贴 -> Unicode 事件),将结果写入焦点输入框。
- 发送成功的文本自动保存到历史记录(最多 50 条)。
- 全程以菜单栏与悬浮窗反馈状态,并持久化配置到
~/.mofa/macos-ime.conf,模型目录为~/.mofa/models。
后续计划:LLM 推理栈拟逐步迁移至 OminiX-MLX:https://github.com/OminiX-ai/OminiX-MLX。
本项目采用 Apache License 2.0,详见 LICENSE。