1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct DeepgramTranscriber {
16 #[serde(rename = "provider")]
18 pub provider: Provider,
19 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
20 pub model: Option<Box<models::DeepgramTranscriberModel>>,
21 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
23 pub language: Option<Language>,
24 #[serde(rename = "smartFormat", skip_serializing_if = "Option::is_none")]
26 pub smart_format: Option<bool>,
27 #[serde(rename = "codeSwitchingEnabled", skip_serializing_if = "Option::is_none")]
29 pub code_switching_enabled: Option<bool>,
30 #[serde(rename = "mipOptOut", skip_serializing_if = "Option::is_none")]
32 pub mip_opt_out: Option<bool>,
33 #[serde(rename = "numerals", skip_serializing_if = "Option::is_none")]
35 pub numerals: Option<bool>,
36 #[serde(rename = "keywords", skip_serializing_if = "Option::is_none")]
38 pub keywords: Option<Vec<String>>,
39 #[serde(rename = "keyterm", skip_serializing_if = "Option::is_none")]
41 pub keyterm: Option<Vec<String>>,
42 #[serde(rename = "endpointing", skip_serializing_if = "Option::is_none")]
44 pub endpointing: Option<f64>,
45}
46
47impl DeepgramTranscriber {
48 pub fn new(provider: Provider) -> DeepgramTranscriber {
49 DeepgramTranscriber {
50 provider,
51 model: None,
52 language: None,
53 smart_format: None,
54 code_switching_enabled: None,
55 mip_opt_out: None,
56 numerals: None,
57 keywords: None,
58 keyterm: None,
59 endpointing: None,
60 }
61 }
62}
63#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
65pub enum Provider {
66 #[serde(rename = "deepgram")]
67 Deepgram,
68}
69
70impl Default for Provider {
71 fn default() -> Provider {
72 Self::Deepgram
73 }
74}
75#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
77pub enum Language {
78 #[serde(rename = "bg")]
79 Bg,
80 #[serde(rename = "ca")]
81 Ca,
82 #[serde(rename = "cs")]
83 Cs,
84 #[serde(rename = "da")]
85 Da,
86 #[serde(rename = "da-DK")]
87 DaDk,
88 #[serde(rename = "de")]
89 De,
90 #[serde(rename = "de-CH")]
91 DeCh,
92 #[serde(rename = "el")]
93 El,
94 #[serde(rename = "en")]
95 En,
96 #[serde(rename = "en-AU")]
97 EnAu,
98 #[serde(rename = "en-GB")]
99 EnGb,
100 #[serde(rename = "en-IN")]
101 EnIn,
102 #[serde(rename = "en-NZ")]
103 EnNz,
104 #[serde(rename = "en-US")]
105 EnUs,
106 #[serde(rename = "es")]
107 Es,
108 #[serde(rename = "es-419")]
109 Es419,
110 #[serde(rename = "es-LATAM")]
111 EsLatam,
112 #[serde(rename = "et")]
113 Et,
114 #[serde(rename = "fi")]
115 Fi,
116 #[serde(rename = "fr")]
117 Fr,
118 #[serde(rename = "fr-CA")]
119 FrCa,
120 #[serde(rename = "hi")]
121 Hi,
122 #[serde(rename = "hi-Latn")]
123 HiLatn,
124 #[serde(rename = "hu")]
125 Hu,
126 #[serde(rename = "id")]
127 Id,
128 #[serde(rename = "it")]
129 It,
130 #[serde(rename = "ja")]
131 Ja,
132 #[serde(rename = "ko")]
133 Ko,
134 #[serde(rename = "ko-KR")]
135 KoKr,
136 #[serde(rename = "lt")]
137 Lt,
138 #[serde(rename = "lv")]
139 Lv,
140 #[serde(rename = "ms")]
141 Ms,
142 #[serde(rename = "multi")]
143 Multi,
144 #[serde(rename = "nl")]
145 Nl,
146 #[serde(rename = "nl-BE")]
147 NlBe,
148 #[serde(rename = "no")]
149 No,
150 #[serde(rename = "pl")]
151 Pl,
152 #[serde(rename = "pt")]
153 Pt,
154 #[serde(rename = "pt-BR")]
155 PtBr,
156 #[serde(rename = "ro")]
157 Ro,
158 #[serde(rename = "ru")]
159 Ru,
160 #[serde(rename = "sk")]
161 Sk,
162 #[serde(rename = "sv")]
163 Sv,
164 #[serde(rename = "sv-SE")]
165 SvSe,
166 #[serde(rename = "ta")]
167 Ta,
168 #[serde(rename = "taq")]
169 Taq,
170 #[serde(rename = "th")]
171 Th,
172 #[serde(rename = "th-TH")]
173 ThTh,
174 #[serde(rename = "tr")]
175 Tr,
176 #[serde(rename = "uk")]
177 Uk,
178 #[serde(rename = "vi")]
179 Vi,
180 #[serde(rename = "zh")]
181 Zh,
182 #[serde(rename = "zh-CN")]
183 ZhCn,
184 #[serde(rename = "zh-HK")]
185 ZhHk,
186 #[serde(rename = "zh-Hans")]
187 ZhHans,
188 #[serde(rename = "zh-Hant")]
189 ZhHant,
190 #[serde(rename = "zh-TW")]
191 ZhTw,
192}
193
194impl Default for Language {
195 fn default() -> Language {
196 Self::Bg
197 }
198}
199