native_whisperx/config/
selection.rs1use 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}