From dfeabc33f8b40c6784db96bb8f7be5beafc5a3db Mon Sep 17 00:00:00 2001 From: jhqxxx Date: Sat, 11 Oct 2025 11:06:57 +0800 Subject: [PATCH] update readme --- README.md | 36 ++++++++++++++++++++++++++++++++--- src/models/voxcpm/generate.rs | 4 ++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e1487ba..4c888a8 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/models/voxcpm/generate.rs b/src/models/voxcpm/generate.rs index 6988f5d..384886d 100644 --- a/src/models/voxcpm/generate.rs +++ b/src/models/voxcpm/generate.rs @@ -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 {