- 修复 Windows 路径检查问题,支持反斜杠和规范化路径 - 添加日志显示面板到设置弹窗 - 支持查看应用日志和设备信息 - 增强 check-file-exists IPC 处理,记录详细路径信息 - 实现日志标签切换和清空功能 - 拦截 console 输出显示到日志面板 |
||
|---|---|---|
| build | ||
| docs | ||
| models | ||
| scripts | ||
| src | ||
| test | ||
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| PRD.md | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Impress ASR Input
基于 ONNX 的本地语音识别输入工具,支持多语言实时识别和音频文件转写。
特性
- 🎯 本地运行 - 无需联网,保护隐私,无 API 调用成本
- 🌍 多语言支持 - 中文、英文、日语、韩语等
- ⚡ 低延迟 - 准实时识别,1 秒内完成短句识别
- 💻 跨平台 - 支持 Windows、macOS、Linux
快速开始
系统要求
- Node.js >= 20.0.0
- Windows 10+ / macOS 11+ / Ubuntu 20.04+
安装
# 克隆项目
cd impress-asr-input
# 安装依赖
npm install
# 编译 TypeScript
npm run build
放入模型文件
将 ONNX 模型放入 models/ 目录:
models/
├── sensevoice.onnx # 推荐:阿里达摩院多语言模型
├── whisper.onnx # OpenAI 多语言模型
└── paraformer.onnx # 阿里达摩院中文模型
模型下载地址:
- SenseVoice: https://huggingface.co/FunAudioLLM/SenseVoice
- Whisper: https://huggingface.co/onnx-community/whisper-base
- Paraformer: https://www.modelscope.cn/models/damo/speech_paraformer-large-vad-punct
使用方法
# 命令行模式 - 开始语音识别
npm start -- start
# 指定语言
npm start -- start -l en
# 转写音频文件
npm start -- transcribe input.wav -o output.txt
# Electron GUI 模式(需要先安装 electron)
npm install electron --save-dev
npm run dev:electron
Windows 构建
方法一:在 Windows 上构建(推荐)
npm run build:win # 构建安装包
npm run build:win:zip # 构建 ZIP 包
方法二:在 Linux 上构建
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
npm run build:win:dir # 构建解压版本
项目结构
impress-asr-input/
├── src/
│ ├── core/
│ │ ├── audio-processor.ts # 音频处理(VAD、重采样)
│ │ ├── audio-recorder.ts # 音频采集模块
│ │ ├── index.ts # 模块导出
│ │ ├── model-loader.ts # 模型加载器
│ │ ├── speech-recognizer.ts # ONNX 语音识别引擎
│ │ └── text-output.ts # 文本输出模块
│ ├── ui/
│ │ └── index.html # Electron UI 界面
│ ├── electron-main.ts # Electron 主进程
│ ├── main.ts # CLI 命令行入口
│ ├── preload.ts # Electron 预加载脚本
│ └── utils/
│ └── config.ts # 配置管理
├── models/ # ONNX 模型文件目录
│ ├── README.md # 模型说明
│ └── models.config.json # 模型配置
├── docs/
│ ├── BUILD_WINDOWS.md # Windows 构建指南
│ └── DEVELOPMENT.md # 开发指南
├── scripts/
│ ├── postinstall.js # 安装后脚本
│ └── prepare-build.js # 打包准备脚本
├── dist/ # TypeScript 编译输出
├── release/ # Windows 打包输出
├── test/
│ └── audio-processor.test.ts # 单元测试
├── package.json
├── tsconfig.json
└── PRD.md # 产品需求文档
开发计划
| 版本 | 状态 | 内容 |
|---|---|---|
| v0.1.0 | ✅ 完成 | 基础框架、单语言识别 demo |
| v0.5.0 | 🔄 进行中 | 多语言支持、Electron GUI |
| v1.0.0 | ⏳ 待开发 | 键盘模拟、批量转写、打包分发 |
命令行选项
# 启动语音识别
npm start -- start [选项]
选项:
-l, --language <lang> 识别语言 (默认:zh)
-m, --model <path> 模型文件路径
-o, --output <mode> 输出模式:clipboard|keyboard|both (默认:clipboard)
# 转写音频文件
npm start -- transcribe <文件> [选项]
选项:
-l, --language <lang> 识别语言 (默认:zh)
-m, --model <path> 模型文件路径
-o, --output <file> 输出文件路径
技术栈
| 模块 | 技术 |
|---|---|
| 运行时 | Node.js 20+ |
| UI 框架 | Electron |
| ONNX 推理 | onnxruntime-web |
| 剪贴板 | clipboardy |
| 命令行 | commander |
| 构建工具 | electron-builder |
许可证
MIT
贡献
欢迎提交 Issue 和 Pull Request!