audio-cpp-sys 0.1.0

audio.cpp(ggml 音频推理框架)的底层绑定
# ----------------------------------------------------------------
# audio-cpp-sys — audio.cpp (ggml 音频推理框架) 的底层 FFI 绑定。
#
# 构建流程(见 build.rs):
#   1. 用 CMake + Ninja 构建 audio.cpp 的 engine_runtime 静态库(vendored 于 ./audio.cpp);
#   2. 用 cc 编译 C shim(capi.cpp)为独立静态库;
#   3. 用 bindgen 为 capi.h 生成 Rust 绑定(bindings.rs)。
# ----------------------------------------------------------------

[package]
name = "audio-cpp-sys"
description = "audio.cpp(ggml 音频推理框架)的底层绑定"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
# 声明本 crate 链接的本地库名;任何同时声明 links="audio-cpp" 的 crate 会被 Cargo 拒绝,
# 防止一个程序里出现两份 ggml/audio.cpp 导致重复符号。
links = "audio-cpp"
build = "build.rs"
# 发布到 crates.io 时需要包含的文件(audio.cpp 上游源码体积过大,由 gitignore 排除,
# 通过其余方式提供,见 README)。
include = [
    "build.rs",
    "capi.h",
    "capi.cpp",
    "/src",
    "/examples",
]

[build-dependencies]
bindgen.workspace = true # 从 capi.h 生成 Rust FFI 绑定
cmake.workspace = true   # 用 CMake 构建 engine_runtime
cc.workspace = true      # 编译 capi.cpp 并把 C 链接系统库交给它处理
glob.workspace = true    # 收集 OUT_DIR 下的静态库文件

# ------------------------------------------------------------------------
# 模型组合 feature(互斥,映射 audio.cpp 的 AUDIOCPP_MODEL_SET)。
# ------------------------------------------------------------------------
[features]
default = ["core-models"]
# 引擎核心 + 内置 VAD 模型(silero_vad / marblenet_vad),已随上游源码
# vendored 在 audio.cpp/assets/framework/models/,无需下载任何权重。
# 这也是编译最快、开箱即用的最小编译集,适合仅用 VAD 或验证绑定链路的场景。
core-models = []
# 全量编译 audio.cpp 支持的 44+ 模型族。注意:全量编译耗时很长且生成
# 的静态库很大;并不等于"能运行任意模型",权重文件仍需自行下载。
# 日常建议优先用模型族 feature 或 custom-models 按需编译,只有需要一次
# 备齐全部能力时才用本项。
full-models = []
# 按需编译模式:引擎核心 + 内置 VAD + "请求的模型族"(对普通依赖方透明,
# 通常不需要直接启用它——下面的 model-* 与 AUDIOCPP_MODELS 会自动走进本模式)。
custom-models = []

# 常用模型族的专用 feature(`model-<target>`):启用即按需编译对应族,
# 无需手设 AUDIOCPP_MODELS。Cargo 视 `-` 与 `_` 等价,故 `--features
# model-qwen3-asr` 与 `model-qwen3_asr` 均可;build.rs 会扫描被启用的
# `CARGO_FEATURE_MODEL_*`,把后缀大写→小写即为上游 CMake target 名,
# 因此新增族 feature 时无需改动 build.rs。
# 其余未列出的模型族(roformer、htdemucs、outetts、glm_tts、pocket_tts、
# sortformer_diar 等)仍用 custom-models + AUDIOCPP_MODELS 环境变量调用。
model-citrinet-asr = ["custom-models"]   # ASR:英/多语语音识别
model-fun-asr-nano = ["custom-models"]   # ASR:FunASR 轻量识别
model-hviske-asr = ["custom-models"]     # ASR:Hviske 识别
model-kroko-asr = ["custom-models"]      # ASR:Kroko 识别
model-nemotron-asr = ["custom-models"]   # ASR:NVIDIA Nemotron 识别
model-parakeet-tdt = ["custom-models"]   # ASR:NVIDIA Parakeet TDT
model-qwen3-asr = ["custom-models"]      # ASR:Qwen3 ASR(已验证)
model-vibevoice-asr = ["custom-models"]  # ASR:VibeVoice 语音
model-moss = ["custom-models"]           # TTS:MOSS(moss_tts_nano / moss_tts_local,已验证)
model-qwen3-tts = ["custom-models"]      # TTS:Qwen3 TTS
model-irodori-tts = ["custom-models"]    # TTS:Irodori TTS
model-fish-audio = ["custom-models"]     # TTS/Voice:Fish Speech/Cloning
model-demucs = ["custom-models"]          # 音频分离:Demucs 源分离(alias htdemucs)
model-roformer = ["custom-models"]        # 音频分离:Mel-Band RoFormer 源分离(alias mel_band_roformer)
model-sortformer-diar = ["custom-models"] # 说话人分离:SortFormer Diar 4spk

# ------------------------------------------------------------------------
# 计算后端 feature(可叠加,映射 engine 的 ENGINE_ENABLE_*_CPU 选项)。
# 不启用任何 GPU 后端时使用 CPU 推理(ggml 默认)。
# ------------------------------------------------------------------------
cuda = []    # NVIDIA CUDA。需要已安装 CUDA Toolkit(nvcc、cudart)且手工
             # 配置好构建环境;开启后 ggml 的 CUDA 算子参与推理。
hip = []     # AMD HIP/ROCm(针对 Radeon/Instinct GPU)。需要 ROCm 工具链。
             # 与 cuda 互斥:上游 CMake 同时启用会报错,勿同时开启。
vulkan = []  # Vulkan 通用计算后端。需要 Vulkan SDK 与驱动;跨厂商(NVIDIA/
             # AMD/Intel)通用,但算子覆盖/性能通常不如专属后端。
metal = []   # Apple Metal。注意:macOS 上默认即开启,无需手动启用;
             # 在非 Apple 平台(如 win32)默认关闭,需设环境变量
             # AUDIOCPP_FORCE_METAL 才会强制开启(一般用于交叉实验)。
openmp = []  # OpenMP 并行加速。依赖 OpenMP 运行时:MSVC 需 /openmp 运行时
             # 库、GCC/Clang 需 libgomp;未安装对应运行时则链接期报错,
             # 此时应关掉本 feature 而非忽略错误。
native = []  # 针对本机 CPU 生成优化指令(对应 GGML_NATIVE,如 AVX2/
             # FMA/AVX512)。能提升推理速度,但产出的二进制不再移植到旧 CPU,
             # 若二进制的目标机与构建机不同,请不要开启。