audio-cpp-sys 0.1.0

audio.cpp(ggml 音频推理框架)的底层绑定
docs.rs failed to build audio-cpp-sys-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

audio-cpp-sys

audio.cpp(基于 ggml 的本地音频推理引擎)的底层 FFI 绑定

本 crate 是 audio-cpp-rs 工作区的一部分,只负责把 C++ 运行时构建出来并导出原始 C ABI:

  1. build.rsCMake + Ninja 构建上游 engine_runtime 静态库,用 cc 编译 C shim(capi.cpp);
  2. bindgencapi.h 生成 Rust 绑定,lib.rsaudio_cpp_sys::* 导出。

需要高层、类型安全的 API 请使用 audio-cpp

依赖

  • 上游源码audio.cppgit submodule 引入。构建脚本会断言 audio.cpp/CMakeLists.txt 存在,缺失时报错提示。
  • 工具链(win32 实测):CMake、Ninja、MSVC(或 GCC/Clang)、bindgen 所需的 clang 与 MSVC INCLUDE/LIB 环境。

使用

把本 crate 加入依赖:

[dependencies]
audio-cpp-sys = "0.1"

构建默认的 core-models(引擎核心 + 内置 VAD):

cargo build

features

模型组合(互斥,默认 core-models):

feature 说明
core-models(默认) 引擎核心 + 内置 VAD(silero_vad / marblenet_vad),权重随上游 vendored,开箱即用
custom-models 按需编译:配合 AUDIOCPP_MODELS 环境变量(逗号分隔 model alias)
model-<族> 常用模型族的专用开关(如 model-qwen3-asrmodel-mossmodel-demucsmodel-sortformer-diar),无需环境变量
full-models 全量 44+ 模型族(编译慢,且仍要自行下载权重)

计算后端(可叠加,默认 CPU):

feature 说明
cuda NVIDIA CUDA(需 CUDA Toolkit;与 hip 互斥)
hip AMD HIP/ROCm(与 cuda 互斥)
vulkan Vulkan 通用后端(需 Vulkan SDK)
metal Apple Metal(macOS 默认开启)
openmp OpenMP 并行(需对应运行时)
native 针对本机 CPU 优化(不移植)

C ABI 约定

所有绑定函数遵循同一套契约(详见 capi.h):

  • 结构化数据以 JSON 字符串(UTF-8、\0 结尾)跨边界传递;
  • 音频采样以 float 数组传递;
  • 返回 0 成功、非 0 出错,错误信息用 audiocpp_last_error() 获取;
  • 返回的 char* / float* / 句柄若非空,必须用对应的 free() 释放(audiocpp_free_string / audiocpp_audio_free / audiocpp_*_free)。

三个核心句柄:

  • audiocpp_registry —— 模型注册表(audiocpp_registry_default / ..._load);
  • audiocpp_model —— 已加载的模型(audiocpp_model_metadata_json / ..._create_task_session);
  • audiocpp_session —— 一次任务会话,离线(run_offline)或流式(start / process_audio / finish)。

示例

# 枚举注册表与设备(无需任何模型文件)
cargo run -p audio-cpp-sys --example inspect

# 离线 VAD(需要 silero_vad_16k.safetensors 权重)
cargo run -p audio-cpp-sys --example vad_offline_ffi -- \
  ./silero_vad_16k.safetensors ./speech.wav

License

Apache-2.0