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