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