vapi_client/models/
deepgram_transcriber_model.rs

1/*
2 * Vapi API
3 *
4 * Voice AI for developers.
5 *
6 * The version of the OpenAPI document: 1.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// DeepgramTranscriberModel : This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview
15/// This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview
16#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
17#[serde(rename_all = "kebab-case")]
18pub enum DeepgramTranscriberModel {
19    // Nova-3 models
20    #[serde(rename = "nova-3")]
21    Nova3,
22    #[serde(rename = "nova-3-general")]
23    Nova3General,
24    #[serde(rename = "nova-3-medical")]
25    Nova3Medical,
26
27    // Nova-2 models
28    #[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    // Nova (Nova-1) models
54    #[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    // Enhanced models
64    #[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    // Base models
76    #[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    // Whisper models
94    #[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    // Custom model support - allows any string for custom models
108    #[serde(untagged)]
109    Custom(String),
110}
111
112impl Default for DeepgramTranscriberModel {
113    fn default() -> Self {
114        // Default to nova-2 as it's recommended for most use cases
115        Self::Nova2
116    }
117}
118
119impl DeepgramTranscriberModel {
120    /// Returns the string representation of the model
121    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}