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