1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct OpenAiTranscriber {
16 #[serde(rename = "provider")]
18 pub provider: ProviderTrue,
19 #[serde(rename = "model")]
21 pub model: ModelTrue,
22 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
24 pub language: Option<LanguageTrue>,
25 #[serde(rename = "fallbackPlan", skip_serializing_if = "Option::is_none")]
27 pub fallback_plan: Option<models::FallbackTranscriberPlan>,
28}
29
30impl OpenAiTranscriber {
31 pub fn new(provider: ProviderTrue, model: ModelTrue) -> OpenAiTranscriber {
32 OpenAiTranscriber {
33 provider,
34 model,
35 language: None,
36 fallback_plan: None,
37 }
38 }
39}
40#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
42pub enum ProviderTrue {
43 #[serde(rename = "openai")]
44 Openai,
45}
46
47impl Default for ProviderTrue {
48 fn default() -> ProviderTrue {
49 Self::Openai
50 }
51}
52#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
54pub enum ModelTrue {
55 #[serde(rename = "gpt-4o-transcribe")]
56 Gpt4oTranscribe,
57 #[serde(rename = "gpt-4o-mini-transcribe")]
58 Gpt4oMiniTranscribe,
59}
60
61impl Default for ModelTrue {
62 fn default() -> ModelTrue {
63 Self::Gpt4oTranscribe
64 }
65}
66#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
68pub enum LanguageTrue {
69 #[serde(rename = "af")]
70 Af,
71 #[serde(rename = "ar")]
72 Ar,
73 #[serde(rename = "hy")]
74 Hy,
75 #[serde(rename = "az")]
76 Az,
77 #[serde(rename = "be")]
78 Be,
79 #[serde(rename = "bs")]
80 Bs,
81 #[serde(rename = "bg")]
82 Bg,
83 #[serde(rename = "ca")]
84 Ca,
85 #[serde(rename = "zh")]
86 Zh,
87 #[serde(rename = "hr")]
88 Hr,
89 #[serde(rename = "cs")]
90 Cs,
91 #[serde(rename = "da")]
92 Da,
93 #[serde(rename = "nl")]
94 Nl,
95 #[serde(rename = "en")]
96 En,
97 #[serde(rename = "et")]
98 Et,
99 #[serde(rename = "fi")]
100 Fi,
101 #[serde(rename = "fr")]
102 Fr,
103 #[serde(rename = "gl")]
104 Gl,
105 #[serde(rename = "de")]
106 De,
107 #[serde(rename = "el")]
108 El,
109 #[serde(rename = "he")]
110 He,
111 #[serde(rename = "hi")]
112 Hi,
113 #[serde(rename = "hu")]
114 Hu,
115 #[serde(rename = "is")]
116 Is,
117 #[serde(rename = "id")]
118 Id,
119 #[serde(rename = "it")]
120 It,
121 #[serde(rename = "ja")]
122 Ja,
123 #[serde(rename = "kn")]
124 Kn,
125 #[serde(rename = "kk")]
126 Kk,
127 #[serde(rename = "ko")]
128 Ko,
129 #[serde(rename = "lv")]
130 Lv,
131 #[serde(rename = "lt")]
132 Lt,
133 #[serde(rename = "mk")]
134 Mk,
135 #[serde(rename = "ms")]
136 Ms,
137 #[serde(rename = "mr")]
138 Mr,
139 #[serde(rename = "mi")]
140 Mi,
141 #[serde(rename = "ne")]
142 Ne,
143 #[serde(rename = "no")]
144 No,
145 #[serde(rename = "fa")]
146 Fa,
147 #[serde(rename = "pl")]
148 Pl,
149 #[serde(rename = "pt")]
150 Pt,
151 #[serde(rename = "ro")]
152 Ro,
153 #[serde(rename = "ru")]
154 Ru,
155 #[serde(rename = "sr")]
156 Sr,
157 #[serde(rename = "sk")]
158 Sk,
159 #[serde(rename = "sl")]
160 Sl,
161 #[serde(rename = "es")]
162 Es,
163 #[serde(rename = "sw")]
164 Sw,
165 #[serde(rename = "sv")]
166 Sv,
167 #[serde(rename = "tl")]
168 Tl,
169 #[serde(rename = "ta")]
170 Ta,
171 #[serde(rename = "th")]
172 Th,
173 #[serde(rename = "tr")]
174 Tr,
175 #[serde(rename = "uk")]
176 Uk,
177 #[serde(rename = "ur")]
178 Ur,
179 #[serde(rename = "vi")]
180 Vi,
181 #[serde(rename = "cy")]
182 Cy,
183}
184
185impl Default for LanguageTrue {
186 fn default() -> LanguageTrue {
187 Self::Af
188 }
189}