Windows 全局后台语音输入桥接工具。
豆包输入法的语音识别体验很不错,但 Windows 端的日常打字输入与界面体验相比 macOS 版本或微信输入法等还不够顺手。
平时打字更习惯使用微信输入法等工具,但又想方便地用到豆包的语音识别功能。本项目可以在不切换系统当前输入法的前提下,通过后台静默调用豆包语音识别,并将结果直接写回原光标处。
- 不切换输入法:日常打字继续使用当前输入法,按下快捷键即可调用豆包语音并直接上屏。
- 双模式快捷键:支持“按住说话”(松开上屏)与“持续语音”(单击开/关),可在设置中录制单键,底层过滤避免 Alt/Ctrl 粘连或误触系统菜单。
- 光标跟随预览浮窗:在输入光标附近悬浮展示识别中的文字,支持动态宽度,不抢占输入焦点。
- 深浅色主题:设置窗口、预览浮窗与右键托盘菜单支持跟随系统、浅色或深色显示,支持系统标题栏深色效果。
- 无额外依赖:基于系统自带的 .NET Framework 4.x 编译运行,无第三方类库依赖。
- 操作系统:Windows 10 / Windows 11
- 运行环境:.NET Framework 4.x(系统自带)
- 依赖软件:本机已安装豆包输入法(仅调用其本地后台服务,无需设为默认输入法)
# 1. 编译构建(在仓库根目录下执行,输出到 artifacts\VoiceWinBridge.exe)
powershell -ExecutionPolicy Bypass -File .\build.ps1
# 或执行 scripts 目录中的脚本:
powershell -ExecutionPolicy Bypass -File .\scripts\build.ps1
# 2. 注册开机自启并启动
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1
# 3. 停止运行并取消开机自启
powershell -ExecutionPolicy Bypass -File .\scripts\uninstall.ps1
# 4. 生成独立分享包(输出到 artifacts\share\)
powershell -ExecutionPolicy Bypass -File .\scripts\package-share.ps1提示:构建时若检测到正在运行的进程会自动重启更新;日志(
debug.log)与配置文件(settings.json)保存在artifacts\目录中。
右键托盘图标可打开菜单:设置 / 暂停(启用) / 退出。
| 设置项 | 说明 |
|---|---|
| 快捷键配置 | 分别设置“按住说话”与“持续语音”按键;支持单键录制与互斥校验 |
| 开机自动启动 | 写入当前用户注册表启动项,指向当前 exe 路径 |
| 显示实时预览浮窗 | 开启或关闭跟随光标的语音预览浮窗(默认关闭) |
| 主题 | 支持跟随系统(默认推荐)、浅色、深色,设置界面可即时预览切换 |
| 豆包输入法安装目录 | 默认自动探测;也可手动选择包含 rpc.dll 与 ImeService.exe 的安装目录 |
KeyboardHook (低级键盘钩子)
│ 按住 / 单击判定、按键消费与组合键透传
▼
VoiceController (状态机)
│ 互斥、异常复位、预览文本传递
▼
DoubaoVoiceClient ── rpc.dll ──► \\.\pipe\ObricIme\oime-server(豆包本地 RPC 服务)
│ 流式实时预览 / 最终识别文本
▼
TextInjector (SendInput Unicode 注入,WM_CHAR 保底) ──► 目标程序光标位置
VoiceWinBridge/
├── src/ # C# 源码与图标资源
│ ├── VoiceWinBridge.cs # 程序入口与托盘逻辑
│ ├── KeyboardHook.cs # 键盘钩子与按键过滤
│ ├── VoiceController.cs # 语音状态机
│ ├── DoubaoVoiceClient.cs # 豆包本地 RPC 客户端
│ ├── TextInjector.cs # 文本注入写回
│ ├── Logger.cs # 本地日志
│ ├── NativeMethods.cs # Win32 API 与 DWM 声明
│ ├── SinkWindow.cs # 消息接收窗
│ ├── SettingsForm.cs # 设置窗口
│ ├── HotkeyBox.cs # 快捷键录入控件
│ ├── KeyName.cs # 按键显示名转换
│ ├── VoicePreviewOverlay.cs # 光标跟随预览浮窗
│ ├── PreviewLabel.cs # 浮窗文本标签
│ ├── ModernMenuRenderer.cs # 托盘右键菜单渲染
│ └── VoiceWinBridge.ico # 应用图标
├── scripts/ # 构建与管理脚本
│ ├── build.ps1 # 编译脚本
│ ├── package-share.ps1 # 打包脚本
│ ├── install.ps1 # 安装自启脚本
│ └── uninstall.ps1 # 卸载脚本
├── build.ps1 # 根目录一键编译入口
├── artifacts/ # 编译产物与运行日志(已 gitignore)
│ ├── VoiceWinBridge.exe # 主程序
│ ├── settings.json # 配置文件
│ └── debug.log # 运行日志
└── README.md # 项目说明
- 本工具仅调用本机已安装豆包输入法的本地服务,不收集任何用户隐私数据。
- 设置的快捷键会被本程序拦截消费;若同时使用了其他全局快捷键或按键重映射工具,请避免冲突。
- 首次运行时若遇到 Windows SmartScreen 提示,选择“仍要运行”即可。
- 本项目源代码来自: LINUX DO (L站) 社区用户 ChiyoSekai 与 Sunflower2050 的开源分享,原帖链接:《不切换系统输入法,全局后台调用豆包语音识别并写回原光标位置》。
- 个人修改: 本项目仅是在原帖代码的基础上,根据个人的日常使用习惯进行了少许修改与界面补充。
- AI 辅助编程:
代码修改过程中使用了 ZCode Weekend Build 限时周末编程活动提供的
glm-5.3-flash以及 Google Antigravity 平台上的gemini-3.8-flash模型进行辅助编写和图标设计。 - 软件声明: 本工具仅作为个人自用与学习交流分享,相关输入法商标与服务版权归其各自所有者所有。