rustpbx 0.4.4

A SIP PBX implementation in Rust
Documentation
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct TranscriptRequest {
    #[serde(default)]
    pub force: bool,
    #[serde(default)]
    pub language: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredTranscript {
    pub version: u8,
    pub source: String,
    pub generated_at: DateTime<Utc>,
    #[serde(default)]
    pub language: Option<String>,
    #[serde(default)]
    pub duration_secs: Option<f64>,
    #[serde(default)]
    pub sample_rate: Option<u32>,
    #[serde(default)]
    pub segments: Vec<StoredTranscriptSegment>,
    #[serde(default)]
    pub text: String,
    #[serde(default)]
    pub analysis: Option<StoredTranscriptAnalysis>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredTranscriptSegment {
    #[serde(default)]
    pub idx: Option<u32>,
    #[serde(default)]
    pub text: String,
    #[serde(default)]
    pub start: Option<f64>,
    #[serde(default)]
    pub end: Option<f64>,
    #[serde(default)]
    pub channel: Option<u32>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredTranscriptAnalysis {
    #[serde(default)]
    pub elapsed: Option<f64>,
    #[serde(default)]
    pub rtf: Option<f64>,
    #[serde(default)]
    pub word_count: usize,
    #[serde(default)]
    pub asr_model: Option<String>,
}

#[derive(Debug, Deserialize)]
pub struct SenseVoiceCliSegment {
    #[serde(default)]
    pub start_sec: Option<f64>,
    #[serde(default)]
    pub end_sec: Option<f64>,
    #[serde(default)]
    pub text: String,
    #[serde(default, rename = "tags")]
    pub _tags: Vec<String>,
}

#[derive(Debug, Deserialize)]
pub struct SenseVoiceCliChannel {
    #[serde(default)]
    pub channel: Option<u32>,
    #[serde(default)]
    pub duration_sec: Option<f64>,
    #[serde(default)]
    pub rtf: Option<f64>,
    #[serde(default)]
    pub segments: Vec<SenseVoiceCliSegment>,
}

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TranscriptSettingsUpdate {
    pub command: Option<String>,
    pub models_path: Option<String>,
    pub default_language: Option<String>,
    pub timeout_secs: Option<u64>,
    pub hf_endpoint: Option<String>,
}