gproxy_protocol/wire/gemini/
audio.rs1use crate::Rest;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
6#[serde(rename_all = "camelCase")]
7#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
8#[derive(gproxy_protocol_macros::DeclaredFields)]
9pub struct AudioTranscriptionConfig {
10 #[serde(alias = "language_codes")]
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub language_codes: Option<Vec<String>>,
13 #[serde(alias = "language_auto")]
14 #[serde(default, skip_serializing_if = "Option::is_none")]
15 pub language_auto: Option<LanguageAuto>,
16 #[serde(alias = "language_hints")]
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub language_hints: Option<LanguageHints>,
19 #[serde(alias = "custom_vocabulary")]
20 #[serde(default, skip_serializing_if = "Option::is_none")]
21 pub custom_vocabulary: Option<Vec<String>>,
22 #[serde(alias = "adaptation_phrases")]
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub adaptation_phrases: Option<Vec<String>>,
25 #[serde(alias = "word_timestamp")]
26 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub word_timestamp: Option<bool>,
28 #[serde(default, skip_serializing_if = "Option::is_none")]
29 pub diarization: Option<bool>,
30 #[serde(default, skip_serializing_if = "Option::is_none")]
31 pub mode: Option<AudioTranscriptionMode>,
32 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
33 pub rest: Rest,
34}
35
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
37#[serde(rename_all = "camelCase")]
38#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
39#[derive(gproxy_protocol_macros::DeclaredFields)]
40pub struct LanguageAuto {
41 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
42 pub rest: Rest,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
46#[serde(rename_all = "camelCase")]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48#[derive(gproxy_protocol_macros::DeclaredFields)]
49pub struct LanguageHints {
50 #[serde(alias = "language_codes")]
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub language_codes: Option<Vec<String>>,
53 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
54 pub rest: Rest,
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
58#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
59#[derive(gproxy_protocol_macros::DeclaredFields)]
60pub enum AudioTranscriptionMode {
61 #[serde(rename = "MODE_UNSPECIFIED")]
62 ModeUnspecified,
63 #[serde(rename = "VERBATIM")]
64 Verbatim,
65 #[serde(rename = "SMART")]
66 Smart,
67}
68
69#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
70#[serde(rename_all = "camelCase")]
71#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
72#[derive(gproxy_protocol_macros::DeclaredFields)]
73pub struct TranslationConfig {
74 #[serde(alias = "echo_target_language")]
75 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub echo_target_language: Option<bool>,
77 #[serde(alias = "target_language_code")]
78 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub target_language_code: Option<String>,
80 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
81 pub rest: Rest,
82}
83#[derive(
84 Debug,
85 Clone,
86 PartialEq,
87 Serialize,
88 Deserialize,
89 gproxy_protocol_macros::WireBuilder,
90 gproxy_protocol_macros::DeclaredFields,
91)]
92#[serde(rename_all = "camelCase")]
93#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
94pub struct SpeechMetadata {
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub speaker: Option<String>,
97 #[serde(skip_serializing_if = "Option::is_none")]
98 pub style: Option<String>,
99 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
100 pub rest: Rest,
101}
102
103#[derive(
104 Debug,
105 Clone,
106 PartialEq,
107 Serialize,
108 Deserialize,
109 gproxy_protocol_macros::WireBuilder,
110 gproxy_protocol_macros::DeclaredFields,
111)]
112#[serde(rename_all = "camelCase")]
113#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
114pub struct AudioTranscription {
115 pub text: String,
116 #[serde(alias = "speaker_label")]
117 #[serde(skip_serializing_if = "Option::is_none")]
118 pub speaker_label: Option<String>,
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub words: Option<Vec<WordInfo>>,
121 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
122 pub rest: Rest,
123}
124
125#[derive(
126 Debug,
127 Clone,
128 PartialEq,
129 Serialize,
130 Deserialize,
131 gproxy_protocol_macros::WireBuilder,
132 gproxy_protocol_macros::DeclaredFields,
133)]
134#[serde(rename_all = "camelCase")]
135#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
136pub struct WordInfo {
137 pub word: String,
138 #[serde(alias = "start_offset")]
139 #[serde(skip_serializing_if = "Option::is_none")]
140 pub start_offset: Option<String>,
141 #[serde(alias = "end_offset")]
142 #[serde(skip_serializing_if = "Option::is_none")]
143 pub end_offset: Option<String>,
144 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
145 pub rest: Rest,
146}