#!/bin/bash # Linux 编译并打包脚本 # 编译 impress_asr_input_rust 项目并打包 set -e PROJECT_DIR="/home/ubuntu/workspace/cherry-studio/enginneer/impress_asr_input_rust" cd "$PROJECT_DIR" # 生成时间戳(精确到秒) TIMESTAMP=$(date +"%Y%m%d_%H%M%S") DIST_DIR="$PROJECT_DIR/dist/linux-x64" OUTPUT_TAR="$PROJECT_DIR/dist/impress-asr-linux-x64-${TIMESTAMP}.tar.gz" echo "==============================================" echo " Impress ASR - Linux 构建打包脚本" echo " 时间:$(date '+%Y-%m-%d %H:%M:%S')" echo "==============================================" # 清理旧的 dist 目录 echo "" echo "[1/5] 清理旧的 dist 目录..." rm -rf "$DIST_DIR" mkdir -p "$DIST_DIR" # 构建前端 echo "" echo "[2/5] 构建前端..." cd "$PROJECT_DIR/web" npm run build cd "$PROJECT_DIR" # 验证前端构建 echo "" echo "前端构建结果:" ls -lh "$PROJECT_DIR/web/dist/" # 编译 CLI 程序 echo "" echo "[3/5] 编译 CLI 程序..." cargo build --release # 复制必要文件 echo "" echo "[4/5] 复制必要文件到 dist 目录..." cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/" cp -r "$PROJECT_DIR/web/dist" "$DIST_DIR/" cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models" cp "$PROJECT_DIR/resources/configs/default.toml" "$DIST_DIR/config.toml" 2>/dev/null || true # 创建 README.md cat > "$DIST_DIR/README.md" << 'README_EOF' # Impress ASR Input Rust - Linux 运行说明 ## 🚀 快速启动 1. **解压文件** ```bash tar -xzf impress-asr-linux-x64-*.tar.gz cd impress-asr-linux-x64 ``` 2. **运行程序** ```bash # CLI 版本 ./impress_asr --help # 录音 ./impress_asr record # 识别音频文件 ./impress_asr recognize -i audio.wav ``` ## 📦 文件清单 | 文件 | 说明 | |------|------| | `impress_asr` | CLI 命令行工具 | | `config.toml` | 配置文件(可选) | | `models/` | 模型文件目录 | | `dist/` | 前端资源目录 | ## 📋 系统要求 - **操作系统**:Linux x64 (glibc 2.28+) - **支持的系统**:Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+ - **可选依赖**: - `libasound2` - 音频支持 - `libonnxruntime` - ONNX 模型推理 ## ❓ 常见问题 ### 错误:模型文件不存在 **解决**:下载 ONNX 模型并放到 `models/` 目录。 - SenseVoice Small: https://huggingface.co/FunAudioLLM/SenseVoiceSmall/resolve/main/model.onnx ### 错误:找不到 libasound.so **解决**:安装 ALSA 库 ```bash # Ubuntu/Debian sudo apt-get install libasound2 # CentOS/RHEL sudo yum install alsa-lib ``` ## 📝 获取帮助 ```bash ./impress_asr --help ``` --- **版本**: 0.1.0 | **构建时间**: 见文件名后缀 README_EOF echo "文件列表:" ls -lh "$DIST_DIR/" # 打包成 tar.gz echo "" echo "[5/5] 打包成 tar.gz 文件..." cd "$DIST_DIR/.." tar -czf "$OUTPUT_TAR" linux-x64/ # 显示结果 echo "" echo "==============================================" echo "构建打包完成!" echo "输出文件:$OUTPUT_TAR" echo "文件大小:$(ls -lh "$OUTPUT_TAR" | awk '{print $5}')" echo "==============================================" echo "" echo "Linux 运行所需文件清单:" echo " - impress_asr (CLI 工具)" echo " - config.toml (可选,配置文件)" echo " - models/ (模型文件目录)" echo " - dist/ (前端资源)" echo "=============================================="