d_id/endpoints/resources/
voices.rs

1// File: voices.rs
2// Path: src/endpoints/resources/voices.rs
3
4use super::*;
5
6const VOICES_PATH: &str = "/tts/voices";
7
8pub type Voices = Vec<Voice>;
9
10#[derive(Serialize, Deserialize, Debug)]
11pub struct Voice {
12    id: String,
13    name: String,
14    gender: String,
15    locale: String,
16    language: String,
17    access: String,
18    provider: String,
19    //styles: Vec<Option<String>>,
20}
21
22pub async fn get_voices() -> Result<Voices> {
23    let c = ClientBuilder::new()?
24        .method(GET)?
25        .path(VOICES_PATH)?
26        .header(CONTENT_TYPE, APPLICATION_JSON)?
27        .build()?;
28
29    let resp = c.send_request(Empty::<Bytes>::new()).await?;
30
31    let voices = serde_json::from_slice::<Voices>(&resp.as_ref())?;
32
33    Ok(voices)
34}