功能: - 基于 ONNX 的语音识别引擎 - 多语言支持(中文、英文、日语、韩语) - 模型加载器(支持 SenseVoice/Whisper/Paraformer) - 音频采集和处理模块(VAD、重采样、归一化) - 文本输出模块(剪贴板) - CLI 命令行工具 - Electron GUI 界面 - Windows x64 打包配置 文档: - PRD 产品需求文档 - README 项目说明 - 开发指南 - Windows 构建指南 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
233 lines
8.8 KiB
Markdown
233 lines
8.8 KiB
Markdown
# Impress ASR Input - 产品需求文档 (PRD)
|
||
|
||
## 1. 文档信息
|
||
|
||
| 项目 | 内容 |
|
||
|------|------|
|
||
| 产品名称 | Impress ASR Input |
|
||
| 版本 | v1.0.0 |
|
||
| 创建日期 | 2026-05-15 |
|
||
| 技术栈 | Node.js + ONNX Runtime |
|
||
|
||
---
|
||
|
||
## 2. 产品概述
|
||
|
||
### 2.1 产品定位
|
||
|
||
Impress ASR Input 是一款基于 Node.js 开发的桌面端语音识别输入工具,利用 ONNX 深度学习推理引擎实现高精度的多语言语音转文本功能。
|
||
|
||
### 2.2 核心价值
|
||
|
||
- **本地运行**:无需联网,保护隐私,无 API 调用成本
|
||
- **多语言支持**:支持中文、英文、日语、韩语等多种语言
|
||
- **低延迟**:准实时识别,1 秒内完成短句识别
|
||
- **跨平台**:支持 Windows、macOS、Linux 三大主流操作系统
|
||
|
||
---
|
||
|
||
## 3. 功能需求
|
||
|
||
### 3.1 核心功能
|
||
|
||
#### F1 - 语音采集
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 支持系统默认麦克风音频采集 |
|
||
| P0 | 支持选择不同音频输入设备 |
|
||
| P1 | 支持音频参数配置(采样率、声道数) |
|
||
| P2 | 支持 USB 蓝牙耳机等外接设备 |
|
||
|
||
#### F2 - 语音识别引擎
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 基于 ONNX Runtime 的本地推理 |
|
||
| P0 | 支持中文普通话识别 |
|
||
| P0 | 支持英文识别 |
|
||
| P1 | 支持中日英混合识别 |
|
||
| P1 | 支持语音端点检测(VAD) |
|
||
| P2 | 支持更多语种(日语、韩语等) |
|
||
|
||
#### F3 - 文本输出
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 实时显示识别结果 |
|
||
| P0 | 支持文本复制到剪贴板 |
|
||
| P1 | 支持模拟键盘输入(全局热键触发) |
|
||
| P1 | 支持识别结果历史查看 |
|
||
| P2 | 支持导出为文本文件 |
|
||
|
||
#### F4 - 批量转写
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 支持 WAV/MP3/FLAC格式音频文件导入 |
|
||
| P0 | 支持批量文件队列处理 |
|
||
| P1 | 支持输出 SRT/VTT字幕格式 |
|
||
| P1 | 支持说话人分离(多声道场景) |
|
||
| P2 | 支持进度显示和断点续转 |
|
||
|
||
### 3.2 辅助功能
|
||
|
||
#### F5 - 用户界面
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 系统托盘图标常驻 |
|
||
| P0 | 简洁的控制面板(开始/停止/配置) |
|
||
| P1 | 识别实时波形可视化 |
|
||
| P1 | 深色/浅色主题切换 |
|
||
| P2 | 多语言界面(中/英) |
|
||
|
||
#### F6 - 配置管理
|
||
| 优先级 | 描述 |
|
||
|--------|------|
|
||
| P0 | 模型文件路径配置 |
|
||
| P0 | 热键配置(开始/停止录音) |
|
||
| P1 | 识别语言选择 |
|
||
| P1 | 输出格式配置 |
|
||
| P2 | 配置文件导入/导出 |
|
||
|
||
---
|
||
|
||
## 4. 技术架构
|
||
|
||
### 4.1 整体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 用户界面层 (UI Layer) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||
│ │ 系统托盘 │ │ 控制面板 │ │ 识别结果展示窗口 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 业务逻辑层 (Business Layer) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||
│ │ 音频采集 │ │ 识别引擎 │ │ 文本输出/模拟输入 │ │
|
||
│ │ 模块 │ │ 模块 │ │ 模块 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 核心引擎层 (Core Layer) │
|
||
│ ┌─────────────────────────────────────────────────────────┐│
|
||
│ │ ONNX Runtime 推理引擎 ││
|
||
│ │ ┌───────────┐ ┌───────────┐ ┌───────────────────┐ ││
|
||
│ │ │ 音频预处理 │ │ 声学模型 │ │ 语言模型/解码器 │ ││
|
||
│ │ └───────────┘ └───────────┘ └───────────────────┘ ││
|
||
│ └─────────────────────────────────────────────────────────┘│
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 4.2 技术选型
|
||
|
||
| 模块 | 技术方案 | 说明 |
|
||
|------|----------|------|
|
||
| 运行时 | Node.js 20+ | LTS 版本,支持最新 ES 特性 |
|
||
| UI 框架 | Electron | 跨平台桌面应用 |
|
||
| ONNX 推理 | onnxruntime-node | 官方 Node.js 绑定 |
|
||
| 音频采集 | node-audio | 跨平台音频 API |
|
||
| 键盘模拟 | robotjs / @nut-tree/nut-js | 全局热键和文本输入 |
|
||
| 构建工具 | Electron-Builder | 打包分发 |
|
||
|
||
### 4.3 模型选型
|
||
|
||
| 模型 | 来源 | 说明 |
|
||
|------|------|------|
|
||
| SenseVoice | Alibaba DAMO | 多语言识别,高精度 |
|
||
| Whisper | OpenAI | 开源多语言模型 |
|
||
| Paraformer | Alibaba DAMO | 中文优化模型 |
|
||
|
||
**推荐方案**:优先采用 SenseVoice 或 Whisper 的 ONNX 量化版本(int8),平衡精度与性能。
|
||
|
||
---
|
||
|
||
## 5. 非功能需求
|
||
|
||
### 5.1 性能要求
|
||
|
||
| 指标 | 目标值 | 说明 |
|
||
|------|--------|------|
|
||
| 首字延迟 | < 500ms | 开始说话到第一个字出现的时间 |
|
||
| 短句识别 | < 1s | 5 秒以内音频的完整识别时间 |
|
||
| CPU 占用 | < 30% | 待机状态,单核占用 |
|
||
| 内存占用 | < 500MB | 模型加载后基础内存 |
|
||
| 模型大小 | < 300MB | 单语言模型,量化后 |
|
||
|
||
### 5.2 兼容性要求
|
||
|
||
| 平台 | 最低版本 | 说明 |
|
||
|------|----------|------|
|
||
| Windows | Windows 10 | x64 架构 |
|
||
| macOS | macOS 11+ | Intel / Apple Silicon |
|
||
| Linux | Ubuntu 20.04+ | glibc 2.31+ |
|
||
|
||
### 5.3 安全要求
|
||
|
||
- 所有音频数据本地处理,不上传云端
|
||
- 不收集用户语音样本
|
||
- 配置文件不含敏感信息
|
||
|
||
---
|
||
|
||
## 6. 项目里程碑
|
||
|
||
### Phase 1 - MVP(v0.1.0)
|
||
- [ ] 项目基础框架搭建
|
||
- [ ] ONNX Runtime 集成
|
||
- [ ] 单语言(中文)识别 demo
|
||
- [ ] 基础命令行界面
|
||
|
||
### Phase 2 - 核心功能(v0.5.0)
|
||
- [ ] 多语言支持(中英)
|
||
- [ ] Electron GUI 界面
|
||
- [ ] 实时识别功能
|
||
- [ ] 剪贴板输出
|
||
|
||
### Phase 3 - 完善功能(v1.0.0)
|
||
- [ ] 键盘模拟输入
|
||
- [ ] 批量文件转写
|
||
- [ ] 配置管理界面
|
||
- [ ] 安装包打包分发
|
||
|
||
### Phase 4 - 增强功能(v1.5.0+)
|
||
- [ ] 更多语种支持
|
||
- [ ] 说话人分离
|
||
- [ ] 自定义热词
|
||
- [ ] 插件系统
|
||
|
||
---
|
||
|
||
## 7. 风险评估
|
||
|
||
| 风险 | 概率 | 影响 | 应对措施 |
|
||
|------|------|------|----------|
|
||
| ONNX 模型性能不足 | 中 | 高 | 准备量化模型,优化推理管线 |
|
||
| 跨平台音频采集兼容性问题 | 高 | 中 | 备选方案:Web Audio API + Electron |
|
||
| 模型文件过大 | 中 | 中 | 提供模型下载器,按需下载 |
|
||
| 键盘模拟被安全软件拦截 | 低 | 高 | 提供白名单引导,备用剪贴板方案 |
|
||
|
||
---
|
||
|
||
## 8. 附录
|
||
|
||
### 8.1 参考资料
|
||
|
||
- [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)
|
||
|
||
### 8.2 竞品分析
|
||
|
||
| 产品 | 优势 | 劣势 |
|
||
|------|------|------|
|
||
| 讯飞输入法 | 识别精度高 | 需联网,隐私顾虑 |
|
||
| 谷歌语音输入 | 多语言支持好 | 需 Chrome,依赖云端 |
|
||
| Whisper Desktop | 本地运行 | 性能开销大,界面简陋 |
|
||
|
||
---
|
||
|
||
**文档状态**: 初稿
|
||
**下次更新**: 待技术评审后更新
|