1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
17#[serde(rename_all = "kebab-case")]
18pub enum DeepgramTranscriberModel {
19 #[serde(rename = "nova-3")]
21 Nova3,
22 #[serde(rename = "nova-3-general")]
23 Nova3General,
24 #[serde(rename = "nova-3-medical")]
25 Nova3Medical,
26
27 #[serde(rename = "nova-2")]
29 Nova2,
30 #[serde(rename = "nova-2-general")]
31 Nova2General,
32 #[serde(rename = "nova-2-meeting")]
33 Nova2Meeting,
34 #[serde(rename = "nova-2-phonecall")]
35 Nova2Phonecall,
36 #[serde(rename = "nova-2-finance")]
37 Nova2Finance,
38 #[serde(rename = "nova-2-conversationalai")]
39 Nova2Conversationalai,
40 #[serde(rename = "nova-2-voicemail")]
41 Nova2Voicemail,
42 #[serde(rename = "nova-2-video")]
43 Nova2Video,
44 #[serde(rename = "nova-2-medical")]
45 Nova2Medical,
46 #[serde(rename = "nova-2-drivethru")]
47 Nova2Drivethru,
48 #[serde(rename = "nova-2-automotive")]
49 Nova2Automotive,
50 #[serde(rename = "nova-2-atc")]
51 Nova2Atc,
52
53 #[serde(rename = "nova")]
55 Nova,
56 #[serde(rename = "nova-general")]
57 NovaGeneral,
58 #[serde(rename = "nova-phonecall")]
59 NovaPhonecall,
60 #[serde(rename = "nova-medical")]
61 NovaMedical,
62
63 #[serde(rename = "enhanced")]
65 Enhanced,
66 #[serde(rename = "enhanced-general")]
67 EnhancedGeneral,
68 #[serde(rename = "enhanced-meeting")]
69 EnhancedMeeting,
70 #[serde(rename = "enhanced-phonecall")]
71 EnhancedPhonecall,
72 #[serde(rename = "enhanced-finance")]
73 EnhancedFinance,
74
75 #[serde(rename = "base")]
77 Base,
78 #[serde(rename = "base-general")]
79 BaseGeneral,
80 #[serde(rename = "base-meeting")]
81 BaseMeeting,
82 #[serde(rename = "base-phonecall")]
83 BasePhonecall,
84 #[serde(rename = "base-finance")]
85 BaseFinance,
86 #[serde(rename = "base-conversationalai")]
87 BaseConversationalai,
88 #[serde(rename = "base-voicemail")]
89 BaseVoicemail,
90 #[serde(rename = "base-video")]
91 BaseVideo,
92
93 #[serde(rename = "whisper")]
95 Whisper,
96 #[serde(rename = "whisper-tiny")]
97 WhisperTiny,
98 #[serde(rename = "whisper-base")]
99 WhisperBase,
100 #[serde(rename = "whisper-small")]
101 WhisperSmall,
102 #[serde(rename = "whisper-medium")]
103 WhisperMedium,
104 #[serde(rename = "whisper-large")]
105 WhisperLarge,
106
107 #[serde(untagged)]
109 Custom(String),
110}
111
112impl Default for DeepgramTranscriberModel {
113 fn default() -> Self {
114 Self::Nova2
116 }
117}
118
119impl DeepgramTranscriberModel {
120 pub fn as_str(&self) -> &str {
122 match self {
123 Self::Nova3 => "nova-3",
124 Self::Nova3General => "nova-3-general",
125 Self::Nova3Medical => "nova-3-medical",
126 Self::Nova2 => "nova-2",
127 Self::Nova2General => "nova-2-general",
128 Self::Nova2Meeting => "nova-2-meeting",
129 Self::Nova2Phonecall => "nova-2-phonecall",
130 Self::Nova2Finance => "nova-2-finance",
131 Self::Nova2Conversationalai => "nova-2-conversationalai",
132 Self::Nova2Voicemail => "nova-2-voicemail",
133 Self::Nova2Video => "nova-2-video",
134 Self::Nova2Medical => "nova-2-medical",
135 Self::Nova2Drivethru => "nova-2-drivethru",
136 Self::Nova2Automotive => "nova-2-automotive",
137 Self::Nova2Atc => "nova-2-atc",
138 Self::Nova => "nova",
139 Self::NovaGeneral => "nova-general",
140 Self::NovaPhonecall => "nova-phonecall",
141 Self::NovaMedical => "nova-medical",
142 Self::Enhanced => "enhanced",
143 Self::EnhancedGeneral => "enhanced-general",
144 Self::EnhancedMeeting => "enhanced-meeting",
145 Self::EnhancedPhonecall => "enhanced-phonecall",
146 Self::EnhancedFinance => "enhanced-finance",
147 Self::Base => "base",
148 Self::BaseGeneral => "base-general",
149 Self::BaseMeeting => "base-meeting",
150 Self::BasePhonecall => "base-phonecall",
151 Self::BaseFinance => "base-finance",
152 Self::BaseConversationalai => "base-conversationalai",
153 Self::BaseVoicemail => "base-voicemail",
154 Self::BaseVideo => "base-video",
155 Self::Whisper => "whisper",
156 Self::WhisperTiny => "whisper-tiny",
157 Self::WhisperBase => "whisper-base",
158 Self::WhisperSmall => "whisper-small",
159 Self::WhisperMedium => "whisper-medium",
160 Self::WhisperLarge => "whisper-large",
161 Self::Custom(s) => s,
162 }
163 }
164}
165
166impl std::fmt::Display for DeepgramTranscriberModel {
167 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
168 write!(f, "{}", self.as_str())
169 }
170}