#[derive(Debug, Clone)]
pub struct SynthesizeRequest<'a> {
pub text: &'a str,
pub voice: Option<&'a str>,
pub instruction: Option<&'a str>,
pub language: Option<&'a str>,
pub speed: Option<f32>,
}
impl<'a> SynthesizeRequest<'a> {
pub fn new(text: &'a str) -> Self {
Self {
text,
voice: None,
instruction: None,
language: None,
speed: None,
}
}
pub fn with_voice(mut self, voice: &'a str) -> Self {
self.voice = Some(voice);
self
}
pub fn with_instruction(mut self, instruction: &'a str) -> Self {
self.instruction = Some(instruction);
self
}
pub fn with_language(mut self, language: &'a str) -> Self {
self.language = Some(language);
self
}
pub fn with_speed(mut self, speed: f32) -> Self {
self.speed = Some(speed);
self
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct VoiceInfo {
pub id: String,
pub name: String,
pub languages: Vec<String>,
pub gender: Option<Gender>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Gender {
Male,
Female,
Neutral,
}