1use serde::{Deserialize, Serialize};
12
13use crate::models;
14
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct FallbackPlayHtVoice {
17 #[serde(rename = "provider")]
19 pub provider: Provider,
20 #[serde(rename = "voiceId")]
21 pub voice_id: models::PlayHtVoiceVoiceId,
22 #[serde(rename = "speed", skip_serializing_if = "Option::is_none")]
24 pub speed: Option<f64>,
25 #[serde(rename = "temperature", skip_serializing_if = "Option::is_none")]
27 pub temperature: Option<f64>,
28 #[serde(rename = "emotion", skip_serializing_if = "Option::is_none")]
30 pub emotion: Option<Emotion>,
31 #[serde(rename = "voiceGuidance", skip_serializing_if = "Option::is_none")]
33 pub voice_guidance: Option<f64>,
34 #[serde(rename = "styleGuidance", skip_serializing_if = "Option::is_none")]
36 pub style_guidance: Option<f64>,
37 #[serde(rename = "textGuidance", skip_serializing_if = "Option::is_none")]
39 pub text_guidance: Option<f64>,
40 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
42 pub model: Option<Model>,
43 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
45 pub language: Option<Language>,
46 #[serde(rename = "chunkPlan", skip_serializing_if = "Option::is_none")]
48 pub chunk_plan: Option<models::ChunkPlan>,
49}
50
51impl FallbackPlayHtVoice {
52 pub fn new(provider: Provider, voice_id: models::PlayHtVoiceVoiceId) -> FallbackPlayHtVoice {
53 FallbackPlayHtVoice {
54 provider,
55 voice_id,
56 speed: None,
57 temperature: None,
58 emotion: None,
59 voice_guidance: None,
60 style_guidance: None,
61 text_guidance: None,
62 model: None,
63 language: None,
64 chunk_plan: None,
65 }
66 }
67}
68#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
70pub enum Provider {
71 #[serde(rename = "playht")]
72 Playht,
73}
74
75impl Default for Provider {
76 fn default() -> Provider {
77 Self::Playht
78 }
79}
80#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
82pub enum Emotion {
83 #[serde(rename = "female_happy")]
84 FemaleHappy,
85 #[serde(rename = "female_sad")]
86 FemaleSad,
87 #[serde(rename = "female_angry")]
88 FemaleAngry,
89 #[serde(rename = "female_fearful")]
90 FemaleFearful,
91 #[serde(rename = "female_disgust")]
92 FemaleDisgust,
93 #[serde(rename = "female_surprised")]
94 FemaleSurprised,
95 #[serde(rename = "male_happy")]
96 MaleHappy,
97 #[serde(rename = "male_sad")]
98 MaleSad,
99 #[serde(rename = "male_angry")]
100 MaleAngry,
101 #[serde(rename = "male_fearful")]
102 MaleFearful,
103 #[serde(rename = "male_disgust")]
104 MaleDisgust,
105 #[serde(rename = "male_surprised")]
106 MaleSurprised,
107}
108
109impl Default for Emotion {
110 fn default() -> Emotion {
111 Self::FemaleHappy
112 }
113}
114#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
116pub enum Model {
117 #[serde(rename = "PlayHT2.0")]
118 PlayHt2Period0,
119 #[serde(rename = "PlayHT2.0-turbo")]
120 PlayHt2Period0Turbo,
121 #[serde(rename = "Play3.0-mini")]
122 Play3Period0Mini,
123 #[serde(rename = "PlayDialog")]
124 PlayDialog,
125}
126
127impl Default for Model {
128 fn default() -> Model {
129 Self::PlayHt2Period0
130 }
131}
132#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
134pub enum Language {
135 #[serde(rename = "afrikaans")]
136 Afrikaans,
137 #[serde(rename = "albanian")]
138 Albanian,
139 #[serde(rename = "amharic")]
140 Amharic,
141 #[serde(rename = "arabic")]
142 Arabic,
143 #[serde(rename = "bengali")]
144 Bengali,
145 #[serde(rename = "bulgarian")]
146 Bulgarian,
147 #[serde(rename = "catalan")]
148 Catalan,
149 #[serde(rename = "croatian")]
150 Croatian,
151 #[serde(rename = "czech")]
152 Czech,
153 #[serde(rename = "danish")]
154 Danish,
155 #[serde(rename = "dutch")]
156 Dutch,
157 #[serde(rename = "english")]
158 English,
159 #[serde(rename = "french")]
160 French,
161 #[serde(rename = "galician")]
162 Galician,
163 #[serde(rename = "german")]
164 German,
165 #[serde(rename = "greek")]
166 Greek,
167 #[serde(rename = "hebrew")]
168 Hebrew,
169 #[serde(rename = "hindi")]
170 Hindi,
171 #[serde(rename = "hungarian")]
172 Hungarian,
173 #[serde(rename = "indonesian")]
174 Indonesian,
175 #[serde(rename = "italian")]
176 Italian,
177 #[serde(rename = "japanese")]
178 Japanese,
179 #[serde(rename = "korean")]
180 Korean,
181 #[serde(rename = "malay")]
182 Malay,
183 #[serde(rename = "mandarin")]
184 Mandarin,
185 #[serde(rename = "polish")]
186 Polish,
187 #[serde(rename = "portuguese")]
188 Portuguese,
189 #[serde(rename = "russian")]
190 Russian,
191 #[serde(rename = "serbian")]
192 Serbian,
193 #[serde(rename = "spanish")]
194 Spanish,
195 #[serde(rename = "swedish")]
196 Swedish,
197 #[serde(rename = "tagalog")]
198 Tagalog,
199 #[serde(rename = "thai")]
200 Thai,
201 #[serde(rename = "turkish")]
202 Turkish,
203 #[serde(rename = "ukrainian")]
204 Ukrainian,
205 #[serde(rename = "urdu")]
206 Urdu,
207 #[serde(rename = "xhosa")]
208 Xhosa,
209}
210
211impl Default for Language {
212 fn default() -> Language {
213 Self::Afrikaans
214 }
215}