- 在 settingsPage.tsx 中添加详细的 console.log 调试信息 - 改进错误处理,显示具体错误消息 - 更新构建脚本以包含 capabilities 权限配置
177 lines
4.4 KiB
Bash
Executable File
177 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# Linux 编译并打包脚本
|
||
# 编译 impress_asr_input_rust 项目并打包(包含 CLI 和 GUI 版本)
|
||
|
||
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/6] 清理旧的 dist 目录..."
|
||
rm -rf "$DIST_DIR"
|
||
mkdir -p "$DIST_DIR"
|
||
|
||
# 构建前端
|
||
echo ""
|
||
echo "[2/6] 构建前端..."
|
||
cd "$PROJECT_DIR/web"
|
||
npm run build
|
||
cd "$PROJECT_DIR"
|
||
|
||
# 验证前端构建
|
||
echo ""
|
||
echo "前端构建结果:"
|
||
ls -lh "$PROJECT_DIR/web/dist/"
|
||
|
||
# 编译 CLI 程序
|
||
echo ""
|
||
echo "[3/6] 编译 CLI 程序..."
|
||
cargo build --release
|
||
|
||
# 编译 GUI 程序
|
||
echo ""
|
||
echo "[4/6] 编译 GUI 程序..."
|
||
cargo build --release --features gui
|
||
|
||
# 复制必要文件
|
||
echo ""
|
||
echo "[5/6] 复制必要文件到 dist 目录..."
|
||
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
|
||
cp "$PROJECT_DIR/target/release/impress_asr_gui" "$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
|
||
cp "$PROJECT_DIR/icons/icon.png" "$DIST_DIR/" 2>/dev/null || true
|
||
cp "$PROJECT_DIR/icons/tray-icon.png" "$DIST_DIR/" 2>/dev/null || true
|
||
# 复制 Tauri 权限配置(Tauri v2 必需)
|
||
cp -r "$PROJECT_DIR/capabilities" "$DIST_DIR/"
|
||
|
||
# 创建 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. **运行程序**
|
||
|
||
**GUI 版本(推荐)**
|
||
```bash
|
||
./impress_asr_gui
|
||
```
|
||
|
||
**CLI 版本**
|
||
```bash
|
||
./impress_asr --help
|
||
|
||
# 录音
|
||
./impress_asr record
|
||
|
||
# 识别音频文件
|
||
./impress_asr recognize -i audio.wav
|
||
```
|
||
|
||
## 📦 文件清单
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `impress_asr_gui` | GUI 桌面应用 |
|
||
| `impress_asr` | CLI 命令行工具 |
|
||
| `icon.png` | 应用图标 |
|
||
| `tray-icon.png` | 托盘图标 |
|
||
| `config.toml` | 配置文件(可选) |
|
||
| `models/` | 模型文件目录 |
|
||
| `dist/` | 前端资源目录 |
|
||
|
||
## 📋 系统要求
|
||
|
||
- **操作系统**:Linux x64 (glibc 2.28+)
|
||
- **支持的系统**:Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
|
||
- **依赖库**:
|
||
- `libgtk-3-0` - GTK3 图形界面
|
||
- `libwebkit2gtk-4.1` - WebKit 浏览器引擎
|
||
- `libappindicator3-1` - 系统托盘支持
|
||
- `libasound2` - 音频支持
|
||
|
||
## ❓ 常见问题
|
||
|
||
### 错误:模型文件不存在
|
||
**解决**:下载 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
|
||
```
|
||
|
||
### GUI 版本无法启动
|
||
确保已安装 GTK3 和 WebKit2GTK 依赖:
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo apt-get install libgtk-3-0 libwebkit2gtk-4.1-0 libappindicator3-1
|
||
|
||
# CentOS/RHEL
|
||
sudo yum install gtk3 webkit2gtk4.1 libappindicator
|
||
```
|
||
|
||
## 📝 获取帮助
|
||
|
||
```bash
|
||
# CLI 帮助
|
||
./impress_asr --help
|
||
```
|
||
|
||
---
|
||
**版本**: 0.1.0 | **构建时间**: 见文件名后缀
|
||
README_EOF
|
||
|
||
echo "文件列表:"
|
||
ls -lh "$DIST_DIR/"
|
||
|
||
# 打包成 tar.gz
|
||
echo ""
|
||
echo "[6/6] 打包成 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_gui (GUI 桌面应用)"
|
||
echo " - impress_asr (CLI 工具)"
|
||
echo " - icon.png (应用图标)"
|
||
echo " - tray-icon.png (托盘图标)"
|
||
echo " - capabilities/ (Tauri 权限配置)"
|
||
echo " - config.toml (可选,配置文件)"
|
||
echo " - models/ (模型文件目录)"
|
||
echo " - dist/ (前端资源)"
|
||
echo "=============================================="
|