Skip to content

jlmaoju/UnType

Repository files navigation

UnType (忘言)

筌者所以在鱼,得鱼而忘筌;蹄者所以在兔,得兔而忘蹄;言者所以在意,得意而忘言。 — 《庄子·外物》

English

UnType 是一个开源的 AI 语音输入工具(Windows)。它不只是转录——它会思考。一个快捷键,两种超能力:

  1. 说话即输入 — 语音经 STT 转录后,LLM 自动润色:去除语气词、"嗯"、"那个"、修正标点、纠正识别错误。到达光标的是润色后的成稿。

  2. 选中即润色 — 选中已有文字,说出修改指令("缩短一些"、"翻译成英文"、"改成更正式的语气"),LLM 帮你改写。

为什么选 UnType?

大多数语音输入工具只给你原始转录——充满"嗯"、"那个"、标点错误和识别偏差。你最终花在修正上的时间,比省下的打字时间还多。

UnType = STT + LLM。 语音先转录,再由 LLM 润色为干净、规范的文本——开口即终稿。需要编辑已有文字时,选中它,说话就行。

内置 8 种人格面具(Persona Masks),为不同场景预设语气:

人格 场景 效果
✨ 默认 日常写作 简洁自然,去除口语
👔 对领导 职场沟通 正式、得体
🤝 对同事 团队交流 友好但专业
📋 子弹点 列表整理 自动分点
🌐 英译 中译英 中文语音 → 英文输出
🗣️ 大白话 简化表达 把复杂说简单
🙅 婉拒 拒绝请求 礼貌地拒绝
🌙 诗意 文学创作 华丽修辞

录音时按数字键(1-9)即可切换,选择会自动记住。在人格管理中可自行增删改,也可以停用不需要的人格(录音时将不再显示)。


快速开始

Download

📥 下载预编译版本(推荐)

不想安装 Python?去 Releases 页面下载 .exe 文件,双击运行即可。

版本 大小 说明
完整版 ~275MB 包含所有功能,支持本地 Whisper 模型
在线版 ~90MB 仅 API 模式,体积更小,适合只需在线服务的用户

💡 提示:在线版不支持本地 STT 模型,其他功能完全相同。如果你不需要离线语音识别,推荐下载在线版。

💻 从源码运行

git clone https://github.com/jlmaoju/UnType.git
cd untype
uv sync
uv run untype

🎯 三步上手

  1. 首次运行会自动弹出设置向导,按提示配置 API
  2. 在任意输入框中点击,按 F6 开始说话
  3. 再按 F6 结束,润色好的文字自动出现

提示:支持阿里云、通义千问、DeepSeek 等多种 OpenAI 兼容服务。


环境要求

  • Windows 10/11
  • Python 3.11+
  • uv(推荐的包管理器)
  • 可用的麦克风
  • OpenAI 兼容的 STT API 密钥(在线模式),或 GPU(本地 Whisper 推理)
  • OpenAI 兼容的 LLM API 密钥(用于文本润色;可选但推荐)

配置

设置存储在 ~/.untype/config.toml(首次启动时创建):

区段 默认值 说明
hotkey trigger f6 按键说话快捷键
hotkey mode toggle toggle(按一下开始/结束)或 hold(按住说话)
audio sample_rate 16000 录音采样率(Hz)
audio device "" 音频设备(空字符串 = 系统默认)
audio gain_boost 1.5 低音量语音增益倍数
stt backend realtime_api realtime_api(阿里云)、apilocal
stt api_base_url "" 在线 STT API 端点(OpenAI 兼容)
stt api_key "" 在线 STT API 密钥
stt api_model gpt-4o-transcribe 在线 STT 模型名称
stt model_size small 本地 Whisper 模型大小(small/medium/large-v3
stt device auto 本地推理设备(auto/cuda/cpu
stt compute_type auto 本地推理计算精度(auto/float16/int8/int8_float16
stt beam_size 5 Beam search 大小(本地模式)
stt vad_filter true 是否启用 VAD 过滤(本地模式)
stt vad_threshold 0.3 VAD 灵敏度,越低越灵敏(本地模式)
stt language zh 转录语言代码
stt realtime_api_key "" 阿里云实时 API 密钥
stt realtime_api_model paraformer-realtime-v2 阿里云实时模型名称
stt realtime_api_format pcm 实时 API 音频格式
stt realtime_api_sample_rate 16000 实时 API 采样率
llm base_url "" LLM API 端点(OpenAI 兼容)
llm api_key "" LLM API 密钥
llm model "" LLM 模型名称
llm temperature 0.3 LLM 采样温度
llm max_tokens 2048 LLM 最大输出 token 数
language language zh 界面语言(zh/en
overlay capsule_position_mode "fixed" 胶囊位置模式:"fixed"(可拖动)或 "caret"(跟随光标)
overlay capsule_fixed_x null 固定模式下的 X 位置(null = 自动居中)
overlay capsule_fixed_y null 固定模式下的 Y 位置(null = 自动底部)

STT 后端选择

在线 API(默认)

  • 使用 OpenAI 兼容的 /audio/transcriptions 接口
  • 支持任意中转服务
  • 录音结束后一次性返回结果

本地模型

  • 使用 faster-whisper 本地推理
  • 需要显卡支持(CUDA)
  • 隐私性好,无需联网

阿里云实时 API(推荐)

  • 使用阿里云 DashScope 实时语音识别
  • 采用 WebSocket 流式传输,录音过程中实时显示识别文字
  • 延迟极低,体验接近微信语音输入
  • 需要申请 阿里云 DashScope API Key

故障排除

快捷键无响应

  • 检查是否有其他应用占用了相同的快捷键
  • 尝试在设置中更改为其他快捷键(如 F7Ctrl+Space
  • 以管理员身份运行程序

文字注入到错误位置

  • 确保在录音开始时目标窗口是活动窗口
  • 如果切换了窗口,结果会被暂存到气泡中,切回原窗口后点击气泡即可注入

STT 识别不准确

  • 尝试增加 audio.gain_boost 值(默认 1.5,可调至 3.0 或更高)
  • 检查麦克风设置,确保输入设备正确
  • 尝试更换 STT 后端(在线 API 通常比本地模型更准确)

LLM 润色效果不佳

  • 尝试调整 llm.temperature(越低越保守,越高越 creative)
  • 检查 LLM API 配置是否正确
  • 尝试使用不同的人格面具

托盘图标状态异常

  • 绿色:正常运行
  • 黄色:API 配置缺失或不完整
  • 红色:API 调用失败或网络错误

常见问题

UnType 是免费的吗?

是的,UnType 是完全开源免费的。但你需要自行提供 STT 和 LLM API 密钥(相关费用由 API 提供商收取)。

支持 macOS 吗?

目前仅支持 Windows。macOS 支持计划在未来版本中添加。

本地模式需要什么配置?

  • 需要支持 CUDA 的 NVIDIA 显卡
  • 推荐显存 4GB 以上
  • 需要安装 CUDA Toolkit

如何添加自定义人格面具?

  1. 右键托盘图标 → 人格管理
  2. 点击 + 新建 按钮创建新人格
  3. 填写名称、图标、提示词等字段
  4. 勾选 激活 选项使其在录音时显示
  5. 或者直接在 personas/ 目录中创建 .json 文件

录音时可以切换人格吗?

可以。在录音过程中按数字键 1-9 即可预选人格,录音结束后会直接使用预选的人格进行润色。只有已激活的人格才会显示在录音时的人格栏中。

工作原理

按一下快捷键 → 说话 → 再按一下结束
                ↓
   (录音期间:人格栏可见,
    按 1-9 预选人格)
                ↓
        [ STT:语音 → 原始文本 ]
                ↓
   ┌─── 已配置人格? ───┐
   │ 是                  │ 否
   ↓                     ↓
[ LLM:使用人格 ]   [ 暂存区:编辑 ]
   ↓                     ↓
文本出现在光标处 ✓  [ LLM → 光标 ✓ ]
                ↓
       (后悔药菜单出现)

两种模式,自动检测:

模式 触发条件 效果
插入 未选中文本 语音 → STT → LLM 润色 → 插入光标处
润色 已选中文本 语音作为指令 → LLM 修改选中的文本

开发

uv run ruff check src/      # 代码检查
uv run ruff format src/      # 代码格式化
uv run pytest                # 运行测试

许可证

本项目采用 GNU 通用公共许可证 v3.0 授权。

更新日志

v0.4.0 (2026-03-31)

  • 新增最近结果面板:可从托盘打开最近语音结果,支持快速复制、再次注入或重新打开编辑
  • 简化录音时的人格选择:支持 Quick Persona,让录音条优先显示少量高频人格
  • 修复关键偏好恢复:启动时会正确恢复语言和上次选中的人格
  • 改进标点与小键盘热键录制:避免误记 Alt,并兼容小键盘减号等别名
  • 文本输出改为逐字输入:结果不再依赖剪贴板粘贴,而是逐字快速输入到目标应用
  • 强化运行时交付链路:改进 realtime STT 启动失败、结果交付回退、ghost 动作和配置保存防抖
  • 扩大回归测试覆盖:补充 build、config、hotkey、i18n、llm、clipboard、overlay 和主流程 helper 的测试

v0.3.0 (2025-02-28)

  • 新增版本分拆:提供完整版(~275MB)和在线版(~90MB)两种下载选项
    • 完整版包含本地 Whisper 模型支持
    • 在线版体积减小 67%,适合仅需 API 服务的用户
  • 新增首次运行向导:新用户首次启动时自动弹出配置向导,引导完成 STT 和 LLM 配置
  • 新增人格激活功能:可在向导中选择要激活的人格,也可在人格管理中启用/禁用
  • 新增九宫格人格选择:向导中的人格选择页面采用 3×3 网格卡片布局,支持点击切换
  • 新增设置中重新运行向导:设置对话框新增"重新运行向导"按钮,可随时重新配置
  • 新增 LLM 连接验证:向导和设置中可测试 LLM API 连接是否正常
  • 改进配置体验:向导支持实时预览配置、验证 API 连接、流式识别 API 改名
  • 优化界面语言:更新中英文翻译,新增人格激活相关文本
  • 优化向导界面:深色主题、庄子名言引用、卡片描述优化

v0.2.1 (2025-02-26)

  • 新增"默认"人格面具(常规润色风格)
  • 新增"诗意"人格面具(华丽修辞文风)
  • 新增人格记忆功能,自动记住上次选择的人格
  • 新增录音时长显示(胶囊上显示如 "1:23")
  • 新增录音超时保护(5 分钟自动停止,防止过度消耗)
  • 新增日志记录功能(设置中可打开日志文件夹)
  • 默认 STT 后端改为阿里云实时 API
  • 默认音频增益调整为 1.5
  • "打开日志"功能移至设置对话框

v0.2.0 (2025-02-25)

  • 新增阿里云实时语音识别后端,录音过程中实时显示识别文字
  • 新增胶囊位置固定模式(可拖动,位置会被记住)
  • 新增设置界面字段动态显示(根据后端选择显示/隐藏相关配置)
  • 修复快捷键切换时的竞态条件问题
  • 修复快捷键黑名单(防止与系统快捷键冲突)
  • 修复后悔菜单位置跟随胶囊配置

About

使用STT+LLM自动输入/修改整理润色后的文本,可编辑自定义人格面具应对各种场景的语言风格。 项目名:忘言。言者所以在意,得意而忘言。— 《庄子》 an AI-powered voice input for Windows — STT + LLM, from speech to polished text

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages