impress_asr_input_rust/BUILD.md
impressionyang ceb2df18c4
Some checks are pending
Build Windows GUI / build-windows (push) Waiting to run
Build Windows GUI / release (push) Blocked by required conditions
初始提交:Windows 跨平台语音识别应用
功能:
- Tauri v2 GUI 应用
- 系统托盘支持
- 日志输出到文件
- 带时间戳的版本号
- 前端资源嵌入

修复:
- 前端路径使用相对路径
- 移除 devUrl 配置
- 窗口置顶设置
2026-05-21 17:58:18 +08:00

246 lines
4.9 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_rust 构建指南
## 项目概述
本项目是一款高性能跨平台桌面语音识别输入工具,包含:
- **CLI 工具** (`impress_asr`): 命令行语音识别工具
- **GUI 应用** (`impress_asr_gui`): 基于 Tauri 的图形界面应用(需要额外依赖)
## 快速开始
### 1. 环境要求
- Rust 1.75+
- Node.js 18+ (用于前端构建)
- Git
### 2. 构建 CLI 版本(无系统依赖)
```bash
# 克隆仓库
cd impress_asr_input_rust
# 构建前端资源
cd web
npm install
npm run build
cd ..
# 构建 CLI 工具
cargo build --release
# 运行
./target/release/impress_asr --help
```
### 3. 构建 GUI 版本(需要系统依赖)
#### Linux (Ubuntu/Debian)
```bash
# 安装系统依赖
sudo apt-get update
sudo apt-get install -y \
pkg-config \
libglib2.0-dev \
libgtk-3-dev \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev \
libasound2-dev \
libssl-dev
# 构建
cargo build --release --features gui
# 运行
./target/release/impress_asr_gui
```
#### macOS
```bash
# 安装 Xcode 命令行工具
xcode-select --install
# 构建
cargo build --release --features gui
```
#### Windows
```bash
# 安装 Visual Studio Build Tools 2019+
# 确保安装 "Desktop development with C++"
# 构建
cargo build --release --features gui
```
## 下载模型
语音识别需要 ONNX 模型文件。以下是推荐的模型来源:
### SenseVoice Small推荐
```bash
# 从 ModelScope 下载
wget -O models/sensevoice-small.onnx \
"https://modelscope.cn/api/v1/models/iic/SenseVoiceSmall/file?FilePath=model.onnx"
# 或从 HuggingFace 下载
wget -O models/sensevoice-small.onnx \
"https://huggingface.co/FunAudioLLM/SenseVoiceSmall/resolve/main/model.onnx"
```
### FunASR Paraformer中文优化
```bash
wget -O models/paraformer.onnx \
"https://modelscope.cn/api/v1/models/iic/paraformer-zh/file?FilePath=model.onnx"
```
## 使用指南
### CLI 工具
```bash
# 列出音频设备
./target/release/impress_asr devices
# 识别音频文件
./target/release/impress_asr recognize audio.wav
# 下载模型
./target/release/impress_asr download --name sensevoice-small
# 录制音频(需要 cpal 库支持)
./target/release/impress_asr record -o output.wav
```
### GUI 应用
```bash
# 启动应用
./target/release/impress_asr_gui
# 或使用系统托盘
# 应用启动后会在系统托盘显示图标
# 右键点击可访问常用功能
```
## 项目结构
```
impress_asr_input_rust/
├── src/
│ ├── bin/
│ │ └── cli.rs # CLI 入口
│ ├── app/ # Tauri 应用层 (GUI)
│ ├── audio/ # 音频处理
│ ├── asr/ # 语音识别核心
│ ├── config/ # 配置管理
│ ├── tray/ # 系统托盘 (GUI)
│ ├── utils/ # 工具函数
│ ├── main.rs # GUI 入口
│ └── lib.rs # 库导出
├── web/ # React 前端
│ ├── src/
│ │ ├── pages/
│ │ │ ├── RecordPage.tsx
│ │ │ ├── FileConvertPage.tsx
│ │ │ └── SettingsPage.tsx
│ └── dist/ # 构建产物
├── models/ # ONNX 模型目录
└── resources/ # 资源文件
```
## 特性说明
### 编译特性
| 特性 | 描述 | 依赖 |
|------|------|------|
| `gui` | 启用图形界面 | Tauri, global-hotkey, 系统库 |
| `onnx` | 启用 ONNX 推理 | onnxruntime-ng |
### 默认构建
默认构建仅包含 CLI 工具,不依赖任何系统库:
```bash
cargo build --release
```
### 完整功能构建
```bash
cargo build --release --features gui,onnx
```
## 故障排除
### 构建错误:找不到 pkg-config
```bash
# Ubuntu/Debian
sudo apt-get install pkg-config
# macOS
brew install pkg-config
# Arch Linux
sudo pacman -S pkg-config
```
### 构建错误ALSA 未找到
```bash
# Ubuntu/Debian
sudo apt-get install libasound2-dev
# Arch Linux
sudo pacman -S alsa-lib
```
### 运行时错误:模型文件不存在
确保模型文件已下载到正确位置:
```bash
ls -la models/sensevoice-small.onnx
# 如果不存在,下载模型
./target/release/impress_asr download
```
### GUI 无法启动
1. 确认已安装所有系统依赖
2. 检查 `tauri.conf.json` 配置
3. 确保前端已构建:`cd web && npm run build`
## 性能优化
### 发布构建优化
项目已配置以下优化:
```toml
[profile.release]
lto = true # 链接时优化
codegen-units = 1 # 单一代码单元,更好优化
opt-level = 3 # 最高优化级别
strip = true # 移除调试符号
```
### 模型优化
1. **量化模型**: 使用 INT8 量化模型可减少 50-75% 大小
2. **模型选择**: SenseVoice Small 在速度和精度间取得良好平衡
3. **GPU 加速**: 启用 CUDA 或 DirectML 后端(需要 `onnx` 特性)
## 许可证
MIT License