基于 FunASR 的离线语音识别应用,支持 macOS、Windows 和 Linux 平台,采用客户端/服务端分离架构。
- 🎤 按住录音 - 按住热键开始录音,松开自动识别
- 🔒 完全离线 - 无需联网,本地处理,保护隐私
- ⚙️ 自定义配置 - 支持自定义热键、用户词库
- 🌐 Fn 键支持 - macOS 支持绑定 Fn(地球仪)键作为热键
- ⏱️ 短录音过滤 - 自动丢弃 0.3 秒以下的误触录音
- 🤖 LLM 智能纠错 - 可选的大语言模型智能纠错
- 🚀 硬件加速 - 服务端当前支持 CPU 与 NVIDIA CUDA
- 🌍 多语言 - 支持中文、英文语音识别
- 🖥️ 多平台 - 支持 macOS、Windows 和 Linux (Wayland)
按住热键 松开热键
│ │
▼ ▼
┌────────────────── 客户端 ──────────────────┐ POST /recognize
│ │ (16kHz float32)
│ 热键监听 录音 UI 浮窗 文本插入 │ │
│ ───────────────────────────────────────── │ │
│ macOS : AppKit 原生录音 剪贴板/AX输入 │ │
│ Linux : evdev GTK4 wl-copy │ ▼
│ Win : pynput pystray pyperclip │ ┌─────────────┐
│ │ │ Server :6008│
│ 配置: ~/.config/voice_typer/config.yaml │ │ (Tornado) │
└────────────────────────────────────────────┘ │ │
│ ┌───────┐ │
┌───────────────────────────────────────────┤ │ ASR │ │
│ JSON { text: "识别结果" } │ │(ONNX) │ │
▼ │ └───┬───┘ │
光标处插入文本 │ ▼ │
│ 标点恢复 │
│ ▼ │
│ LLM 纠错? │
│ (可选) │
└─────────────┘
| 平台 | 支持状态 | 客户端技术栈 |
|---|---|---|
| macOS | ✅ 完全支持 | Swift + AppKit |
| Windows | ✅ 完全支持 | Python + pystray + pynput |
| Linux | ✅ 完全支持 | Python + GTK4 + evdev (Wayland) |
服务端提供语音识别服务,可以本地部署,也可以部署在服务器上,供多客户端共享使用。
curl -O -L https://github.com/oyasmi/voice-typer/raw/refs/heads/master/server/scripts/voice_typer_server.sh
bash ./voice_typer_server.sh setup
bash ./voice_typer_server.sh run将以下说明复制给你常用的 AI Agent(如 Claude Code、OpenCode 等),它会自动完成安装:
请帮我安装 VoiceTyper 语音识别服务端(voice-typer-server)。步骤如下:
1. 找到可用的 Python 3.10+ 解释器:
- 先检查 python3 的版本,如果 >= 3.10 则直接使用
- 如果 python3 版本 <= 3.9,依次检查 python3.10、python3.11、python3.12、python3.13、python3.14、python3.15 可执行文件是否存在于 PATH 环境变量中
- 如果都找不到,报错告知用户需要安装 Python 3.10+,并给出安装 Python 的建议
2. 检查虚拟环境 ~/.venvs/voice-typer 是否已存在:
- 如果已存在,检查其中的 Python 版本是否 >= 3.10
- 如果 >= 3.10,询问用户是否复用已有环境(默认复用),若复用则跳到第 3 步
- 如果 < 3.10,提示用户需要重建环境,删除后重新创建
- 如果不存在,用找到的 Python 创建:<找到的python> -m venv ~/.venvs/voice-typer
3. 在虚拟环境中安装:
~/.venvs/voice-typer/bin/pip install --upgrade pip setuptools wheel
~/.venvs/voice-typer/bin/pip install --upgrade voice-typer-server
4. 安装完成后告知用户,并给出以下启动命令供用户自行使用:
- 前台启动:~/.venvs/voice-typer/bin/voice-typer-server
- 后台启动:nohup ~/.venvs/voice-typer/bin/voice-typer-server &
5. 询问用户是否需要现在就帮忙启动服务:
- 如果启动,先询问用户是否需要配置 LLM 纠错功能(需要 --llm-base-url、--llm-api-key、--llm-model 三个参数)
- 如果用户不提供 LLM 参数,则禁用纠错功能,直接以默认参数启动
📖 服务端的完整参数说明、API 端点、使用场景等,请参阅 server/README.md。
根据您的平台选择对应的客户端:
👉 详细安装、首次授权、构建说明请参阅 client_macos_swift/README.md。
- macOS 14.0 (Sonoma) 或更高版本
从 Release 下载 VoiceTyper-macOS.dmg,将 VoiceTyper.app 拖到 Applications 后运行。
Swift 原生版会在首次启动时自动检查并引导完成以下权限:
- 隐私与安全性 → 辅助功能 (Accessibility): 用于监听全局热键和模拟键盘输入。
- 隐私与安全性 → 输入监控 (Input Monitoring): 用于监听 Fn 等按键事件。
- 隐私与安全性 → 麦克风 (Microphone): 用于采集音频。
- 启动应用后,菜单栏会出现 VoiceTyper 图标
- 如果存在未完成权限或服务不可用,会自动弹出“权限与设置”窗口
- 按住热键(默认
Fn/ 地球仪键,也可配置为其他按键)开始录音 - 松开 自动识别并插入文本到当前光标位置(录音不足 0.3 秒将被忽略)
新版 macOS 客户端已经将常用配置 UI 化,可直接在“权限与设置”窗口中修改:
- 服务地址、端口、API Key
- 是否启用 LLM 纠错
- 热键模式与组合键
- 用户热词
底层配置仍保存在:
~/.config/voice_typer/config.yaml
主热词文件默认位于:
~/.config/voice_typer/hotwords.txt
仓库中仍保留一个 Python 技术栈的历史实现:
👉 详细安装和使用说明请参阅 client_windows/README.md。
从 release 下载 VoiceTyper.exe,双击即可运行。默认热键 Ctrl+F2,按住录音,松开识别。
👉 详细安装和使用说明请参阅 client_linux/README.md。
支持 Wayland + GNOME 环境,使用 evdev 监听热键、GTK4 指示器、wl-clipboard 插入文本。默认热键 Ctrl+F2。
VoiceTyper 支持接入 OpenAI 兼容的大语言模型,对识别结果进行二次纠错(同音字、口语词、标点等)。
启动服务端时传入 LLM 相关参数:
voice-typer-server --llm-base-url https://api.openai.com/v1 \
--llm-api-key sk-xxx \
--llm-model gpt-4o-miniLLM 参数:
--llm-base-url URL- LLM API 地址--llm-api-key KEY- API 密钥--llm-model MODEL- 模型名称(默认: gpt-4o-mini)--llm-temperature T- 温度参数(默认: 0.3)--llm-max-tokens N- 最大 token 数(默认: 600)
在客户端的 config.yaml 中启用:
server:
llm_recorrect: true编辑 ~/.config/voice_typer/hotwords.txt,每行一个词:
# 专业术语
FunASR
Python
GitHub
# 自定义词汇
你的名字
公司名称