refact voxcpm
This commit is contained in:
+82
-24
@@ -1,5 +1,6 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use aha::models::voxcpm_refact::generate::VoxCPMGenerateRefact;
|
||||
use aha::params::chat::ChatCompletionParameters;
|
||||
use aha::{
|
||||
models::{
|
||||
@@ -59,7 +60,7 @@ fn voxcpm1_5_use_message_generate() -> Result<()> {
|
||||
|
||||
#[test]
|
||||
fn voxcpm1_5_generate() -> Result<()> {
|
||||
// RUST_BACKTRACE=1 cargo test -F cuda voxcpm1_5_generate -r -- --nocapture
|
||||
// RUST_BACKTRACE=1 cargo test -F cuda --test test_voxcpm1_5 voxcpm1_5_generate -r -- --nocapture
|
||||
let save_dir =
|
||||
aha::utils::get_default_save_dir().ok_or(anyhow::anyhow!("Failed to get save dir"))?;
|
||||
let model_path = format!("{}/OpenBMB/VoxCPM1.5/", save_dir);
|
||||
@@ -71,35 +72,37 @@ fn voxcpm1_5_generate() -> Result<()> {
|
||||
|
||||
let i_start = Instant::now();
|
||||
// let generate = voxcpm_generate.generate_simple("太阳当空照,花儿对我笑,小鸟说早早早".to_string())?;
|
||||
let generate = voxcpm_generate.inference(
|
||||
"老大爷我来啦,红红火火恍恍惚惚".to_string(),
|
||||
Some("啥子小师叔,打狗还要看主人,你再要继续,我就是你的对手".to_string()),
|
||||
Some("file://./assets/audio/voice_01.wav".to_string()),
|
||||
// Some("一定被灰太狼给吃了,我已经为他准备好了花圈了".to_string()),
|
||||
// Some("file://./assets/audio/voice_05.wav".to_string()),
|
||||
// let generate = voxcpm_generate.inference(
|
||||
// "老大爷我来啦,红红火火恍恍惚惚".to_string(),
|
||||
// Some("啥子小师叔,打狗还要看主人,你再要继续,我就是你的对手".to_string()),
|
||||
// Some("file://./assets/audio/voice_01.wav".to_string()),
|
||||
// // Some("一定被灰太狼给吃了,我已经为他准备好了花圈了".to_string()),
|
||||
// // Some("file://./assets/audio/voice_05.wav".to_string()),
|
||||
// 2,
|
||||
// 4096,
|
||||
// 10,
|
||||
// 2.0,
|
||||
// // false,
|
||||
// 6.0,
|
||||
// )?;
|
||||
|
||||
// 创建prompt_cache
|
||||
voxcpm_generate.build_prompt_cache(
|
||||
"啥子小师叔,打狗还要看主人,你再要继续,我,就是你的对手".to_string(),
|
||||
"file://./assets/audio/voice_01.wav".to_string(),
|
||||
)?;
|
||||
// 使用prompt_cache生成语音
|
||||
let generate = voxcpm_generate.generate_use_prompt_cache(
|
||||
"太阳当空照,花儿对我笑,小鸟说早早早".to_string(),
|
||||
2,
|
||||
4096,
|
||||
100,
|
||||
10,
|
||||
2.0,
|
||||
// false,
|
||||
false,
|
||||
6.0,
|
||||
)?;
|
||||
|
||||
// 创建prompt_cache
|
||||
// let _ = voxcpm_generate.build_prompt_cache(
|
||||
// "啥子小师叔,打狗还要看主人,你再要继续,我,就是你的对手".to_string(),
|
||||
// "file://./assets/audio/voice_01.wav".to_string(),
|
||||
// )?;
|
||||
// // 使用prompt_cache生成语音
|
||||
// let generate = voxcpm_generate.generate_use_prompt_cache(
|
||||
// "太阳当空照,花儿对我笑,小鸟说早早早".to_string(),
|
||||
// 2,
|
||||
// 100,
|
||||
// 10,
|
||||
// 2.0,
|
||||
// false,
|
||||
// 6.0,
|
||||
// )?;
|
||||
std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
|
||||
let i_duration = i_start.elapsed();
|
||||
println!("Time elapsed in generate is: {:?}", i_duration);
|
||||
@@ -118,3 +121,58 @@ fn voxcpm1_5_tokenizer() -> Result<()> {
|
||||
println!("ids: {:?}", ids);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn voxcpm_refact_generate() -> Result<()> {
|
||||
// RUST_BACKTRACE=1 cargo test -F cuda --test test_voxcpm1_5 voxcpm_refact_generate -r -- --nocapture
|
||||
let save_dir =
|
||||
aha::utils::get_default_save_dir().ok_or(anyhow::anyhow!("Failed to get save dir"))?;
|
||||
let model_path = format!("{}/OpenBMB/VoxCPM1.5/", save_dir);
|
||||
|
||||
let i_start = Instant::now();
|
||||
let mut voxcpm_generate = VoxCPMGenerateRefact::init(&model_path, None, None)?;
|
||||
let i_duration = i_start.elapsed();
|
||||
println!("Time elapsed in load model is: {:?}", i_duration);
|
||||
|
||||
// let i_start = Instant::now();
|
||||
// let generate = voxcpm_generate.generate_simple("太阳当空照,花儿对我笑,小鸟说早早早".to_string())?;
|
||||
// let generate = voxcpm_generate.inference(
|
||||
// "VoxCPM is an innovative end-to-end TTS model from ModelBest, designed to generate highly realistic speech.".to_string(),
|
||||
// Some("啥子小师叔,打狗还要看主人,你再要继续,我,就是你的对手".to_string()),
|
||||
// Some("file://./assets/audio/voice_01.wav".to_string()),
|
||||
// // Some("一定被灰太狼给吃了,我已经为他准备好了花圈了".to_string()),
|
||||
// // Some("file://./assets/audio/voice_05.wav".to_string()),
|
||||
// 2,
|
||||
// 100,
|
||||
// 10,
|
||||
// 2.0,
|
||||
// // false,
|
||||
// 6.0,
|
||||
// )?;
|
||||
|
||||
// 创建prompt_cache
|
||||
voxcpm_generate.build_prompt_cache(
|
||||
"啥子小师叔,打狗还要看主人,你再要继续,我,就是你的对手".to_string(),
|
||||
"file://./assets/audio/voice_01.wav".to_string(),
|
||||
)?;
|
||||
// 使用prompt_cache生成语音
|
||||
let i_start = Instant::now();
|
||||
let generate = voxcpm_generate.generate_use_prompt_cache(
|
||||
"太阳当空照,花儿对我笑,小鸟说早早早".to_string(),
|
||||
2,
|
||||
100,
|
||||
10,
|
||||
2.0,
|
||||
false,
|
||||
6.0,
|
||||
)?;
|
||||
std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
let i_duration = i_start.elapsed();
|
||||
println!("Time elapsed in generate is: {:?}", i_duration);
|
||||
save_wav(
|
||||
&generate,
|
||||
"voxcpm.wav",
|
||||
voxcpm_generate.sample_rate() as u32,
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user