#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MlxQuantization {
Q4,
Q8,
}
impl MlxQuantization {
pub fn weights_file(&self) -> &'static str {
match self {
Self::Q4 => "model-q4.safetensors",
Self::Q8 => "model-q8.safetensors",
}
}
}
#[derive(Debug, Clone)]
pub struct MlxTtsConfig {
pub model_id: String,
pub quantization: Option<MlxQuantization>,
pub max_length: usize,
pub sample_rate: u32,
}
impl Default for MlxTtsConfig {
fn default() -> Self {
Self {
model_id: "mlx-community/Kokoro-82M-bf16".into(),
quantization: None,
max_length: 4096,
sample_rate: 24000,
}
}
}
#[derive(Debug, Clone)]
pub struct MlxSttConfig {
pub model_id: String,
pub quantization: Option<MlxQuantization>,
pub max_duration_secs: u32,
pub sample_rate: u32,
}
impl Default for MlxSttConfig {
fn default() -> Self {
Self {
model_id: "mlx-community/whisper-large-v3-turbo".into(),
quantization: None,
max_duration_secs: 600,
sample_rate: 16000,
}
}
}