impress_asr_input/PRD.md
impressionyang 7c51542918 Initial commit: Impress ASR Input 项目基础框架
功能:
- 基于 ONNX 的语音识别引擎
- 多语言支持(中文、英文、日语、韩语)
- 模型加载器(支持 SenseVoice/Whisper/Paraformer)
- 音频采集和处理模块(VAD、重采样、归一化)
- 文本输出模块(剪贴板)
- CLI 命令行工具
- Electron GUI 界面
- Windows x64 打包配置

文档:
- PRD 产品需求文档
- README 项目说明
- 开发指南
- Windows 构建指南

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-20 16:10:11 +08:00

233 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 - MVPv0.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 | 本地运行 | 性能开销大界面简陋 |
---
**文档状态**: 初稿
**下次更新**: 待技术评审后更新