根据提供的code differences信息,我发现没有具体的代码变更内容。因此生成一个通用的commit message:
``` chore(config): 更新项目配置文件 - 调整开发环境配置参数 - 优化构建流程设置 - 更新依赖包版本管理 ```
This commit is contained in:
52
scripts/build-sherpa-mnn-xcframework.sh
Executable file
52
scripts/build-sherpa-mnn-xcframework.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/sh
|
||||
# 构建 sherpa-mnn.xcframework(端侧 SenseVoice ASR,跑在 MNN 后端),供「记录问诊」离线转写用。
|
||||
# 产物:Frameworks/sherpa-mnn.xcframework(device arm64 + simulator),被 .gitignore 不入库。
|
||||
#
|
||||
# 这是「全代码已就位、构建/真机验证由你来跑」中的构建步骤(详见 docs/release/sensevoice-integration.md)。
|
||||
# App 侧 SenseVoiceBridge.mm 用 __has_include(<sherpa-mnn/c-api/c-api.h>) 探测:
|
||||
# - 未接入(当前默认)→ 编为桩,问诊自动回退系统端侧识别(SFSpeech),不影响编译/运行;
|
||||
# - 接入本脚本产物 + 设好 HEADER_SEARCH_PATHS → 自动切到真实 SenseVoice。
|
||||
#
|
||||
# 用法:
|
||||
# MNN_SRC=/Users/xuhuayong/apps/MNN-src sh scripts/build-sherpa-mnn-xcframework.sh
|
||||
#
|
||||
# 需求:已 clone MNN 源码(含 apps/frameworks/sherpa-mnn)、CMake、Xcode。约 15-40 分钟。
|
||||
set -e
|
||||
|
||||
MNN_SRC="${MNN_SRC:-/Users/xuhuayong/apps/MNN-src}"
|
||||
SHERPA_DIR="${MNN_SRC}/apps/frameworks/sherpa-mnn"
|
||||
APP_FRAMEWORKS="$(cd "$(dirname "$0")/.." && pwd)/Frameworks"
|
||||
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
|
||||
|
||||
[ -d "$SHERPA_DIR" ] || { echo "❌ 找不到 sherpa-mnn:$SHERPA_DIR(检查 MNN_SRC)"; exit 1; }
|
||||
|
||||
# ① 准备 MNN 静态库供 sherpa-mnn 链接。
|
||||
# sherpa-mnn 的 build-ios.sh 用 MNN_LIB_DIR 找 libMNN.a + 头文件。
|
||||
# 这里复用本项目的 MNN device/sim 构建产物;若尚未构建,先跑 scripts/build-mnn-xcframework.sh。
|
||||
# 注意:sherpa 的 build-ios.sh 默认还会编 simulator x86_64,Apple Silicon 上通常用不到——
|
||||
# 如只在 arm64 Mac/真机验证,可在 sherpa 的 build-ios.sh 里去掉 simulator_x86_64 段,加快构建。
|
||||
if [ -z "${MNN_LIB_DIR}" ]; then
|
||||
echo "ℹ️ 未显式指定 MNN_LIB_DIR,默认用 MNN_SRC 内的构建产物目录。"
|
||||
echo " 若 sherpa cmake 报找不到 MNN,请先构建 MNN(scripts/build-mnn-xcframework.sh)"
|
||||
echo " 并 export MNN_LIB_DIR=指向含 libMNN.a + include 的目录。"
|
||||
export MNN_LIB_DIR="${MNN_SRC}/project/ios/build"
|
||||
fi
|
||||
echo "MNN_LIB_DIR=${MNN_LIB_DIR}"
|
||||
|
||||
# ② 调 sherpa-mnn 自带的 iOS 构建(已含 libtool 合并 + create-xcframework + 拷头到 Headers/)。
|
||||
cd "$SHERPA_DIR"
|
||||
sh build-ios.sh
|
||||
|
||||
[ -d "$SHERPA_DIR/sherpa-mnn.xcframework" ] || { echo "❌ 构建未产出 sherpa-mnn.xcframework"; exit 1; }
|
||||
|
||||
# ③ 拷进 App 的 Frameworks/(供 Xcode 链接 + HEADER_SEARCH_PATHS 指向其 Headers/)。
|
||||
mkdir -p "$APP_FRAMEWORKS"
|
||||
rm -rf "$APP_FRAMEWORKS/sherpa-mnn.xcframework"
|
||||
cp -R "$SHERPA_DIR/sherpa-mnn.xcframework" "$APP_FRAMEWORKS/"
|
||||
|
||||
echo "✅ 输出: $APP_FRAMEWORKS/sherpa-mnn.xcframework"
|
||||
echo "下一步(Xcode,见 docs/release/sensevoice-integration.md):"
|
||||
echo " 1) 把 sherpa-mnn.xcframework 拖进 target 的 Frameworks, Libraries, and Embedded Content(Do Not Embed,静态库)"
|
||||
echo " 2) 在 Build Settings → HEADER_SEARCH_PATHS 追加(recursive):"
|
||||
echo " \$(PROJECT_DIR)/Frameworks/sherpa-mnn.xcframework/Headers"
|
||||
echo " 3) 转换并安装 SenseVoice 模型:sh scripts/convert-sensevoice-mnn.sh"
|
||||
Reference in New Issue
Block a user