1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FallbackVapiVoice {
16 #[serde(rename = "provider")]
18 pub provider: Provider,
19 #[serde(rename = "voiceId")]
21 pub voice_id: VoiceId,
22 #[serde(rename = "speed", skip_serializing_if = "Option::is_none")]
24 pub speed: Option<f64>,
25 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
27 pub language: Option<Language>,
28 #[serde(rename = "chunkPlan", skip_serializing_if = "Option::is_none")]
30 pub chunk_plan: Option<models::ChunkPlan>,
31}
32
33impl FallbackVapiVoice {
34 pub fn new(provider: Provider, voice_id: VoiceId) -> FallbackVapiVoice {
35 FallbackVapiVoice {
36 provider,
37 voice_id,
38 speed: None,
39 language: None,
40 chunk_plan: None,
41 }
42 }
43}
44#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
46pub enum Provider {
47 #[serde(rename = "vapi")]
48 Vapi,
49}
50
51impl Default for Provider {
52 fn default() -> Provider {
53 Self::Vapi
54 }
55}
56#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
58pub enum VoiceId {
59 #[serde(rename = "Elliot")]
60 Elliot,
61 #[serde(rename = "Rohan")]
62 Rohan,
63 #[serde(rename = "Lily")]
64 Lily,
65 #[serde(rename = "Savannah")]
66 Savannah,
67 #[serde(rename = "Hana")]
68 Hana,
69 #[serde(rename = "Neha")]
70 Neha,
71 #[serde(rename = "Cole")]
72 Cole,
73 #[serde(rename = "Harry")]
74 Harry,
75 #[serde(rename = "Paige")]
76 Paige,
77 #[serde(rename = "Spencer")]
78 Spencer,
79}
80
81impl Default for VoiceId {
82 fn default() -> VoiceId {
83 Self::Elliot
84 }
85}
86#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
88pub enum Language {
89 #[serde(rename = "en-US")]
90 EnUs,
91 #[serde(rename = "en-GB")]
92 EnGb,
93 #[serde(rename = "en-AU")]
94 EnAu,
95 #[serde(rename = "en-CA")]
96 EnCa,
97 #[serde(rename = "ja")]
98 Ja,
99 #[serde(rename = "zh")]
100 Zh,
101 #[serde(rename = "de")]
102 De,
103 #[serde(rename = "hi")]
104 Hi,
105 #[serde(rename = "fr-FR")]
106 FrFr,
107 #[serde(rename = "fr-CA")]
108 FrCa,
109 #[serde(rename = "ko")]
110 Ko,
111 #[serde(rename = "pt-BR")]
112 PtBr,
113 #[serde(rename = "pt-PT")]
114 PtPt,
115 #[serde(rename = "it")]
116 It,
117 #[serde(rename = "es-ES")]
118 EsEs,
119 #[serde(rename = "es-MX")]
120 EsMx,
121 #[serde(rename = "id")]
122 Id,
123 #[serde(rename = "nl")]
124 Nl,
125 #[serde(rename = "tr")]
126 Tr,
127 #[serde(rename = "fil")]
128 Fil,
129 #[serde(rename = "pl")]
130 Pl,
131 #[serde(rename = "sv")]
132 Sv,
133 #[serde(rename = "bg")]
134 Bg,
135 #[serde(rename = "ro")]
136 Ro,
137 #[serde(rename = "ar-SA")]
138 ArSa,
139 #[serde(rename = "ar-AE")]
140 ArAe,
141 #[serde(rename = "cs")]
142 Cs,
143 #[serde(rename = "el")]
144 El,
145 #[serde(rename = "fi")]
146 Fi,
147 #[serde(rename = "hr")]
148 Hr,
149 #[serde(rename = "ms")]
150 Ms,
151 #[serde(rename = "sk")]
152 Sk,
153 #[serde(rename = "da")]
154 Da,
155 #[serde(rename = "ta")]
156 Ta,
157 #[serde(rename = "uk")]
158 Uk,
159 #[serde(rename = "ru")]
160 Ru,
161 #[serde(rename = "hu")]
162 Hu,
163 #[serde(rename = "no")]
164 No,
165 #[serde(rename = "vi")]
166 Vi,
167}
168
169impl Default for Language {
170 fn default() -> Language {
171 Self::EnUs
172 }
173}
174