1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//! Voice management CLI arguments
use clap::{Args, Subcommand};
/// Voice management arguments
#[derive(Args)]
pub struct VoiceArgs {
#[command(subcommand)]
pub command: VoiceCommands,
}
#[derive(Subcommand)]
pub enum VoiceCommands {
/// List all available voices
List {
/// Show detailed information
#[arg(short, long)]
detailed: bool,
},
/// Get voice details
Get {
/// Voice ID
voice_id: String,
},
/// Delete a voice
Delete {
/// Voice ID
voice_id: String,
},
/// Clone a voice from audio samples
Clone {
/// Name for the new voice
#[arg(short, long)]
name: String,
/// Description of the voice
#[arg(short, long)]
description: Option<String>,
/// Audio files to use for cloning
#[arg(short, long, value_name = "FILES", value_delimiter = ',')]
samples: Vec<String>,
/// Directory containing sample files
#[arg(long, value_name = "DIR")]
samples_dir: Option<String>,
/// Labels (key=value pairs)
#[arg(short, long, value_name = "KEY=VALUE")]
labels: Vec<String>,
},
/// Get voice settings
Settings {
/// Voice ID
voice_id: String,
},
/// Edit voice settings
EditSettings {
/// Voice ID
voice_id: String,
/// Stability (0-1)
#[arg(long, value_name = "FLOAT")]
stability: Option<f32>,
/// Similarity boost (0-1)
#[arg(long, value_name = "FLOAT")]
similarity_boost: Option<f32>,
/// Style (0-1)
#[arg(long, value_name = "FLOAT")]
style: Option<f32>,
/// Use speaker boost
#[arg(long)]
speaker_boost: bool,
},
/// Fine-tune a voice
FineTune {
#[command(subcommand)]
command: FineTuneCommands,
},
/// Edit voice name or description
Edit {
/// Voice ID
voice_id: String,
/// New name for the voice
#[arg(short, long)]
name: Option<String>,
/// New description for the voice
#[arg(short, long)]
description: Option<String>,
},
/// Share a voice publicly
Share {
/// Voice ID
voice_id: String,
},
/// Find similar voices
Similar {
/// Voice ID to find similar voices for
#[arg(long)]
voice_id: Option<String>,
/// Text description to find similar voices for
#[arg(long)]
text: Option<String>,
},
}
#[derive(Subcommand)]
pub enum FineTuneCommands {
/// Start fine-tuning a voice
Start {
/// Voice ID to fine-tune
voice_id: String,
/// Name for the fine-tuned voice
#[arg(short, long)]
name: String,
/// Description of the fine-tuned voice
#[arg(short, long)]
description: Option<String>,
},
/// Check fine-tuning status
Status {
/// Voice ID
voice_id: String,
},
/// Cancel fine-tuning
Cancel {
/// Voice ID
voice_id: String,
},
}