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