# 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