4 个版本
0.1.3 | 2024年2月4日 |
---|---|
0.1.2 | 2024年2月3日 |
0.1.1 | 2024年1月29日 |
0.1.0 | 2024年1月27日 |
#400 在 多媒体 中
39 每月下载
在 aprilasr 中使用
210KB
5.5K SLoC
aprilasr-sys
为 april-asr C API (libaprilasr) 提供的低级 FFI 绑定。
概述
使用 CMake 从源代码编译 libaprilasr
到 OUT_DIR
,并生成 April API 绑定,通过 vendored 上游源代码提供,该源代码指向由 git 子模块定义的特定提交 sha。
要求
构建需要以下系统库
- libonnxruntime
- libclang
使用 locate
搜索已安装的库。例如,在 Linux 上运行命令 locate libonnxruntime.so
以确定是否安装了 ONNX Runtime。
安装
要获取发布到 crates.io 的最新未撤回版本
cargo add aprilasr-sys
或者使用 git 通过 cargo 获取开发分支的最新版本
cargo add --git https://codeberg.org/vhs/aprilasr-sys.git
也可以将此 crate 作为 vendored
mkdir crates && \
(cd crates; git submodule add https://codeberg.org/vhs/aprilasr-sys)
一旦克隆,更新依赖项的 Cargo.toml
清单如下
[dependencies]
aprilasr-sys = { path = "crates/aprilasr-sys" }
示例
有关基本用法示例,请参阅 examples/init.rs
并运行以下命令
cargo run --example init
您应该看到类似以下输出
April ASR api v1 initialized and ready for model.
开发
首先克隆 vendored 源代码
git submodule update --init --recursive
要生成绑定,运行以下命令
cargo build [--release]
要指定包含目录,请在运行构建之前设置环境变量 APRIL_INCLUDE_DIR
。
要检查生成的绑定
bat $(echo $(exa target/*/build/*/out/bindings.rs) | head -1)
该命令需要 bat
和 exa
rust 二进制文件,并以语法高亮显示输出。
版本控制
除非 april-asr 采用 语义版本控制,否则请考虑使用 chrono
来解析日期格式。
let date_str = "2023.05.12";
let native_date = chrono::NaiveDate::parse_from_str(date_str, "%Y.%m.%d");
p!("{:?}", native_date);
在这里,p!
是 build.rs
中的一个调试助手,而 date_str
表示 VERSION
,它在 vendor/april-asr/CMakeLists.txt
文件中。通过一些额外的工作,cmake-parser 看起来非常适合解析文件以获取版本。
基于日期的版本控制目前尚未在 build.rs
构建脚本中实现。一旦实现了版本控制,将其用作 pkg-config 的输入以扫描系统中的库也将是理想的。
有关其他可能的改进,请参阅 制作 *-sys crate。
供应商
由于我们使用 git 子模块来供应商 April ASR 源代码,因此我们有更新子模块以在上游源代码更改时生成新绑定的能力。
要查看 april-asr
子模块的当前提交
git submodule status | awk '{print substr($1, 1, 7)}'
要将子模块更新到子模块的 main
分支的最新提交
git submodule update --remote --recursive --merge
此命令从子模块的远程仓库获取最新的提交,检出由 main
分支引用的提交,并在主仓库中更新子模块。
发布
为 crates.io 打包此 crate 的步骤
- 如 供应商 中所述更新 git 子模块。
- 运行
cargo clean
以删除现有的构建工件。 - 运行
cargo build --release
以更新生成的绑定。 - 如 开发 中所述检查绑定。
- 运行
cargo test
以执行包括 bindgen 的单元测试。 - 运行
cargo run --example init
以检查示例。 - 运行
cargo doc
以生成 crate 文档并对其进行审查。 - 在
Cargo.toml
清单中提升软件包版本。 - 运行
cargo publish --dry-run
以审查您的工作。 - 然后,运行
cargo login
和cargo publish
以发布 crate。
依赖关系
~0–2MB
~40K SLoC