audio-cpp-sys 0.2.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",

    "prebuilt_download.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 下的静态库文件

flate2 = "1.0"           # prebuilt 归档解压(gzip)

tar = "0.4"              # prebuilt 归档解压(tar)

ureq = { version = "2.12", default-features = false, features = ["tls"] } # prebuilt 下载

serde_json = "1"         # prebuilt 归档 metadata.json 解析



# ------------------------------------------------------------------------

# 模型组合 feature(互斥,映射 audio.cpp 的 AUDIOCPP_MODEL_SET)。

# ------------------------------------------------------------------------

[features]

default = ["core-models"]

# 启用 prebuilt 自动下载:从 GitHub Releases 拉取与当前平台/后端/模型组合匹配的

# 预编译归档(tag 默认 v{CARGO_PKG_VERSION},可用 AUDIOCPP_PREBUILT_TAG/REPO/URL

# 覆盖),解压缓存到 target/audio-cpp-prebuilt-cache/;找不到/下载失败/身份不符

# 时回落到本地源码构建。配合 AUDIOCPP_PREBUILT_DIR 则始终使用本地目录。

prebuilt = []

# 引擎核心 + 内置 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-sense-asr = ["custom-models"]      # ASR:SenseVoice(阿里)

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,

             # 若二进制的目标机与构建机不同,请不要开启。



# 继承工作区 lint 规则(见仓库根 Cargo.toml [workspace.lints])

[lints]

workspace = true