VoiceInput 是一个 Windows 10 后台语音输入工具:按住录音热键开始录音,松开后自动转写并注入到当前焦点输入框。
语音转写支持 Azure Speech 和 Cloudflare Workers AI,二者可在 Settings 中切换:
- Azure Speech 使用流式识别,录音期间显示中间转写
- Cloudflare Workers AI 使用 VAD 分段并行上传,录音期间显示已完成段落,松键后等待剩余结果
核心流程:
- 全局键盘钩子监听
Fn/ 回退热键(默认RightCtrl) - NAudio 以 16kHz/16bit/mono 采集麦克风音频
- 按当前供应商执行 Azure 流式识别或 Cloudflare VAD 分段转写
- 悬浮窗实时显示波形和当前转写进度
- 可选 LLM 保守纠错
- 通过剪贴板 +
Ctrl+V注入文本
- Windows 10
- .NET 8 SDK(开发构建)
- Azure Speech Key/Region 或 Cloudflare Account ID/API Token(二选一)
可选:
- OpenAI 兼容接口(用于 LLM 纠错)
- 克隆仓库后进入目录:
E:\VoiceInput - 构建(需 .NET 8 SDK):
dotnet build VoiceInput\VoiceInput.csproj -c Release - 运行:
dotnet run --project VoiceInput\VoiceInput.csproj -c Release
首次运行后,应用会在系统托盘常驻,不显示任务栏主窗口。
配置文件路径:%AppData%\VoiceInput\config.json
示例:
{
"language": "zh-CN",
"llmEnabled": false,
"apiBaseUrl": "https://api.openai.com/v1",
"apiKey": "",
"model": "gpt-4o-mini",
"speechProvider": "Azure",
"azureSpeechKey": "",
"azureSpeechRegion": "",
"cloudflareAccountId": "",
"cloudflareApiToken": "",
"fallbackHotkey": "RightCtrl"
}字段说明:
language: 识别语言,支持en-US/zh-CN/zh-TW/ja-JP/ko-KRspeechProvider: 语音供应商,取值为Azure或Cloudflare,默认AzureazureSpeechKey/azureSpeechRegion: Azure Speech 认证信息cloudflareAccountId/cloudflareApiToken: Cloudflare Workers AI 认证信息llmEnabled: 是否开启 LLM 纠错apiBaseUrl/apiKey/model: LLM 纠错接口参数fallbackHotkey: Fn 不可捕获时的回退热键(默认RightCtrl,支持组合键如RightCtrl+R)
旧配置没有 speechProvider 字段时会自动使用 Azure。应用会保留两组供应商凭据,切换供应商不会覆盖另一组配置。
- 托盘右键菜单可切换语言、开关 LLM、打开 Settings、退出;双击托盘图标也可直接打开 Settings
- 按住录音热键开始录音,松开触发转写
- Cloudflare 模式等待剩余分段时,悬浮窗显示已有文本;尚无结果时显示
Transcribing... - 若启用 LLM,悬浮窗会显示
Refining...后再注入
在 Settings 窗口选择 Azure Speech 或 Cloudflare Workers AI,填写当前供应商的凭据后点击 Test Speech 验证连接,再点击 Save 保存。
当前供应商凭据缺失时,触发录音会打开 Settings 并显示错误提示。
在托盘菜单 Language 子菜单中切换,选择后立即生效并写入配置文件。
在托盘 Settings 窗口填写:
- API Base URL
- API Key
- Model
可点 Test LLM 验证连通性,Save 保存。API Key 支持清空后保存。
在 Settings 窗口点击「触发热键」录制框后:
- 进入监听状态,显示「请按下快捷键...」
- 支持单键或组合键(如
RightCtrl+R、RightCtrl+RightShift+R) - 按
Esc取消本次录制并恢复原值 - 点击
Save后立即生效,无需重启应用
录制期间会临时屏蔽语音触发,避免在设置热键时误启动语音识别。
- 在部分键盘布局中,按
RightAlt会被系统上报为RightCtrl+RightAlt(AltGr 行为) - 为避免误判,录制器会将这类系统附带的
RightCtrl过滤掉,最终显示为RightAlt - 因此当前不建议使用
RightCtrl+RightAlt作为热键组合
已配置单文件非自包含发布参数(win-x64):
PublishSingleFile=trueSelfContained=falseIncludeNativeLibrariesForSelfExtract=true
发布命令:
dotnet publish VoiceInput\VoiceInput.csproj -c Release -r win-x64
也可运行 repack.bat:脚本会关闭正在运行的程序、恢复依赖并重新发布。
默认输出目录:Release\,目标文件为 Release\VoiceInput.exe。
说明:
- 该模式会尽量将 native 依赖打包进单文件,减少同目录 DLL 文件。
- 目标机器需安装
.NET 8 Desktop Runtime (x64)。