Windows AI 语音输入🎙 — 按快捷键说话即输入,支持润色。摆脱打字限制,实现无拘束、高效率的表达。
VoiceInput ⌨️🎙️
Windows 上的 AI 语音输入工具 —— 按下快捷键,说话即输入。代替键盘输入,解放双手,原本5min才能梳理清楚的需求,现在30s一步到位直达输入框。
基于阿里云 DashScope(通义千问 ASR),延迟低、识别准,免费额度足够日常使用。
💡 核心价值
本工具旨在实现与 AI 的自然交互:用户可通过日常语言自由表达自己的想法;AI 会自动将语音内容转化为清晰、可读的需求描述,并直接填入输入框。这才是本工具的根本目标——代替键盘的主要交互手段,让用户摆脱打字限制,实现无拘束、高效率的表达。
✨ 特性
- 全局快捷键 — 任意应用中按
Ctrl+Shift+R(可改)开始/停止录音,自动输入文字到光标处,同时加入剪切板。 - 智能润色 — 可选 LLM 润色,修正口语、补标点、去语气词;支持多模型切换(qwen3.5-flash / qwen-flash / qwen-plus / qwen-max)
- 顶部悬浮指示器 — 极简 mini 条,悬停水滴式展开;录音时波形与停止按钮;长按停止按钮可作废本条,短按仍为正常结束;录音中悬停可查看当前麦克风和润色模型
- 系统托盘 — 切换模式、润色模型、快捷键、API Key、麦克风(含系统默认设备名);保存录音文件开关;查看历史与日志目录
- 稳健体验 — 单实例防重复启动;未配置 Key 时引导配置;麦克风不可用时持续提示;转录进行中屏蔽重复触发;麦克风断开自动停止并提示
- 音效反馈 — 开始 / 停止 / 完成提示音
🎬 演示
| | 说明 | 演示 | |:-:|------|:----:| | demo1 | 日常可用作语音输入工具:聊天回复、搜资料、写文档 |
| | demo2 | 推荐的工作流程:开启录音,一边说一边梳理项目架构,然后按下快捷键结束,直接把需求粘贴到对话框 |
| | demo3 | 用于代替 Cursor 只支持英文的语音输入 |
|
🚀 快速开始
- 前往 Releases 下载最新发行包(便携压缩包或单文件,以 Release 页面说明为准)
- 解压或运行后,右键托盘图标进入 API Key,填入 DashScope Key
git clone https://github.com/myuan19/voiceInput.git
cd voiceInput
uv .venv
.venv\Scripts\activate
uv pip install -r src/requirements.txt
set DASHSCOPEAPIKEY=sk-xxxxxxxx
python -u src\main.py
📖 使用说明
| 操作 | 说明 | | -------------- | ----------------------------------------------------------------------------- | | 默认快捷键 | 开始/停止录音(可在托盘菜单中修改) | | 左键托盘图标 | 开始/停止录音(可在配置中关闭) | | 右键托盘图标 | 菜单:模式、润色模型、设备、快捷键、Key、保存录音、重置指示器位置、历史、日志、退出 | | 悬停顶部指示器 | 展开面板:录音、润色开关、是否弹出原文 | | 录音中悬停 | 显示当前使用的麦克风和润色模型 | | 录音中 | 短按停止键 — 结束并识别;长按至环形走完 — 作废本条 |
模式
- 纯转录 — 语音直接转文字
- 智能润色 — ASR 后再经 LLM 润色
⚙️ 配置
配置文件:%USERPROFILE%\.voiceinput\config.json(首次运行自动生成)。
| 配置项 | 说明 | 默认值 | | ------------------------ | -------------------------------------------------------- | -------------------------- | | hotkey | 全局快捷键(支持区分左右修饰键,如 lctrl+lshift+r) | lctrl+lshift+r | | trigger_mode | 触发模式 | toggle | | mode | transcribe / polish | transcribe | | custom_prompt | 自定义润色提示(预留) | 空 | | language | 语言 | auto | | api_key | DashScope API Key | 空(可用环境变量) | | apibaseurl | API 基地址 | 官方默认 | | asr_model | ASR 模型 ID | qwen3-asr-flash-2026-02-10 | | polish_models | 润色模型菜单([{ "id", "label" }, ...]) | 见 config.py 出厂列表 | | enabledpolishmodels | 启用并显示在托盘菜单中的润色模型 ID 列表 | qwen3.6-flash、qwen3.6-plus、qwen3.7-max | | polish_model | 当前选中的润色模型 ID | qwen3.6-flash | | mic_index | 麦克风设备索引(自动随名称解析,无需手动修改) | null(默认设备) | | paste_result | 识别后粘贴到光标 | true | | restore_clipboard | 粘贴后还原剪贴板 | false | | simulate_keypresses | 模拟按键(预留) | false | | trayclickto_record | 托盘左键即录音 | true | | play_sounds | 音效 | true | | save_history | 保存历史 | true | | save_audio | 是否保存每条原始录音(WAV,存于历史目录) | false | | miniwindowx | 指示器水平锚点(像素,可清空以重置) | null |
环境变量 DASHSCOPEAPIKEY 可与配置文件同时使用(配置中为空时会尝试读取)。
开发者向说明见 docs/开发者文档/配置文件开发参考.md;发版迁移见 docs/config-versioning.md。
日志目录:%USERPROFILE%\.voiceinput\logs\(每次启动一个新文件,包含从启动到退出的完整记录,含 WARNING / ERROR 等)。
🗂️ 项目结构
src/
├── main.py # 入口(单实例)
├── config.py
├── core/
│ ├── engine.py # 录音 / ASR / 润色 / 注入
│ ├── recorder.py
│ ├── asr.py
│ ├── polisher.py
│ ├── injector.py
│ ├── history.py
│ └── log.py
└── ui/
├── tray.py
├── mini_window.py
├── waveform_widget.py
├── icons.py
├── sounds.py
└── theme.py
🛠 技术栈
- Python 3.12 + PyQt6
- DashScope SDK(ASR:通义千问)+ OpenAI 兼容 API(LLM 润色)
- PyAudio、pynput、NumPy、loguru
⭐ Star History
📄 License
项目遵循 MIT
感谢 LINUX DO 社区