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