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