1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct GoogleTranscriber {
16 #[serde(rename = "provider")]
18 pub provider: ProviderTrue,
19 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
21 pub model: Option<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 GoogleTranscriber {
31 pub fn new(provider: ProviderTrue) -> GoogleTranscriber {
32 GoogleTranscriber {
33 provider,
34 model: None,
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 = "google")]
44 Google,
45}
46
47impl Default for ProviderTrue {
48 fn default() -> ProviderTrue {
49 Self::Google
50 }
51}
52#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
54pub enum ModelTrue {
55 #[serde(rename = "gemini-2.5-pro-preview-05-06")]
56 Gemini2Period5ProPreview0506,
57 #[serde(rename = "gemini-2.5-flash-preview-05-20")]
58 Gemini2Period5FlashPreview0520,
59 #[serde(rename = "gemini-2.5-flash-preview-04-17")]
60 Gemini2Period5FlashPreview0417,
61 #[serde(rename = "gemini-2.0-flash-thinking-exp")]
62 Gemini2Period0FlashThinkingExp,
63 #[serde(rename = "gemini-2.0-pro-exp-02-05")]
64 Gemini2Period0ProExp0205,
65 #[serde(rename = "gemini-2.0-flash")]
66 Gemini2Period0Flash,
67 #[serde(rename = "gemini-2.0-flash-lite")]
68 Gemini2Period0FlashLite,
69 #[serde(rename = "gemini-2.0-flash-lite-preview-02-05")]
70 Gemini2Period0FlashLitePreview0205,
71 #[serde(rename = "gemini-2.0-flash-exp")]
72 Gemini2Period0FlashExp,
73 #[serde(rename = "gemini-2.0-flash-realtime-exp")]
74 Gemini2Period0FlashRealtimeExp,
75 #[serde(rename = "gemini-1.5-flash")]
76 Gemini1Period5Flash,
77 #[serde(rename = "gemini-1.5-flash-002")]
78 Gemini1Period5Flash002,
79 #[serde(rename = "gemini-1.5-pro")]
80 Gemini1Period5Pro,
81 #[serde(rename = "gemini-1.5-pro-002")]
82 Gemini1Period5Pro002,
83 #[serde(rename = "gemini-1.0-pro")]
84 Gemini1Period0Pro,
85}
86
87impl Default for ModelTrue {
88 fn default() -> ModelTrue {
89 Self::Gemini2Period5ProPreview0506
90 }
91}
92#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
94pub enum LanguageTrue {
95 #[serde(rename = "Multilingual")]
96 Multilingual,
97 #[serde(rename = "Arabic")]
98 Arabic,
99 #[serde(rename = "Bengali")]
100 Bengali,
101 #[serde(rename = "Bulgarian")]
102 Bulgarian,
103 #[serde(rename = "Chinese")]
104 Chinese,
105 #[serde(rename = "Croatian")]
106 Croatian,
107 #[serde(rename = "Czech")]
108 Czech,
109 #[serde(rename = "Danish")]
110 Danish,
111 #[serde(rename = "Dutch")]
112 Dutch,
113 #[serde(rename = "English")]
114 English,
115 #[serde(rename = "Estonian")]
116 Estonian,
117 #[serde(rename = "Finnish")]
118 Finnish,
119 #[serde(rename = "French")]
120 French,
121 #[serde(rename = "German")]
122 German,
123 #[serde(rename = "Greek")]
124 Greek,
125 #[serde(rename = "Hebrew")]
126 Hebrew,
127 #[serde(rename = "Hindi")]
128 Hindi,
129 #[serde(rename = "Hungarian")]
130 Hungarian,
131 #[serde(rename = "Indonesian")]
132 Indonesian,
133 #[serde(rename = "Italian")]
134 Italian,
135 #[serde(rename = "Japanese")]
136 Japanese,
137 #[serde(rename = "Korean")]
138 Korean,
139 #[serde(rename = "Latvian")]
140 Latvian,
141 #[serde(rename = "Lithuanian")]
142 Lithuanian,
143 #[serde(rename = "Norwegian")]
144 Norwegian,
145 #[serde(rename = "Polish")]
146 Polish,
147 #[serde(rename = "Portuguese")]
148 Portuguese,
149 #[serde(rename = "Romanian")]
150 Romanian,
151 #[serde(rename = "Russian")]
152 Russian,
153 #[serde(rename = "Serbian")]
154 Serbian,
155 #[serde(rename = "Slovak")]
156 Slovak,
157 #[serde(rename = "Slovenian")]
158 Slovenian,
159 #[serde(rename = "Spanish")]
160 Spanish,
161 #[serde(rename = "Swahili")]
162 Swahili,
163 #[serde(rename = "Swedish")]
164 Swedish,
165 #[serde(rename = "Thai")]
166 Thai,
167 #[serde(rename = "Turkish")]
168 Turkish,
169 #[serde(rename = "Ukrainian")]
170 Ukrainian,
171 #[serde(rename = "Vietnamese")]
172 Vietnamese,
173}
174
175impl Default for LanguageTrue {
176 fn default() -> LanguageTrue {
177 Self::Multilingual
178 }
179}