1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct DeepgramVoice {
16 #[serde(rename = "provider")]
18 pub provider: Provider,
19 #[serde(rename = "voiceId")]
21 pub voice_id: VoiceId,
22 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
24 pub model: Option<Model>,
25 #[serde(rename = "mipOptOut", skip_serializing_if = "Option::is_none")]
27 pub mip_opt_out: Option<bool>,
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 DeepgramVoice {
37 pub fn new(provider: Provider, voice_id: VoiceId) -> DeepgramVoice {
38 DeepgramVoice {
39 provider,
40 voice_id,
41 model: None,
42 mip_opt_out: 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 = "deepgram")]
52 Deepgram,
53}
54
55impl Default for Provider {
56 fn default() -> Provider {
57 Self::Deepgram
58 }
59}
60#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
62pub enum VoiceId {
63 #[serde(rename = "asteria")]
64 Asteria,
65 #[serde(rename = "luna")]
66 Luna,
67 #[serde(rename = "stella")]
68 Stella,
69 #[serde(rename = "athena")]
70 Athena,
71 #[serde(rename = "hera")]
72 Hera,
73 #[serde(rename = "orion")]
74 Orion,
75 #[serde(rename = "arcas")]
76 Arcas,
77 #[serde(rename = "perseus")]
78 Perseus,
79 #[serde(rename = "angus")]
80 Angus,
81 #[serde(rename = "orpheus")]
82 Orpheus,
83 #[serde(rename = "helios")]
84 Helios,
85 #[serde(rename = "zeus")]
86 Zeus,
87 #[serde(rename = "thalia")]
88 Thalia,
89 #[serde(rename = "andromeda")]
90 Andromeda,
91 #[serde(rename = "helena")]
92 Helena,
93 #[serde(rename = "apollo")]
94 Apollo,
95 #[serde(rename = "arcas-2")]
96 Arcas2,
97 #[serde(rename = "aries")]
98 Aries,
99 #[serde(rename = "amalthea")]
100 Amalthea,
101 #[serde(rename = "andromeda-2")]
102 Andromeda2,
103 #[serde(rename = "apollo-2")]
104 Apollo2,
105 #[serde(rename = "arcas-3")]
106 Arcas3,
107 #[serde(rename = "aries-2")]
108 Aries2,
109 #[serde(rename = "asteria-2")]
110 Asteria2,
111 #[serde(rename = "athena-2")]
112 Athena2,
113 #[serde(rename = "atlas")]
114 Atlas,
115 #[serde(rename = "aurora")]
116 Aurora,
117 #[serde(rename = "callista")]
118 Callista,
119 #[serde(rename = "cora")]
120 Cora,
121 #[serde(rename = "cordelia")]
122 Cordelia,
123 #[serde(rename = "delia")]
124 Delia,
125 #[serde(rename = "draco")]
126 Draco,
127 #[serde(rename = "electra")]
128 Electra,
129 #[serde(rename = "harmonia")]
130 Harmonia,
131 #[serde(rename = "helena-2")]
132 Helena2,
133 #[serde(rename = "hera-2")]
134 Hera2,
135 #[serde(rename = "hermes")]
136 Hermes,
137 #[serde(rename = "hyperion")]
138 Hyperion,
139 #[serde(rename = "iris")]
140 Iris,
141 #[serde(rename = "janus")]
142 Janus,
143 #[serde(rename = "juno")]
144 Juno,
145 #[serde(rename = "jupiter")]
146 Jupiter,
147 #[serde(rename = "luna-2")]
148 Luna2,
149 #[serde(rename = "mars")]
150 Mars,
151 #[serde(rename = "minerva")]
152 Minerva,
153 #[serde(rename = "neptune")]
154 Neptune,
155 #[serde(rename = "odysseus")]
156 Odysseus,
157 #[serde(rename = "ophelia")]
158 Ophelia,
159 #[serde(rename = "orion-2")]
160 Orion2,
161 #[serde(rename = "orpheus-2")]
162 Orpheus2,
163 #[serde(rename = "pandora")]
164 Pandora,
165 #[serde(rename = "phoebe")]
166 Phoebe,
167 #[serde(rename = "pluto")]
168 Pluto,
169 #[serde(rename = "saturn")]
170 Saturn,
171 #[serde(rename = "selene")]
172 Selene,
173 #[serde(rename = "thalia-2")]
174 Thalia2,
175 #[serde(rename = "theia")]
176 Theia,
177 #[serde(rename = "vesta")]
178 Vesta,
179 #[serde(rename = "zeus-2")]
180 Zeus2,
181}
182
183impl Default for VoiceId {
184 fn default() -> VoiceId {
185 Self::Asteria
186 }
187}
188#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
190pub enum Model {
191 #[serde(rename = "aura")]
192 Aura,
193 #[serde(rename = "aura-2")]
194 Aura2,
195}
196
197impl Default for Model {
198 fn default() -> Model {
199 Self::Aura
200 }
201}
202