Skip to main content

zai_rs/model/audio_to_text/
response.rs

1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4/// ASR transcription response
5#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
6pub struct AudioToTextResponse {
7    /// Task ID
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub id: Option<String>,
10
11    /// Request created time, Unix timestamp (seconds)
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub created: Option<u64>,
14
15    /// Client-provided request id
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub request_id: Option<String>,
18
19    /// Model name
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub model: Option<String>,
22
23    /// Segmented ASR content
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub segments: Option<Vec<SegmentItem>>,
26
27    /// Full transcription text
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub text: Option<String>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
33pub struct SegmentItem {
34    /// Segment index
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub id: Option<i32>,
37    /// Segment start time
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub start: Option<f32>,
40    /// Segment end time
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub end: Option<f32>,
43    /// Segment text
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub text: Option<String>,
46}