#[derive(Debug, Clone)]
pub enum TextFiltering {
None,
Standard,
HTML,
}
impl Default for TextFiltering {
fn default() -> Self {
TextFiltering::Standard
}
}
impl Into<&str> for TextFiltering {
fn into(self) -> &'static str {
match self {
TextFiltering::None => "none",
TextFiltering::Standard => "standard",
TextFiltering::HTML => "html",
}
}
}
#[derive(Debug, Clone)]
pub enum TextNotInside {
Character,
Narrator,
}
impl Default for TextNotInside {
fn default() -> Self {
TextNotInside::Character
}
}
impl Into<&str> for TextNotInside {
fn into(self) -> &'static str {
match self {
TextNotInside::Character => "character",
TextNotInside::Narrator => "narrator",
}
}
}
#[derive(Debug, Clone)]
pub enum Language {
Arabic,
ChineseSimplified,
Czech,
Dutch,
English,
French,
German,
Hindi,
Hungarian,
Italian,
Japanese,
Korean,
Polish,
Portuguese,
Russian,
Spanish,
Turkish,
}
impl Default for Language {
fn default() -> Self {
Language::English
}
}
impl Into<&str> for Language {
fn into(self) -> &'static str {
match self {
Language::Arabic => "ar",
Language::ChineseSimplified => "zh-cn",
Language::Czech => "cs",
Language::Dutch => "nl",
Language::English => "en",
Language::French => "fr",
Language::German => "de",
Language::Hindi => "hi",
Language::Hungarian => "hu",
Language::Italian => "it",
Language::Japanese => "ja",
Language::Korean => "ko",
Language::Polish => "pl",
Language::Portuguese => "pt",
Language::Russian => "ru",
Language::Spanish => "es",
Language::Turkish => "tr",
}
}
}
impl From<&str> for Language {
fn from(s: &str) -> Self {
match s {
"ar" => Language::Arabic,
"zh-cn" => Language::ChineseSimplified,
"cs" => Language::Czech,
"nl" => Language::Dutch,
"en" => Language::English,
"fr" => Language::French,
"de" => Language::German,
"hi" => Language::Hindi,
"hu" => Language::Hungarian,
"it" => Language::Italian,
"ja" => Language::Japanese,
"ko" => Language::Korean,
"pl" => Language::Polish,
"pt" => Language::Portuguese,
"ru" => Language::Russian,
"es" => Language::Spanish,
"tr" => Language::Turkish,
_ => Language::English,
}
}
}
impl From<String> for Language {
fn from(s: String) -> Self {
Language::from(s.as_str())
}
}
#[derive(Debug, Clone)]
pub struct TTSModelOptions {
pub text_input: String,
pub text_filtering: TextFiltering,
pub character_voice_gen: String,
pub narrator_enabled: bool,
pub narrator_voice_gen: String,
pub text_not_inside: TextNotInside,
pub language: Language,
pub output_file_name: String,
pub output_file_timestamp: bool,
pub autoplay: bool,
pub autoplay_volume: f32,
}
impl Default for TTSModelOptions {
fn default() -> Self {
TTSModelOptions {
text_input: String::new(),
text_filtering: TextFiltering::default(),
character_voice_gen: String::from("male_01.wav"),
narrator_enabled: false,
narrator_voice_gen: String::from("male_01.wav"),
text_not_inside: TextNotInside::default(),
language: Language::default(),
output_file_name: String::from("audio"),
output_file_timestamp: true,
autoplay: false,
autoplay_volume: 0.8,
}
}
}