audio-cpp-sys 0.8.1

audio.cpp(ggml 音频推理框架)的底层绑定
Documentation
# ----------------------------------------------------------------

# 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",

    "bindings.docsrs.rs",

    "/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 支持的 117 个 loader 族(随上游增长,以

# audio.cpp/CMakeLists.txt 的 make_*_loader 为准)。注意:全量编译耗时很长且生成

# 的静态库很大;并不等于"能运行任意模型",权重文件仍需自行下载。

# 日常建议优先用模型族 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。

# 其余未列出的模型族仍用 custom-models + AUDIOCPP_MODELS 环境变量调用

# (如 voxcpm2 等;上游族名以 audio.cpp/CMakeLists.txt

# 的 audiocpp_add_model 为准,build.rs 会自动映射)。

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-nemotron-3-diar = ["custom-models"] # 说话人分离:NVIDIA Nemotron 3 Diarization(离线+批+流式)

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-moss-tts-v15 = ["custom-models"]   # TTS:MOSS-TTS-v1.5(8B 零样本克隆,en/zh,仅离线)

model-vieneu-v3-turbo = ["custom-models"] # TTS:VieNeu-TTS v3 Turbo(vi/en 48kHz 克隆;旧名 vietneu_tts)

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

model-sortformer-diar-v2 = ["custom-models"] # 说话人分离:SortFormer v2.1(离线+流式,社区模型)

model-minimax-music3 = ["custom-models"]  # 音乐生成:MiniMax Music3(预览)

model-soprano-tts = ["custom-models"]      # TTS:Soprano TTS

model-echo-tts = ["custom-models"]         # TTS:Echo TTS

model-voxcpm1 = ["custom-models"]          # TTS:VoxCPM1

model-f5-tts = ["custom-models"]           # TTS:F5 TTS

model-magpie-tts = ["custom-models"]       # TTS:Magpie TTS

model-personaplex = ["custom-models"]      # 多角色对话语音:PersonaPlex

model-moss-voicegen = ["custom-models"]    # 语音生成:MOSS VoiceGen

model-meanvc2 = ["custom-models"]          # 语音转换:MeanVC2

model-mms-forced-aligner = ["custom-models"]  # 强制对齐:MMS Forced Aligner(社区模型)

model-qwen3-forced-aligner = ["custom-models"]  # 强制对齐:Qwen3 Forced Aligner(11 语种,离线)

model-audiosr = ["custom-models"]              # 音频超分辨率:AudioSR

model-controlfoley = ["custom-models"]        # 可控音效生成:ControlFoley

model-firered-audio = ["custom-models"]       # 语音理解/生成:FireRed Audio

model-fireredtts3 = ["custom-models"]          # TTS:FireRed TTS3

model-granite5asr = ["custom-models"]          # IBM Granite Speech 5.0 ASR(社区模型)

model-audio8-asr = ["custom-models"]            # Audio8 ASR(社区模型)

model-audio8-tts = ["custom-models"]            # Audio8 TTS(社区模型)

model-midashenglm-gen = ["custom-models"]      # 生成式音频:MIdashengLM

model-chatterbox-turbo = ["custom-models"]  # TTS:Chatterbox Turbo(快速推理变体)

model-sanotts = ["custom-models"]            # TTS:sanoTTS(社区模型,en/vi/id)

model-sopro-tts = ["custom-models"]          # TTS:Sopro V2 Turbo

model-mira-tts = ["custom-models"]           # TTS:MiraTTS(社区模型)

model-cosyvoice3 = ["custom-models"]         # TTS:CosyVoice3

model-breeze-tts = ["custom-models"]         # TTS:BreezeTTS

model-vibeasr = ["custom-models"]            # ASR:VibeASR(社区 INT8/ternary)

model-moonshine-asr = ["custom-models"]      # ASR:Moonshine 流式 ASR(社区模型,离线+流式)

model-niagara-asr = ["custom-models"]        # ASR:Niagara 批处理 ASR(英文,仅离线)

model-kokoro-tts = ["custom-models"]         # TTS:Kokoro 82M 多语 TTS(仅离线)

model-builtin-audio-utils = ["custom-models"] # 音频工具:内置降噪/增强/超分(deepfilternet2/rnnoise/zipenhancer/gtcrn/flashsr)

model-yue2 = ["custom-models"]                  # 音乐生成:YuE2(符号 ABC 规划 + 语义 codec,仅离线)

model-sheetsage2 = ["custom-models"]            # 音频转谱:SheetSage2(录音转 ABC 乐谱,仅离线)

model-canary-asr = ["custom-models"]                # ASR: NVIDIA Canary 180M Flash (multilingual)

model-cohere-asr = ["custom-models"]                # ASR: Cohere Transcribe (multilingual)

model-moss-transcribe-diarize = ["custom-models"]  # ASR: MOSS Transcribe+Diarize (offline+streaming)

model-pulsevad = ["custom-models"]                    # VAD: PulseVAD (16kHz mono)

model-apollo = ["custom-models"]                        # Audio tool: Apollo music restoration (s2s)

model-universr = ["custom-models"]                      # Audio tool: UniverSR super-resolution (s2s)

model-zipvoice = ["custom-models"]                      # TTS: ZipVoice / ZipVoice-Distill (en/zh, offline)

model-auk = ["custom-models"]                           # TTS: AuK / AuK-Flash speech generation & editing (offline)

model-confucius4-r2t2 = ["custom-models"]               # ASR: Confucius4-R2T2 realtime streaming ASR (offline+streaming)

model-liveavatar = ["custom-models"]                    # Audio generation: LiveAvatar S2V avatar (offline+streaming)

model-piper-tts = ["custom-models"]                     # TTS: Piper VITS TTS (community, en, offline)

model-kitten-tts = ["custom-models"]                    # TTS: KittenTTS Mini 0.8 (community, en, offline)

model-kitten-tts2 = ["custom-models"]                   # TTS: Kitten TTS 2 (multilingual Qwen3 + cloning, offline)

model-kugelaudio = ["custom-models"]                    # TTS: KugelAudio-0-Open (preset voices, offline+streaming)

model-maya1 = ["custom-models"]                         # TTS: Maya1 3B expressive EN TTS (voice design, offline)

model-moss-ttsd = ["custom-models"]                     # TTS: MOSS-TTSD 8B dialogue TTS (multi-speaker clone, offline)

model-tone-color-vc = ["custom-models"]                 # VC: Tone Color VC (reference speaker, offline)

model-owsm = ["custom-models"]                          # ASR: OWSM multilingual (offline+streaming)

model-owsm-ctc = ["custom-models"]                      # ASR: OWSM-CTC non-autoregressive (offline+streaming)

model-gigaam-asr = ["custom-models"]                    # ASR: GigaAM v3 / multilingual Conformer (offline)

model-crisperwhisper = ["custom-models"]                # ASR: CrisperWhisper 2.0 (asr+align, offline+streaming)

model-audio-flamingo = ["custom-models"]                # ASR: Audio Flamingo 3/Next (transcription+caption+QA, offline)

model-lfm2-audio = ["custom-models"]                    # ASR: LFM2.5-Audio (offline)

model-index-echo = ["custom-models"]                    # ASR: Index-Echo-S2TT translation (offline)

model-samsone = ["custom-models"]                       # ASR: SAMSONE audio-language (caption+QA, offline)

model-reuse = ["custom-models"]                         # Audio tool: RE-USE speech restoration (s2s, offline)

model-sam-audio = ["custom-models"]                     # Audio tool: SAM Audio prompt-conditioned separation (s2s)

model-sidon = ["custom-models"]                         # Audio tool: Sidon speech restoration 48kHz (s2s, offline)

model-smart-turn = ["custom-models"]                    # Turn detection: Smart Turn v3.2 (turn, offline)

model-mossformer2 = ["custom-models"]                   # Audio separation: MossFormer2 overlapping speech (sep, offline)

model-tf-gridnet = ["custom-models"]                    # Audio separation: TF-GridNet overlapping speech (sep, offline)

model-firered-vad = ["custom-models"]                   # VAD: FireRed VAD DFSMN (offline+streaming, 16kHz mono)

model-ced = ["custom-models"]                           # Audio classification: CED ViT 527 AudioSet classes (cls, offline)

model-ast-audioset = ["custom-models"]                  # Audio classification: AST AudioSet 527 classes (cls, offline)

model-micro-wake-word = ["custom-models"]               # Wake word: microWakeWord MixedNet (wake, offline+streaming)

model-sherpa-kws = ["custom-models"]                    # Wake word: sherpa-onnx Zipformer KWS (wake, offline+streaming)

model-hviske-asr-v6 = ["custom-models"]                 # ASR: Hviske v6 Danish Whisper+Qwen3 (offline)

model-whistle-asr = ["custom-models"]                   # ASR: Whistle offline (community, offline)



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

# 计算后端 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