Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EchoType 🎙️

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[注入光标处 / 复制到剪贴板]
Loading

设计亮点:ASR 抽象为可插拔接口,云端/本地引擎切换只需改配置;LLM 后处理独立成模块,支持多场景 Prompt 与流式输出。


🚀 快速开始

1. 安装

git clone https://github.com/uigiuf/echotype.git
cd echotype
pip install -e .          # 或 uv pip install -e .

2. 配置 API Key

cp .env.example .env
# 编辑 .env,填入 OPENAI_API_KEY 和 DEEPSEEK_API_KEY

3. 运行

# 录 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

4. Mac 权限与快捷键

首次使用 --daemon 前,需要在 macOS 打开权限:

  • 系统设置 → 隐私与安全性 → 麦克风:允许运行 EchoType 的终端应用
  • 系统设置 → 隐私与安全性 → 辅助功能:允许运行 EchoType 的终端应用

默认快捷键是左 Option:按住 alt_l 开始录音,松开后停止、后处理并自动粘贴。若左 Option 在某些 Mac 输入法或应用里监听不稳定,可把 config.yamlhotkey.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 一键切换,无需改动代码。


🗺️ Roadmap

  • 核心闭环:录音 → 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

📝 License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages