vapi_client/models/
play_ht_voice.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 PlayHtVoice {
19    /// This is the voice provider that will be used.
20    #[serde(rename = "provider")]
21    pub provider: Provider,
22    #[serde(rename = "voiceId")]
23    pub voice_id: models::PlayHtVoiceVoiceId,
24    /// This is the speed multiplier that will be used.
25    #[serde(rename = "speed", skip_serializing_if = "Option::is_none")]
26    pub speed: Option<f64>,
27    /// A floating point number between 0, exclusive, and 2, inclusive. If equal to null or not provided, the model's default temperature will be used. The temperature parameter controls variance. Lower temperatures result in more predictable results, higher temperatures allow each run to vary more, so the voice may sound less like the baseline voice.
28    #[serde(rename = "temperature", skip_serializing_if = "Option::is_none")]
29    pub temperature: Option<f64>,
30    /// An emotion to be applied to the speech.
31    #[serde(rename = "emotion", skip_serializing_if = "Option::is_none")]
32    pub emotion: Option<Emotion>,
33    /// A number between 1 and 6. Use lower numbers to reduce how unique your chosen voice will be compared to other voices.
34    #[serde(rename = "voiceGuidance", skip_serializing_if = "Option::is_none")]
35    pub voice_guidance: Option<f64>,
36    /// A number between 1 and 30. Use lower numbers to to reduce how strong your chosen emotion will be. Higher numbers will create a very emotional performance.
37    #[serde(rename = "styleGuidance", skip_serializing_if = "Option::is_none")]
38    pub style_guidance: Option<f64>,
39    /// A number between 1 and 2. This number influences how closely the generated speech adheres to the input text. Use lower values to create more fluid speech, but with a higher chance of deviating from the input text. Higher numbers will make the generated speech more accurate to the input text, ensuring that the words spoken align closely with the provided text.
40    #[serde(rename = "textGuidance", skip_serializing_if = "Option::is_none")]
41    pub text_guidance: Option<f64>,
42    /// Playht voice model/engine to use.
43    #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
44    pub model: Option<Model>,
45    /// The language to use for the speech.
46    #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
47    pub language: Option<Language>,
48    /// This is the plan for chunking the model output before it is sent to the voice provider.
49    #[serde(rename = "chunkPlan", skip_serializing_if = "Option::is_none")]
50    pub chunk_plan: Option<models::ChunkPlan>,
51    /// This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
52    #[serde(rename = "fallbackPlan", skip_serializing_if = "Option::is_none")]
53    pub fallback_plan: Option<models::FallbackPlan>,
54}
55
56impl PlayHtVoice {
57    pub fn new(provider: Provider, voice_id: models::PlayHtVoiceVoiceId) -> PlayHtVoice {
58        PlayHtVoice {
59            provider,
60            voice_id,
61            speed: None,
62            temperature: None,
63            emotion: None,
64            voice_guidance: None,
65            style_guidance: None,
66            text_guidance: None,
67            model: None,
68            language: None,
69            chunk_plan: None,
70            fallback_plan: None,
71        }
72    }
73}
74/// This is the voice provider that will be used.
75#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
76pub enum Provider {
77    #[serde(rename = "playht")]
78    Playht,
79}
80
81impl Default for Provider {
82    fn default() -> Provider {
83        Self::Playht
84    }
85}
86/// An emotion to be applied to the speech.
87#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
88pub enum Emotion {
89    #[serde(rename = "female_happy")]
90    FemaleHappy,
91    #[serde(rename = "female_sad")]
92    FemaleSad,
93    #[serde(rename = "female_angry")]
94    FemaleAngry,
95    #[serde(rename = "female_fearful")]
96    FemaleFearful,
97    #[serde(rename = "female_disgust")]
98    FemaleDisgust,
99    #[serde(rename = "female_surprised")]
100    FemaleSurprised,
101    #[serde(rename = "male_happy")]
102    MaleHappy,
103    #[serde(rename = "male_sad")]
104    MaleSad,
105    #[serde(rename = "male_angry")]
106    MaleAngry,
107    #[serde(rename = "male_fearful")]
108    MaleFearful,
109    #[serde(rename = "male_disgust")]
110    MaleDisgust,
111    #[serde(rename = "male_surprised")]
112    MaleSurprised,
113}
114
115impl Default for Emotion {
116    fn default() -> Emotion {
117        Self::FemaleHappy
118    }
119}
120/// Playht voice model/engine to use.
121#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
122pub enum Model {
123    #[serde(rename = "PlayHT2.0")]
124    PlayHt2Period0,
125    #[serde(rename = "PlayHT2.0-turbo")]
126    PlayHt2Period0Turbo,
127    #[serde(rename = "Play3.0-mini")]
128    Play3Period0Mini,
129    #[serde(rename = "PlayDialog")]
130    PlayDialog,
131}
132
133impl Default for Model {
134    fn default() -> Model {
135        Self::PlayHt2Period0
136    }
137}
138/// The language to use for the speech.
139#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, OpenApi)]
140pub enum Language {
141    #[serde(rename = "afrikaans")]
142    Afrikaans,
143    #[serde(rename = "albanian")]
144    Albanian,
145    #[serde(rename = "amharic")]
146    Amharic,
147    #[serde(rename = "arabic")]
148    Arabic,
149    #[serde(rename = "bengali")]
150    Bengali,
151    #[serde(rename = "bulgarian")]
152    Bulgarian,
153    #[serde(rename = "catalan")]
154    Catalan,
155    #[serde(rename = "croatian")]
156    Croatian,
157    #[serde(rename = "czech")]
158    Czech,
159    #[serde(rename = "danish")]
160    Danish,
161    #[serde(rename = "dutch")]
162    Dutch,
163    #[serde(rename = "english")]
164    English,
165    #[serde(rename = "french")]
166    French,
167    #[serde(rename = "galician")]
168    Galician,
169    #[serde(rename = "german")]
170    German,
171    #[serde(rename = "greek")]
172    Greek,
173    #[serde(rename = "hebrew")]
174    Hebrew,
175    #[serde(rename = "hindi")]
176    Hindi,
177    #[serde(rename = "hungarian")]
178    Hungarian,
179    #[serde(rename = "indonesian")]
180    Indonesian,
181    #[serde(rename = "italian")]
182    Italian,
183    #[serde(rename = "japanese")]
184    Japanese,
185    #[serde(rename = "korean")]
186    Korean,
187    #[serde(rename = "malay")]
188    Malay,
189    #[serde(rename = "mandarin")]
190    Mandarin,
191    #[serde(rename = "polish")]
192    Polish,
193    #[serde(rename = "portuguese")]
194    Portuguese,
195    #[serde(rename = "russian")]
196    Russian,
197    #[serde(rename = "serbian")]
198    Serbian,
199    #[serde(rename = "spanish")]
200    Spanish,
201    #[serde(rename = "swedish")]
202    Swedish,
203    #[serde(rename = "tagalog")]
204    Tagalog,
205    #[serde(rename = "thai")]
206    Thai,
207    #[serde(rename = "turkish")]
208    Turkish,
209    #[serde(rename = "ukrainian")]
210    Ukrainian,
211    #[serde(rename = "urdu")]
212    Urdu,
213    #[serde(rename = "xhosa")]
214    Xhosa,
215}
216
217impl Default for Language {
218    fn default() -> Language {
219        Self::Afrikaans
220    }
221}