AI 驱动的跨平台语音输入工具 —— 让 Windows 也能拥有媲美豆包的语音输入体验
简体中文 | English
我每天高频使用 AI,离不开语音输入。但现实是:
- 🚫 豆包等优秀的语音输入法不支持 Windows
- 🚫 多数语音输入法只做"声学转写"——输出带错别字、没标点、满是"嗯、那个、就是"
EchoType 的核心思路:不止"语音转文字",而是在 ASR 之后引入一层独立的大模型后处理 Pipeline,让输出的文字干净、准确、即用即贴。
- 🎙️ 语音识别:基于云端 ASR,中文识别准确
- 🧠 LLM 智能后处理(核心创新):
- 纠正同音错别字("在做" → "再做")
- 自动加标点、断句
- 去除口水词("嗯"、"那个"、"就是")
- 场景自适应:写代码 / 写邮件 / 发消息 输出风格不同
- 🔌 可插拔双引擎:云端 API(高质量)/ 本地 sherpa-onnx(隐私优先)
- ⚡ 流式输出:边处理边显示,体验丝滑
- ⌨️ 全局快捷键:任意应用中按键即说,文字自动落入光标处
- 🖥️ 跨平台:Windows / macOS / Linux
flowchart TD
A[全局快捷键 / 悬浮按钮] --> B[录音模块<br/>麦克风采集]
B --> C{ASR 引擎<br/>可插拔接口}
C -->|云端| D[OpenAI<br/>gpt-4o-mini-transcribe]
C -->|本地| E[sherpa-onnx<br/>离线模型]
D --> F[原始文字<br/>含错别字/无标点/有口水词]
E --> F
F --> G[⭐ LLM 后处理 Pipeline ⭐]
G --> G1[同音错别字纠正]
G --> G2[标点 / 断句]
G --> G3[去口水词]
G --> G4[场景化润色]
G1 & G2 & G3 & G4 --> H[干净的最终文本]
H --> I[注入光标处 / 复制到剪贴板]
设计亮点:ASR 抽象为可插拔接口,云端/本地引擎切换只需改配置;LLM 后处理独立成模块,支持多场景 Prompt 与流式输出。
git clone https://github.com/uigiuf/echotype.git
cd echotype
pip install -e . # 或 uv pip install -e .cp .env.example .env
# 编辑 .env,填入 OPENAI_API_KEY 和 DEEPSEEK_API_KEY# 录 6 秒语音 → 识别 → 后处理 → 自动复制到剪贴板
python -m echotype.app --scene general --duration 6
# 写代码场景
python -m echotype.app --scene code
# 实时流式:边说边出字,definite 分句后自动润色并复制到剪贴板
python -m echotype.app --stream --scene general --device 2 --duration 8
# Mac 守护模式:按住左 Option 说话,松开后自动注入当前光标处
python -m echotype.app --daemon首次使用 --daemon 前,需要在 macOS 打开权限:
- 系统设置 → 隐私与安全性 → 麦克风:允许运行 EchoType 的终端应用
- 系统设置 → 隐私与安全性 → 辅助功能:允许运行 EchoType 的终端应用
默认快捷键是左 Option:按住 alt_l 开始录音,松开后停止、后处理并自动粘贴。若左 Option 在某些 Mac 输入法或应用里监听不稳定,可把 config.yaml 的 hotkey.trigger 改为 f5 后重启守护模式。
注入方式默认是 clipboard,也就是写入剪贴板后模拟 Cmd+V,中文最稳定。injector.method 也可改为 type,用模拟键盘逐字输入;中文输入可能受当前输入法影响。
pip install -e ".[dev]"
pytest
ruff check .| 模块 | 技术选型 |
|---|---|
| 语言 | Python 3.11+ |
| ASR(云端) | OpenAI gpt-4o-mini-transcribe |
| ASR(本地) | sherpa-onnx + Paraformer/SenseVoice |
| LLM 后处理 | DeepSeek(OpenAI 兼容接口) |
| 录音 | sounddevice |
| 全局快捷键 | pynput |
| 剪贴板 | pyperclip |
| 测试 | pytest |
| 维度 | 云端引擎 | 本地引擎 |
|---|---|---|
| 识别质量 | 高 | 中-高(取决于模型) |
| 速度 | 取决于网络 | 取决于 CPU |
| 隐私 | 数据上传云端 | 数据不出本机 ✅ |
| 成本 | 按量计费(极低) | 免费 |
| 联网 | 必须 | 可离线 ✅ |
通过配置
asr.engine一键切换,无需改动代码。
- 核心闭环:录音 → ASR → LLM 后处理 → 输出
- 多场景化 Prompt(通用 / 代码 / 邮件 / 聊天)
- 配置化(config.yaml)
- 单元测试
- 流式输出
- Mac 全局快捷键 + 自动注入光标处
- 本地 sherpa-onnx 引擎(端侧部署)
- Tauri 桌面应用打包
- 个人词库 / 自定义 Prompt
echotype/
├── echotype/
│ ├── recorder.py # 录音
│ ├── asr/ # ASR 可插拔接口
│ │ ├── base.py
│ │ ├── openai_asr.py
│ │ └── local_asr.py
│ ├── postprocess/ # ⭐ LLM 后处理(核心)
│ │ ├── pipeline.py
│ │ ├── prompts.py
│ │ └── scenes.py
│ ├── injector.py # 文字注入
│ ├── hotkey.py # 全局快捷键
│ └── app.py # 主程序
├── tests/
├── config.yaml
└── .env.example
MIT