use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TranscribeRequest {
pub audio_path: String,
#[serde(default)]
pub model: Option<String>,
#[serde(default)]
pub language: Option<String>,
#[serde(default)]
pub prompt: Option<String>,
#[serde(default)]
pub timestamps: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TranscribedWord {
pub start: f32,
pub end: f32,
pub text: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TranscribeResult {
pub text: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model_used: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub words: Vec<TranscribedWord>,
}
impl TranscribeResult {
pub fn text_only(text: String, model_used: Option<String>, language: Option<String>) -> Self {
Self {
text,
model_used,
language,
words: Vec::new(),
}
}
}