vapi_client/models/
deepgram_transcriber.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#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct DeepgramTranscriber {
16    /// This is the transcription provider that will be used.
17    #[serde(rename = "provider")]
18    pub provider: ProviderTrue,
19    #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
20    pub model: Option<models::DeepgramTranscriberModel>,
21    /// This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview
22    #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
23    pub language: Option<LanguageTrue>,
24    /// This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.
25    #[serde(rename = "smartFormat", skip_serializing_if = "Option::is_none")]
26    pub smart_format: Option<bool>,
27    /// This automatically switches the transcriber's language when the customer's language changes. Defaults to false.  Usage: - If your customers switch languages mid-call, you can set this to true.  Note: - To detect language changes, Vapi uses a custom trained model. Languages supported (X = limited support):   1. Arabic   2. Bengali   3. Cantonese   4. Chinese   5. Chinese Simplified (X)   6. Chinese Traditional (X)   7. English   8. Farsi (X)   9. French   10. German   11. Haitian Creole (X)   12. Hindi   13. Italian   14. Japanese   15. Korean   16. Portuguese   17. Russian   18. Spanish   19. Thai   20. Urdu   21. Vietnamese - To receive `language-change-detected` webhook events, add it to `assistant.serverMessages`.  @default false
28    #[serde(
29        rename = "codeSwitchingEnabled",
30        skip_serializing_if = "Option::is_none"
31    )]
32    pub code_switching_enabled: Option<bool>,
33    /// If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out  This will only be used if you are using your own Deepgram API key.  @default false
34    #[serde(rename = "mipOptOut", skip_serializing_if = "Option::is_none")]
35    pub mip_opt_out: Option<bool>,
36    /// If set to true, this will cause deepgram to convert spoken numbers to literal numerals. For example, \"my phone number is nine-seven-two...\" would become \"my phone number is 972...\"  @default false
37    #[serde(rename = "numerals", skip_serializing_if = "Option::is_none")]
38    pub numerals: Option<bool>,
39    /// Transcripts below this confidence threshold will be discarded.  @default 0.4
40    #[serde(
41        rename = "confidenceThreshold",
42        skip_serializing_if = "Option::is_none"
43    )]
44    pub confidence_threshold: Option<f64>,
45    /// These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here.
46    #[serde(rename = "keywords", skip_serializing_if = "Option::is_none")]
47    pub keywords: Option<Vec<String>>,
48    /// Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%.
49    #[serde(rename = "keyterm", skip_serializing_if = "Option::is_none")]
50    pub keyterm: Option<Vec<String>>,
51    /// This is the timeout after which Deepgram will send transcription on user silence. You can read in-depth documentation here: https://developers.deepgram.com/docs/endpointing.  Here are the most important bits: - Defaults to 10. This is recommended for most use cases to optimize for latency. - 10 can cause some missing transcriptions since because of the shorter context. This mostly happens for one-word utterances. For those uses cases, it's recommended to try 300. It will add a bit of latency but the quality and reliability of the experience will be better. - If neither 10 nor 300 work, contact support@vapi.ai and we'll find another solution.  @default 10
52    #[serde(rename = "endpointing", skip_serializing_if = "Option::is_none")]
53    pub endpointing: Option<f64>,
54    /// This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
55    #[serde(rename = "fallbackPlan", skip_serializing_if = "Option::is_none")]
56    pub fallback_plan: Option<models::FallbackTranscriberPlan>,
57}
58
59impl DeepgramTranscriber {
60    pub fn new(provider: ProviderTrue) -> DeepgramTranscriber {
61        DeepgramTranscriber {
62            provider,
63            model: None,
64            language: None,
65            smart_format: None,
66            code_switching_enabled: None,
67            mip_opt_out: None,
68            numerals: None,
69            confidence_threshold: None,
70            keywords: None,
71            keyterm: None,
72            endpointing: None,
73            fallback_plan: None,
74        }
75    }
76}
77/// This is the transcription provider that will be used.
78#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
79pub enum ProviderTrue {
80    #[serde(rename = "deepgram")]
81    Deepgram,
82}
83
84impl Default for ProviderTrue {
85    fn default() -> ProviderTrue {
86        Self::Deepgram
87    }
88}
89/// This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview
90#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
91pub enum LanguageTrue {
92    #[serde(rename = "ar")]
93    Ar,
94    #[serde(rename = "az")]
95    Az,
96    #[serde(rename = "ba")]
97    Ba,
98    #[serde(rename = "bg")]
99    Bg,
100    #[serde(rename = "br")]
101    Br,
102    #[serde(rename = "ca")]
103    Ca,
104    #[serde(rename = "cs")]
105    Cs,
106    #[serde(rename = "da")]
107    Da,
108    #[serde(rename = "da-DK")]
109    DaDk,
110    #[serde(rename = "de")]
111    De,
112    #[serde(rename = "de-CH")]
113    DeCh,
114    #[serde(rename = "el")]
115    El,
116    #[serde(rename = "en")]
117    En,
118    #[serde(rename = "en-AU")]
119    EnAu,
120    #[serde(rename = "en-GB")]
121    EnGb,
122    #[serde(rename = "en-IN")]
123    EnIn,
124    #[serde(rename = "en-NZ")]
125    EnNz,
126    #[serde(rename = "en-US")]
127    EnUs,
128    #[serde(rename = "es")]
129    Es,
130    #[serde(rename = "es-419")]
131    Es419,
132    #[serde(rename = "es-LATAM")]
133    EsLatam,
134    #[serde(rename = "et")]
135    Et,
136    #[serde(rename = "eu")]
137    Eu,
138    #[serde(rename = "fi")]
139    Fi,
140    #[serde(rename = "fr")]
141    Fr,
142    #[serde(rename = "fr-CA")]
143    FrCa,
144    #[serde(rename = "ha")]
145    Ha,
146    #[serde(rename = "haw")]
147    Haw,
148    #[serde(rename = "he")]
149    He,
150    #[serde(rename = "hi")]
151    Hi,
152    #[serde(rename = "hi-Latn")]
153    HiLatn,
154    #[serde(rename = "hu")]
155    Hu,
156    #[serde(rename = "id")]
157    Id,
158    #[serde(rename = "is")]
159    Is,
160    #[serde(rename = "it")]
161    It,
162    #[serde(rename = "ja")]
163    Ja,
164    #[serde(rename = "jw")]
165    Jw,
166    #[serde(rename = "kn")]
167    Kn,
168    #[serde(rename = "ko")]
169    Ko,
170    #[serde(rename = "ko-KR")]
171    KoKr,
172    #[serde(rename = "ln")]
173    Ln,
174    #[serde(rename = "lt")]
175    Lt,
176    #[serde(rename = "lv")]
177    Lv,
178    #[serde(rename = "mk")]
179    Mk,
180    #[serde(rename = "ms")]
181    Ms,
182    #[serde(rename = "multi")]
183    Multi,
184    #[serde(rename = "nl")]
185    Nl,
186    #[serde(rename = "nl-BE")]
187    NlBe,
188    #[serde(rename = "no")]
189    No,
190    #[serde(rename = "pl")]
191    Pl,
192    #[serde(rename = "pt")]
193    Pt,
194    #[serde(rename = "pt-BR")]
195    PtBr,
196    #[serde(rename = "ro")]
197    Ro,
198    #[serde(rename = "ru")]
199    Ru,
200    #[serde(rename = "sk")]
201    Sk,
202    #[serde(rename = "sl")]
203    Sl,
204    #[serde(rename = "sn")]
205    Sn,
206    #[serde(rename = "so")]
207    So,
208    #[serde(rename = "sr")]
209    Sr,
210    #[serde(rename = "su")]
211    Su,
212    #[serde(rename = "sv")]
213    Sv,
214    #[serde(rename = "sv-SE")]
215    SvSe,
216    #[serde(rename = "ta")]
217    Ta,
218    #[serde(rename = "taq")]
219    Taq,
220    #[serde(rename = "th")]
221    Th,
222    #[serde(rename = "th-TH")]
223    ThTh,
224    #[serde(rename = "tr")]
225    Tr,
226    #[serde(rename = "tt")]
227    Tt,
228    #[serde(rename = "uk")]
229    Uk,
230    #[serde(rename = "ur")]
231    Ur,
232    #[serde(rename = "vi")]
233    Vi,
234    #[serde(rename = "yo")]
235    Yo,
236    #[serde(rename = "zh")]
237    Zh,
238    #[serde(rename = "zh-CN")]
239    ZhCn,
240    #[serde(rename = "zh-HK")]
241    ZhHk,
242    #[serde(rename = "zh-Hans")]
243    ZhHans,
244    #[serde(rename = "zh-Hant")]
245    ZhHant,
246    #[serde(rename = "zh-TW")]
247    ZhTw,
248}
249
250impl Default for LanguageTrue {
251    fn default() -> LanguageTrue {
252        Self::Ar
253    }
254}