vapi_client/models/
fallback_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 FallbackDeepgramTranscriber {
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}
55
56impl FallbackDeepgramTranscriber {
57    pub fn new(provider: ProviderTrue) -> FallbackDeepgramTranscriber {
58        FallbackDeepgramTranscriber {
59            provider,
60            model: None,
61            language: None,
62            smart_format: None,
63            code_switching_enabled: None,
64            mip_opt_out: None,
65            numerals: None,
66            confidence_threshold: None,
67            keywords: None,
68            keyterm: None,
69            endpointing: None,
70        }
71    }
72}
73/// This is the transcription provider that will be used.
74#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
75pub enum ProviderTrue {
76    #[serde(rename = "deepgram")]
77    Deepgram,
78}
79
80impl Default for ProviderTrue {
81    fn default() -> ProviderTrue {
82        Self::Deepgram
83    }
84}
85/// 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
86#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
87pub enum LanguageTrue {
88    #[serde(rename = "ar")]
89    Ar,
90    #[serde(rename = "az")]
91    Az,
92    #[serde(rename = "ba")]
93    Ba,
94    #[serde(rename = "bg")]
95    Bg,
96    #[serde(rename = "br")]
97    Br,
98    #[serde(rename = "ca")]
99    Ca,
100    #[serde(rename = "cs")]
101    Cs,
102    #[serde(rename = "da")]
103    Da,
104    #[serde(rename = "da-DK")]
105    DaDk,
106    #[serde(rename = "de")]
107    De,
108    #[serde(rename = "de-CH")]
109    DeCh,
110    #[serde(rename = "el")]
111    El,
112    #[serde(rename = "en")]
113    En,
114    #[serde(rename = "en-AU")]
115    EnAu,
116    #[serde(rename = "en-GB")]
117    EnGb,
118    #[serde(rename = "en-IN")]
119    EnIn,
120    #[serde(rename = "en-NZ")]
121    EnNz,
122    #[serde(rename = "en-US")]
123    EnUs,
124    #[serde(rename = "es")]
125    Es,
126    #[serde(rename = "es-419")]
127    Es419,
128    #[serde(rename = "es-LATAM")]
129    EsLatam,
130    #[serde(rename = "et")]
131    Et,
132    #[serde(rename = "eu")]
133    Eu,
134    #[serde(rename = "fi")]
135    Fi,
136    #[serde(rename = "fr")]
137    Fr,
138    #[serde(rename = "fr-CA")]
139    FrCa,
140    #[serde(rename = "ha")]
141    Ha,
142    #[serde(rename = "haw")]
143    Haw,
144    #[serde(rename = "he")]
145    He,
146    #[serde(rename = "hi")]
147    Hi,
148    #[serde(rename = "hi-Latn")]
149    HiLatn,
150    #[serde(rename = "hu")]
151    Hu,
152    #[serde(rename = "id")]
153    Id,
154    #[serde(rename = "is")]
155    Is,
156    #[serde(rename = "it")]
157    It,
158    #[serde(rename = "ja")]
159    Ja,
160    #[serde(rename = "jw")]
161    Jw,
162    #[serde(rename = "kn")]
163    Kn,
164    #[serde(rename = "ko")]
165    Ko,
166    #[serde(rename = "ko-KR")]
167    KoKr,
168    #[serde(rename = "ln")]
169    Ln,
170    #[serde(rename = "lt")]
171    Lt,
172    #[serde(rename = "lv")]
173    Lv,
174    #[serde(rename = "mk")]
175    Mk,
176    #[serde(rename = "ms")]
177    Ms,
178    #[serde(rename = "multi")]
179    Multi,
180    #[serde(rename = "nl")]
181    Nl,
182    #[serde(rename = "nl-BE")]
183    NlBe,
184    #[serde(rename = "no")]
185    No,
186    #[serde(rename = "pl")]
187    Pl,
188    #[serde(rename = "pt")]
189    Pt,
190    #[serde(rename = "pt-BR")]
191    PtBr,
192    #[serde(rename = "ro")]
193    Ro,
194    #[serde(rename = "ru")]
195    Ru,
196    #[serde(rename = "sk")]
197    Sk,
198    #[serde(rename = "sl")]
199    Sl,
200    #[serde(rename = "sn")]
201    Sn,
202    #[serde(rename = "so")]
203    So,
204    #[serde(rename = "sr")]
205    Sr,
206    #[serde(rename = "su")]
207    Su,
208    #[serde(rename = "sv")]
209    Sv,
210    #[serde(rename = "sv-SE")]
211    SvSe,
212    #[serde(rename = "ta")]
213    Ta,
214    #[serde(rename = "taq")]
215    Taq,
216    #[serde(rename = "th")]
217    Th,
218    #[serde(rename = "th-TH")]
219    ThTh,
220    #[serde(rename = "tr")]
221    Tr,
222    #[serde(rename = "tt")]
223    Tt,
224    #[serde(rename = "uk")]
225    Uk,
226    #[serde(rename = "ur")]
227    Ur,
228    #[serde(rename = "vi")]
229    Vi,
230    #[serde(rename = "yo")]
231    Yo,
232    #[serde(rename = "zh")]
233    Zh,
234    #[serde(rename = "zh-CN")]
235    ZhCn,
236    #[serde(rename = "zh-HK")]
237    ZhHk,
238    #[serde(rename = "zh-Hans")]
239    ZhHans,
240    #[serde(rename = "zh-Hant")]
241    ZhHant,
242    #[serde(rename = "zh-TW")]
243    ZhTw,
244}
245
246impl Default for LanguageTrue {
247    fn default() -> LanguageTrue {
248        Self::Ar
249    }
250}