MacOS语音输入工具,本地/云端双引擎语音识别、大模型文本优化、全本地存储
下载 Type4Me v1.2.4 (macOS 14+)
首次打开提示安全警告? 这是 macOS 对所有非 App Store 应用的正常行为,不影响使用。
方法一:通过系统设置(推荐)
- 双击打开 Type4Me.app,弹出安全提示后点击「完成」
- 打开「系统设置」→「隐私与安全性」,滚动到底部「安全性」部分
- 找到 "已阻止打开 Type4Me" 的提示,点击「仍要打开」
- 输入密码确认,再次点击「打开」
只需操作一次,之后可正常启动。
方法二:通过终端
xattr -d com.apple.quarantine /Applications/Type4Me.app
市面上语音输入法,至少命中以下问题之一:贵($12/月)、封闭(不可导出记录)、扩展性差(不能自定义Prompt)、慢。
基于 SherpaOnnx (Paraformer / Zipformer) 引擎,所有识别完全在设备端完成,无需申请 API Key、无需注册云服务账号、无网络依赖。省去了繁琐的云端 API 密钥申请和配置流程,特别适合在大内存 Apple Silicon (M1/M2/M3/M4) 机型上使用,推理效率更高。 下载链接:https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-paraformer-bilingual-zh-en.tar.bz2
下载完后解压到模型目录:~/Library/Application Support/Type4Me/Models/
解压后目录结构应该是 ~/Library/Application Support/Type4Me/Models/sherpa-onnx-streaming-paraformer-bilingual-zh-en/,里面有 encoder.int8.onnx、decoder.int8.onnx、tokens.txt
搞完之后在设置里选「本地识别 (Paraformer)」就能用了。
接入火山引擎(豆包)大模型,边说边出字。性能模式下还支持双通道识别,实时识别结束后用完整录音优化结果。 欢迎共建接入其他厂商的模型,目前已经接入火山引擎和 Deepgram。 (豆包现在注册送20小时识别,配置指引)
内置 5 种模式,也可以自定义任意多个:
| 模式 | 说明 |
|---|---|
| 快速模式 | 实时识别出文字,识别完成即输入,零延迟 |
| 性能模式 | 双通道识别,实时展示的体验 + 录音识别的准确 |
| 英文翻译 | 说中文,输出英文翻译 |
| Prompt优化 | 说一句简单的原始prompt,帮你优化后直接粘贴 |
| 命令模式 | 🆕 语音作为命令,结合选中文字和剪切板内容,让 LLM 执行操作 |
| 自定义 | 自己写 prompt,用 LLM 做任何后处理 |
每个模式可以绑定独立的全局快捷键,支持「按住说话」和「按一下开始/再按停止」两种方式。
Prompt 模板支持三种变量,让语音输入从"听写"升级为"语音命令":
| 变量 | 含义 |
|---|---|
{text} | 语音识别的文字 |
{selected} | 录音开始时光标选中的文字 |
{clipboard} | 录音开始时剪切板的内容 |
用法示例:选中一段英文 → 按住快捷键说"翻译选中的文字" → LLM 收到选中内容 + 翻译指令,直接输出翻译结果。语音变成了 LLM 的命令,选中的文字和剪切板变成了上下文。
- 所有凭证存在本地文件
~/Library/Application Support/Type4Me/credentials.json(权限 0600),不经过任何中间服务器 - 识别历史记录存在本地 SQLite 数据库,支持按日期范围导出 CSV
- 无遥测、无数据上报、无云同步
- ASR 热词:添加专有名词(如
Claude、Kubernetes),提升识别准确率 - 片段替换:语音说「我的邮箱」,自动替换为实际邮箱地址
录音开始提示音支持多种选择:电子提示音、Water Drop 音效(两种)、或关闭。
- 中英双语 UI,跟随系统语言自动切换
- 浮窗实时显示识别文本,带录音动画
- 首次使用有引导设置向导
- Swift Package Manager 构建
- 支持 macOS 14+
下载 Type4Me-v1.2.4.dmg,拖入 Applications 即可使用。仅支持云端识别引擎。
从源码构建可以启用本地离线识别(SherpaOnnx),无需 API Key,完全离线使用。
- macOS 14.0 (Sonoma) 或更高版本
- Xcode Command Line Tools(
xcode-select --install) - CMake(
brew install cmake,编译本地识别引擎需要)
git clone https://github.com/joewongjc/type4me.git cd type4mebash scripts/build-sherpa.sh这会从源码编译 SherpaOnnx 框架(~156MB),存放在 Frameworks/ 目录。编译完成后,后续构建会自动链接。
跳过这一步也能用,只是没有本地识别和 VAD 功能,云端引擎正常可用。
bash scripts/deploy.sh脚本会自动完成:编译 → 打包为 .app → 签名 → 安装到 /Applications/ → 启动。
本地识别需要下载模型文件。三种模型可选:
| 模型 | 大小 | 说明 |
|---|---|---|
| 极速轻量 | ~20 MB | 速度最快,精度一般 |
| 均衡推荐 | ~236 MB | 精度与大小的最佳平衡 |
| 中英双语 | ~1 GB | 精度最高,支持中英混合 |
点击上方链接下载模型(.tar.bz2 文件),下载完成后在终端执行:
mkdir -p ~/Library/Application\ Support/Type4Me/Models # 解压你下载的模型(三选一) tar xjf ~/Downloads/sherpa-onnx-streaming-zipformer-small-ctc-zh-int8-2025-04-01.tar.bz2 -C ~/Library/Application\ Support/Type4Me/Models/ tar xjf ~/Downloads/sherpa-onnx-streaming-zipformer-ctc-multi-zh-hans-2023-12-13.tar.bz2 -C ~/Library/Application\ Support/Type4Me/Models/ tar xjf ~/Downloads/sherpa-onnx-streaming-paraformer-bilingual-zh-en.tar.bz2 -C ~/Library/Application\ Support/Type4Me/Models/macOS 双击
.tar.bz2可能卡住,请使用上面的终端命令解压。
- 本地识别:打开设置 → ASR 设置 → 选择「本地识别 (Paraformer)」→ 选中已下载的模型
- 云端识别:首次启动会弹出设置向导,填入火山引擎的 App Key、Access Key 和 Resource ID。详见配置指引
cd type4me git pull bash scripts/deploy.sh无需重新编译 SherpaOnnx,除非上游更新了引擎版本。
Type4Me/ ├── ASR/ # ASR 引擎抽象层 │ ├── ASRProvider.swift # Provider 枚举 + 协议 │ ├── ASRProviderRegistry.swift # 注册表 │ ├── Providers/ # 各厂商配置(含本地 Sherpa) │ ├── SherpaASRClient.swift # 本地流式 ASR(Paraformer/Zipformer) │ ├── SherpaOfflineASRClient.swift # 本地离线 ASR(单次完整识别) │ ├── SherpaPunctuationProcessor.swift # 本地标点补全 │ ├── VolcASRClient.swift # 火山引擎流式 ASR │ ├── DeepgramASRClient.swift # Deepgram 流式 ASR │ └── VolcFlashASRClient.swift # 火山引擎 Flash ASR ├── Bridge/ # SherpaOnnx C API Swift 桥接 ├── Audio/ # 音频采集 ├── Session/ # 核心状态机:录音 → ASR → 注入 ├── Input/ # 全局快捷键管理 ├── Services/ # 凭证存储、热词、片段替换、模型管理 ├── Protocol/ # 火山引擎 WebSocket 协议编解码 └── UI/ # SwiftUI 界面 ├── FloatingBar/ # 浮窗 └── Settings/ # 设置界面(含模型下载管理) ASR Provider 架构设计为可插拔:每个云厂商实现 ASRProviderConfig(定义凭证字段)和 SpeechRecognizer(实现识别逻辑),注册到 ASRProviderRegistry 即可。
这个项目需要你的帮助。
目前已经完成了 火山引擎(Volcengine) 和 Deepgram 的 ASR 适配。项目架构还预留了其他主流云厂商的接口定义(OpenAI Whisper、Google、AWS、Azure、阿里云、腾讯云、讯飞等),欢迎继续补齐客户端实现。
如果你在用其他语音识别服务,欢迎提交 PR 补充实现。添加一个新 Provider 只需要三步:
- 在
Type4Me/ASR/Providers/新建 Config 文件,实现ASRProviderConfig协议 - 编写 ASR Client,实现
SpeechRecognizer协议 - 在
ASRProviderRegistry.all中注册你的createClient
当然,不只是 ASR Provider,任何形式的贡献都欢迎:
- 发现 bug?提 Issue
- 有好想法?开 Discussion
- 想改代码?直接 Fork & PR
If you're an AI agent (Claude, Cursor, Copilot, etc.) tasked with building or deploying Type4Me, here's what you need to know:
Read these files first:
CLAUDE.md- architecture overview, credential storage, key files, and how to add new ASR providersPackage.swift- project dependencies and build targetsscripts/deploy.sh- the build & deploy pipeline
Build & deploy steps:
# 1. Clone git clone https://github.com/joewongjc/type4me.git && cd type4me # 2. Build local ASR engine (optional, ~5 min, needs cmake) bash scripts/build-sherpa.sh # 3. Deploy as .app (builds, creates bundle, signs, and launches) bash scripts/deploy.shKey things to know:
- This is a Swift Package Manager project, no
.xcodeprojneeded - Depends on
sherpa-onnx.xcframework(local binary, inFrameworks/) for on-device ASR - Credentials are stored locally at
~/Library/Application Support/Type4Me/credentials.json, never in code or environment variables - Models are stored at
~/Library/Application Support/Type4Me/Models/, managed byModelManager - The ASR provider architecture is plugin-based: see
Type4Me/ASR/ASRProviderRegistry.swiftfor the registry andType4Me/ASR/Providers/for per-vendor configs - Two ASR engines implemented: Sherpa (local, Paraformer/Zipformer) and Volcengine (cloud, Doubao); other cloud providers have config stubs but no client implementation yet
- To add a new ASR provider, implement
ASRProviderConfig+SpeechRecognizerprotocol and register inASRProviderRegistry.all