diff --git a/build-linux-package.sh b/build-linux-package.sh new file mode 100755 index 0000000..b80cc70 --- /dev/null +++ b/build-linux-package.sh @@ -0,0 +1,140 @@ +#!/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 "=============================================="