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