async_dashscope/operation/audio/tts/
param.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::operation::{common::Parameters, request::RequestTrait};
5
6#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
7pub struct TextToSpeechParam {
8    #[builder(setter(into))]
9    pub model: String,
10    pub input: Input,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    #[builder(setter(into, strip_option))]
13    #[builder(default=None)]
14    pub stream: Option<bool>,
15    // 这个参数并不存在,只是为了兼容
16    #[serde(skip_serializing_if = "Option::is_none")]
17    #[builder(setter(into, strip_option))]
18    #[builder(default=None)]
19    pub parameters: Option<Parameters>,
20}
21
22#[derive(Debug, Clone, Builder, Serialize, Deserialize, PartialEq)]
23pub struct Input {
24     #[builder(setter(into))]
25    text: String,
26    /// 音色,可选有 Chelsie,Cherry,Ethan,Serena,Dylan,Jada,Sunny
27     #[builder(setter(into))]
28    voice: String,
29
30    /// 指定合成音频的语种,默认为 Auto。
31    /// 
32    /// - Auto:适用无法确定文本的语种或文本包含多种语言的场景,模型会自动为文本中的不同语言片段匹配各自的发音,但无法保证发音完全精准。
33    /// - 指定语种:适用于文本为单一语种的场景,此时指定为具体语种,能显著提升合成质量,效果通常优于 Auto。可选值包括:
34    ///     - Chinese
35    ///     - English
36    ///     - German
37    ///     - Italian
38    ///     - Portuguese
39    ///     - Spanish
40    ///     - Japanese
41    ///     - Korean
42    ///     - French
43    ///     - Russian
44    #[builder(setter(into))]
45    language_type:Option<String>,
46}
47
48impl RequestTrait for TextToSpeechParam {
49    fn model(&self) -> &str {
50        &self.model
51    }
52
53    fn parameters(&self) -> Option<&Parameters> {
54        None
55    }
56    
57    type P = Parameters;
58}