update readme

This commit is contained in:
jhqxxx
2025-10-11 11:06:57 +08:00
parent f951a43a60
commit dfeabc33f8
2 changed files with 35 additions and 5 deletions
+33 -3
View File
@@ -3,7 +3,7 @@
## 特性
* 🚀 高性能推理 - 基于 Candle 框架,提供高效的张量计算和模型推理
* 🎯 多模型支持 - 集成视觉、语言和多模态模型
* 🎯 多模型支持 - 集成视觉、语言和语音多模态模型
* 🔧 易于使用 - 简洁的 API 设计,快速上手
* 🛡️ 内存安全 - 得益于 Rust 的所有权系统,确保内存安全
* 📦 轻量级 - 最小化依赖,编译产物小巧
@@ -28,10 +28,10 @@
aha = { git = "https://github.com/jhqxxx/aha.git" }
# 启用 CUDA 支持(可选)
candle-inference = { git = "https://github.com/jhqxxx/aha.git", features = ["cuda"] }
aha = { git = "https://github.com/jhqxxx/aha.git", features = ["cuda"] }
# 启用Flash Attention 支持(可选)
candle-inference = { git = "https://github.com/your-username/your-repo.git", features = ["cuda", "flash-attn"] }
aha = { git = "https://github.com/jhqxxx/aha.git", features = ["cuda", "flash-attn"] }
```
### 从源码构建运行测试
@@ -49,6 +49,36 @@ cargo test -F cuda,flash-attn minicpm_generate -- --nocapture
cargo test -F cuda,flash-attn voxcpm_generate -- --nocapture
```
## 使用方法
### VoxCPM示例
```rust
use aha::models::voxcpm::generate::VoxCPMGenerate;
use aha::utils::audio_utils::save_wav;
use anyhow::Result;
fn main() -> Result<()> {
let model_path = "xxx/openbmb/VoxCPM-0.5B/";
let mut voxcpm_generate = VoxCPMGenerate::init(model_path, None, None)?;
let generate = voxcpm_generate.generate(
"太阳当空照,花儿对我笑,小鸟说早早早".to_string(),
None,
None,
2,
100,
10,
2.0,
false,
6.0,
)?;
let _ = save_wav(&generate, "voxcpm.wav")?;
Ok(())
}
```
## 开发
### 项目结构
```text
+2 -2
View File
@@ -23,7 +23,7 @@ impl VoxCPMGenerate {
let config: VoxCPMConfig = serde_json::from_slice(&std::fs::read(config_path)?)?;
let cfg_dtype = config.dtype.as_str();
let model_list = find_type_files(path, "pth")?;
println!(" pth model_list: {:?}", model_list);
// println!(" pth model_list: {:?}", model_list);
let mut dict_to_hashmap = HashMap::new();
let mut vae_dtype = candle_core::DType::F32;
for m in model_list {
@@ -46,7 +46,7 @@ impl VoxCPMGenerate {
)?;
let model_list = find_type_files(path, "bin")?;
println!(" bin model_list: {:?}", model_list);
// println!(" bin model_list: {:?}", model_list);
dict_to_hashmap = HashMap::new();
let mut m_dtype = get_dtype(dtype, cfg_dtype);
for m in model_list {