openai_tools/realtime/
audio.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
7#[serde(rename_all = "snake_case")]
8#[non_exhaustive]
9pub enum AudioFormat {
10 #[default]
12 Pcm16,
13 G711Ulaw,
15 G711Alaw,
17}
18
19#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
21#[serde(rename_all = "lowercase")]
22#[non_exhaustive]
23pub enum Voice {
24 #[default]
25 Alloy,
26 Ash,
27 Ballad,
28 Coral,
29 Echo,
30 Sage,
31 Shimmer,
32 Verse,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
37#[non_exhaustive]
38pub enum TranscriptionModel {
39 #[serde(rename = "whisper-1")]
40 #[default]
41 Whisper1,
42}
43
44#[derive(Debug, Clone, Default, Serialize, Deserialize)]
46pub struct InputAudioTranscription {
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub model: Option<TranscriptionModel>,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub language: Option<String>,
54
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub prompt: Option<String>,
58}
59
60impl InputAudioTranscription {
61 pub fn new(model: TranscriptionModel) -> Self {
63 Self { model: Some(model), language: None, prompt: None }
64 }
65
66 pub fn with_language(mut self, language: impl Into<String>) -> Self {
68 self.language = Some(language.into());
69 self
70 }
71
72 pub fn with_prompt(mut self, prompt: impl Into<String>) -> Self {
74 self.prompt = Some(prompt.into());
75 self
76 }
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct InputAudioNoiseReduction {
82 #[serde(rename = "type")]
84 pub noise_type: NoiseReductionType,
85}
86
87#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
89#[serde(rename_all = "snake_case")]
90#[non_exhaustive]
91pub enum NoiseReductionType {
92 NearField,
94 FarField,
96}