use clap::ValueEnum;
#[derive(ValueEnum, Clone, Debug, Default)]
pub enum ModelVersion {
#[value(name = "v5.5")]
#[default]
V55,
#[value(name = "v5")]
V5,
#[value(name = "v4.5+")]
V45Plus,
#[value(name = "v4.5")]
V45,
#[value(name = "v4")]
V4,
#[value(name = "v3.5")]
V35,
#[value(name = "v3")]
V3,
#[value(name = "v2")]
V2,
}
impl ModelVersion {
pub fn to_api_key(&self) -> &'static str {
match self {
Self::V55 => "chirp-fenix",
Self::V5 => "chirp-crow",
Self::V45Plus => "chirp-bluejay",
Self::V45 => "chirp-auk",
Self::V4 => "chirp-v4",
Self::V35 => "chirp-v3-5",
Self::V3 => "chirp-v3-0",
Self::V2 => "chirp-v2-xxl-alpha",
}
}
pub fn display_name(&self) -> &'static str {
match self {
Self::V55 => "v5.5",
Self::V5 => "v5",
Self::V45Plus => "v4.5+",
Self::V45 => "v4.5",
Self::V4 => "v4",
Self::V35 => "v3.5",
Self::V3 => "v3",
Self::V2 => "v2",
}
}
}
#[derive(ValueEnum, Clone, Debug)]
pub enum VocalGender {
Male,
Female,
}
#[derive(ValueEnum, Clone, Debug, Default)]
pub enum RemasterModel {
#[value(name = "v5.5")]
#[default]
V55,
#[value(name = "v5")]
V5,
#[value(name = "v4.5+")]
V45Plus,
}
impl RemasterModel {
pub fn to_api_key(&self) -> &'static str {
match self {
Self::V55 => "chirp-flounder",
Self::V5 => "chirp-carp",
Self::V45Plus => "chirp-bass",
}
}
}