Skip to main content

native_whisperx/config/
selection.rs

1//! Shared configuration selection metadata for automatic Workflow Composition.
2
3use std::path::PathBuf;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
8#[serde(rename_all = "lowercase")]
9pub enum ConfigSelection {
10    Automatic,
11    #[default]
12    Explicit,
13}
14
15impl ConfigSelection {
16    pub fn is_explicit(&self) -> bool {
17        matches!(self, Self::Explicit)
18    }
19
20    pub fn is_automatic(&self) -> bool {
21        matches!(self, Self::Automatic)
22    }
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct AutomaticWorkflowSelection {
28    pub config: super::request::NativeWhisperxConfig,
29    #[serde(default, skip_serializing_if = "Vec::is_empty")]
30    pub decisions: Vec<AutomaticWorkflowSelectionDecision>,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct AutomaticWorkflowSelectionDecision {
36    pub target: AutomaticWorkflowSelectionResource,
37    pub selection: ConfigSelection,
38    pub model_id: Option<String>,
39    pub source: ModelResourceSource,
40    pub path: Option<PathBuf>,
41}
42
43#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45pub enum AutomaticWorkflowSelectionResource {
46    Vad,
47    Diarization,
48}
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
51#[serde(rename_all = "kebab-case")]
52pub enum ModelResourceSource {
53    ExistingEnergyVad,
54    ExplicitConfig,
55    ModelDir,
56    HuggingFaceCache,
57    Unresolved,
58    HuggingFaceDownload,
59}