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")]
8pub enum AudioFormat {
9 #[default]
11 Pcm16,
12 G711Ulaw,
14 G711Alaw,
16}
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
20#[serde(rename_all = "lowercase")]
21pub enum Voice {
22 #[default]
23 Alloy,
24 Ash,
25 Ballad,
26 Coral,
27 Echo,
28 Sage,
29 Shimmer,
30 Verse,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
35pub enum TranscriptionModel {
36 #[serde(rename = "whisper-1")]
37 #[default]
38 Whisper1,
39 #[serde(rename = "gpt-4o-transcribe")]
40 Gpt4oTranscribe,
41 #[serde(rename = "gpt-4o-mini-transcribe")]
42 Gpt4oMiniTranscribe,
43 #[serde(rename = "gpt-4o-transcribe-diarize")]
44 Gpt4oTranscribeDiarize,
45}
46
47#[derive(Debug, Clone, Default, Serialize, Deserialize)]
49pub struct InputAudioTranscription {
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub model: Option<TranscriptionModel>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub language: Option<String>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub prompt: Option<String>,
61}
62
63impl InputAudioTranscription {
64 pub fn new(model: TranscriptionModel) -> Self {
66 Self { model: Some(model), language: None, prompt: None }
67 }
68
69 pub fn with_language(mut self, language: impl Into<String>) -> Self {
71 self.language = Some(language.into());
72 self
73 }
74
75 pub fn with_prompt(mut self, prompt: impl Into<String>) -> Self {
77 self.prompt = Some(prompt.into());
78 self
79 }
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct InputAudioNoiseReduction {
85 #[serde(rename = "type")]
87 pub noise_type: NoiseReductionType,
88}
89
90#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
92#[serde(rename_all = "snake_case")]
93pub enum NoiseReductionType {
94 NearField,
96 FarField,
98}