vapi_client/models/
deepgram_transcriber.rs

1/*
2 * Vapi API
3 *
4 * API for building voice assistants
5 *
6 * The version of the OpenAPI document: 1.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use serde::{Deserialize, Serialize};
12use utoipa::OpenApi;
13
14
15use crate::models;
16
17#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, OpenApi)]
18pub struct DeepgramTranscriber {
19    /// This is the transcription provider that will be used.
20    #[serde(rename = "provider")]
21    pub provider: Provider,
22    #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
23    pub model: Option<models::DeepgramTranscriberModel>,
24    /// 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
25    #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
26    pub language: Option<Language>,
27    /// 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.
28    #[serde(rename = "smartFormat", skip_serializing_if = "Option::is_none")]
29    pub smart_format: Option<bool>,
30    /// 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
31    #[serde(
32        rename = "codeSwitchingEnabled",
33        skip_serializing_if = "Option::is_none"
34    )]
35    pub code_switching_enabled: Option<bool>,
36    /// 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
37    #[serde(rename = "mipOptOut", skip_serializing_if = "Option::is_none")]
38    pub mip_opt_out: Option<bool>,
39    /// 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.
40    #[serde(rename = "keywords", skip_serializing_if = "Option::is_none")]
41    pub keywords: Option<Vec<String>>,
42    /// Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%.
43    #[serde(rename = "keyterm", skip_serializing_if = "Option::is_none")]
44    pub keyterm: Option<Vec<String>>,
45    /// 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
46    #[serde(rename = "endpointing", skip_serializing_if = "Option::is_none")]
47    pub endpointing: Option<f64>,
48}
49
50impl DeepgramTranscriber {
51    pub fn new(provider: Provider) -> DeepgramTranscriber {
52        DeepgramTranscriber {
53            provider,
54            model: None,
55            language: None,
56            smart_format: None,
57            code_switching_enabled: None,
58            mip_opt_out: None,
59            keywords: None,
60            keyterm: None,
61            endpointing: None,
62        }
63    }
64}
65/// This is the transcription provider that will be used.
66#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
67pub enum Provider {
68    #[serde(rename = "deepgram")]
69    Deepgram,
70}
71
72impl Default for Provider {
73    fn default() -> Provider {
74        Self::Deepgram
75    }
76}
77/// 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
78#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
79pub enum Language {
80    #[serde(rename = "bg")]
81    Bg,
82    #[serde(rename = "ca")]
83    Ca,
84    #[serde(rename = "cs")]
85    Cs,
86    #[serde(rename = "da")]
87    Da,
88    #[serde(rename = "da-DK")]
89    DaDk,
90    #[serde(rename = "de")]
91    De,
92    #[serde(rename = "de-CH")]
93    DeCh,
94    #[serde(rename = "el")]
95    El,
96    #[serde(rename = "en")]
97    En,
98    #[serde(rename = "en-AU")]
99    EnAu,
100    #[serde(rename = "en-GB")]
101    EnGb,
102    #[serde(rename = "en-IN")]
103    EnIn,
104    #[serde(rename = "en-NZ")]
105    EnNz,
106    #[serde(rename = "en-US")]
107    EnUs,
108    #[serde(rename = "es")]
109    Es,
110    #[serde(rename = "es-419")]
111    Es419,
112    #[serde(rename = "es-LATAM")]
113    EsLatam,
114    #[serde(rename = "et")]
115    Et,
116    #[serde(rename = "fi")]
117    Fi,
118    #[serde(rename = "fr")]
119    Fr,
120    #[serde(rename = "fr-CA")]
121    FrCa,
122    #[serde(rename = "hi")]
123    Hi,
124    #[serde(rename = "hi-Latn")]
125    HiLatn,
126    #[serde(rename = "hu")]
127    Hu,
128    #[serde(rename = "id")]
129    Id,
130    #[serde(rename = "it")]
131    It,
132    #[serde(rename = "ja")]
133    Ja,
134    #[serde(rename = "ko")]
135    Ko,
136    #[serde(rename = "ko-KR")]
137    KoKr,
138    #[serde(rename = "lt")]
139    Lt,
140    #[serde(rename = "lv")]
141    Lv,
142    #[serde(rename = "ms")]
143    Ms,
144    #[serde(rename = "multi")]
145    Multi,
146    #[serde(rename = "nl")]
147    Nl,
148    #[serde(rename = "nl-BE")]
149    NlBe,
150    #[serde(rename = "no")]
151    No,
152    #[serde(rename = "pl")]
153    Pl,
154    #[serde(rename = "pt")]
155    Pt,
156    #[serde(rename = "pt-BR")]
157    PtBr,
158    #[serde(rename = "ro")]
159    Ro,
160    #[serde(rename = "ru")]
161    Ru,
162    #[serde(rename = "sk")]
163    Sk,
164    #[serde(rename = "sv")]
165    Sv,
166    #[serde(rename = "sv-SE")]
167    SvSe,
168    #[serde(rename = "ta")]
169    Ta,
170    #[serde(rename = "taq")]
171    Taq,
172    #[serde(rename = "th")]
173    Th,
174    #[serde(rename = "th-TH")]
175    ThTh,
176    #[serde(rename = "tr")]
177    Tr,
178    #[serde(rename = "uk")]
179    Uk,
180    #[serde(rename = "vi")]
181    Vi,
182    #[serde(rename = "zh")]
183    Zh,
184    #[serde(rename = "zh-CN")]
185    ZhCn,
186    #[serde(rename = "zh-HK")]
187    ZhHk,
188    #[serde(rename = "zh-Hans")]
189    ZhHans,
190    #[serde(rename = "zh-Hant")]
191    ZhHant,
192    #[serde(rename = "zh-TW")]
193    ZhTw,
194}
195
196impl Default for Language {
197    fn default() -> Language {
198        Self::Bg
199    }
200}