Files
aha/src/models/index_tts2/generate.rs
T
2026-01-30 22:04:23 +08:00

30 lines
1.1 KiB
Rust

use aha_openai_dive::v1::resources::chat::ChatCompletionParameters;
use anyhow::Result;
use candle_core::{DType, Device};
use crate::{
models::index_tts2::{config::IndexTTS2Config, processor::IndexTTS2Processor},
utils::{get_default_save_dir, get_device, get_dtype},
};
pub struct IndexTTS2Generate {
processor: IndexTTS2Processor,
config: IndexTTS2Config,
}
impl IndexTTS2Generate {
pub fn init(path: &str, device: Option<&Device>, dtype: Option<DType>) -> Result<Self> {
let config_path = path.to_string() + "/config.yaml";
let save_dir = get_default_save_dir().ok_or(anyhow::anyhow!("Failed to get save dir"))?;
let config: IndexTTS2Config = serde_yaml::from_slice(&std::fs::read(config_path)?)?;
let device = get_device(device);
let dtype = get_dtype(dtype, "bf16");
let processor = IndexTTS2Processor::new(path, &save_dir, &config, &device, dtype)?;
Ok(Self { config, processor })
}
pub fn generate(&mut self, mes: ChatCompletionParameters) -> Result<()> {
let _ = self.processor.process_info(&mes)?;
Ok(())
}
}