# Impress ASR Input 基于 ONNX 的本地语音识别输入工具,支持多语言实时识别和音频文件转写。 ## 特性 - 🎯 **本地运行** - 无需联网,保护隐私,无 API 调用成本 - 🌍 **多语言支持** - 中文、英文、日语、韩语等 - ⚡ **低延迟** - 准实时识别,1 秒内完成短句识别 - 💻 **跨平台** - 支持 Windows、macOS、Linux ## 快速开始 ### 系统要求 - Node.js >= 20.0.0 - Windows 10+ / macOS 11+ / Ubuntu 20.04+ ### 安装 ```bash # 克隆项目 cd impress-asr-input # 安装依赖 npm install # 编译 TypeScript npm run build ``` ### 放入模型文件 将 ONNX 模型放入 `models/` 目录: ```bash 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 ### 使用方法 ```bash # 命令行模式 - 开始语音识别 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 上构建(推荐) ```powershell npm run build:win # 构建安装包 npm run build:win:zip # 构建 ZIP 包 ``` ### 方法二:在 Linux 上构建 ```bash export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" npm run build:win:dir # 构建解压版本 ``` 详见:[docs/BUILD_WINDOWS.md](docs/BUILD_WINDOWS.md) ## 项目结构 ``` 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 | ⏳ 待开发 | 键盘模拟、批量转写、打包分发 | ## 命令行选项 ```bash # 启动语音识别 npm start -- start [选项] 选项: -l, --language 识别语言 (默认:zh) -m, --model 模型文件路径 -o, --output 输出模式:clipboard|keyboard|both (默认:clipboard) # 转写音频文件 npm start -- transcribe <文件> [选项] 选项: -l, --language 识别语言 (默认:zh) -m, --model 模型文件路径 -o, --output 输出文件路径 ``` ## 技术栈 | 模块 | 技术 | |------|------| | 运行时 | Node.js 20+ | | UI 框架 | Electron | | ONNX 推理 | onnxruntime-web | | 剪贴板 | clipboardy | | 命令行 | commander | | 构建工具 | electron-builder | ## 许可证 MIT ## 贡献 欢迎提交 Issue 和 Pull Request! ## 相关资源 - [ONNX Runtime](https://onnxruntime.ai/) - [SenseVoice Model](https://github.com/FunAudioLLM/SenseVoice) - [Whisper ONNX](https://github.com/guillaumekln/faster-whisper) - [Electron 文档](https://www.electronjs.org/docs)