外观
FunASR Prebuilt SDK (fanasr-onnx)
fanasr-onnx 是为 AI Voice Platform 自研构建的 FunASR C++ 预编译运行时 SDK 资产仓库(对标 onnx-platform/sherpa-onnx)。
1. 架构目标
在构建基于 FunASR 的上层应用(如 fanasr-asr-offline-server、fanasr-asr-online-server)时,无需在每次编译中重新解析与编译复杂的 OpenFST 模板、Kaldi Fbank、yaml-cpp、glog 与 jieba 源码。
通过将核心推理引擎预先编译为平台专属的动态库(funasr.dll / libfunasr.so)与导入库,两端服务端可在全新 Clean Build 下实现 3~4 秒极速构建,单文件增量编译仅需 1 秒。
2. 目录结构
onnx-platform/fanasr-onnx/
├── win_x64/
│ ├── include/ # C++ 头文件
│ │ ├── funasrruntime.h # 顶层 C/C++ API (FunASR/FunOffline/FunTpass)
│ │ ├── model.h # 模型抽象基类
│ │ ├── vad-model.h # VAD 模型抽象
│ │ ├── punc-model.h # 标点模型抽象
│ │ ├── tpass-stream.h # 2-pass 双流引擎声明
│ │ └── com-define.h # 常量与枚举定义
│ └── lib/ # 动态库与导入库
│ ├── funasr.lib / funasr.dll # 核心推理引擎
│ ├── onnxruntime.lib / .dll # ONNX Runtime 运行时
│ ├── yaml-cpp.dll
│ ├── glog.dll
│ └── gflags_nothreads_static.lib
└── linux_x64/ # Linux x86_64 预编译包3. CMakeLists.txt 自动探测与降级规范
上层服务工程的 CMakeLists.txt 统一采用以下探测逻辑:
cmake
# 1. 优先检测 fanasr-onnx 预编译 SDK
find_path(FANASR_ONNX_INCLUDE_DIR NAMES funasrruntime.h
PATHS "${FANASR_ONNX_ROOT}/include"
NO_DEFAULT_PATH
)
if (FANASR_ONNX_INCLUDE_DIR)
# Prebuilt SDK Mode (极速构建模式)
message(STATUS "Found prebuilt fanasr-onnx SDK at ${FANASR_ONNX_ROOT}")
target_include_directories(my_service PRIVATE ${FANASR_ONNX_INCLUDE_DIR})
target_link_libraries(my_service PRIVATE ${FANASR_LIB} ${ONNXRUNTIME_LIB})
else()
# Fallback to Source Mode (源码降级编译模式)
message(STATUS "Prebuilt SDK not found, falling back to fanasr-runtime source")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../fanasr-runtime" fanasr_runtime_build)
endif()