#![allow(unused_imports)]
use serde::{Deserialize, Serialize};
use super::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum SpeechCreateParamsResponseFormat {
#[serde(rename = "mp3")]
Mp3,
#[serde(rename = "opus")]
Opus,
#[serde(rename = "aac")]
Aac,
#[serde(rename = "flac")]
Flac,
#[serde(rename = "wav")]
Wav,
#[serde(rename = "pcm")]
Pcm,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum SpeechCreateParamsStreamFormat {
#[serde(rename = "sse")]
Sse,
#[serde(rename = "audio")]
Audio,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct SpeechCreateParams {
pub input: String,
pub model: String,
pub voice: Voice,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub response_format: Option<SpeechCreateParamsResponseFormat>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub speed: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub stream_format: Option<SpeechCreateParamsStreamFormat>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct VoiceID {
pub id: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum Voice {
Alloy,
Ash,
Ballad,
Coral,
Echo,
Sage,
Shimmer,
Verse,
Marin,
Cedar,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum SpeechModel {
#[serde(rename = "tts-1")]
Tts1,
#[serde(rename = "tts-1-hd")]
Tts1Hd,
#[serde(rename = "gpt-4o-mini-tts")]
Gpt4oMiniTts,
#[serde(rename = "gpt-4o-mini-tts-2025-12-15")]
Gpt4oMiniTts20251215,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct Logprob {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub bytes: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub logprob: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageTokensInputTokenDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageTokens {
pub input_tokens: i64,
pub output_tokens: i64,
pub total_tokens: i64,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub input_token_details: Option<UsageTokensInputTokenDetails>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageDuration {
pub seconds: f64,
#[serde(rename = "type")]
pub type_: String,
}
pub type Usage = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionCreateParamsBase {
pub file: serde_json::Value,
pub model: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub chunking_strategy: Option<ChunkingStrategy>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub include: Option<Vec<TranscriptionInclude>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub known_speaker_names: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub known_speaker_references: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub language: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub response_format: Option<AudioResponseFormat>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub timestamp_granularities: Option<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ChunkingStrategyVadConfig {
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prefix_padding_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub silence_duration_ms: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub threshold: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ChunkingStrategy {
Auto,
}
pub type TranscriptionCreateParams = serde_json::Value;
pub type TranscriptionCreateResponse = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionDiarized {
pub duration: f64,
pub segments: Vec<TranscriptionDiarizedSegment>,
pub task: String,
pub text: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub usage: Option<Usage>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionDiarizedSegment {
pub id: String,
pub end: f64,
pub speaker: String,
pub start: f64,
pub text: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum TranscriptionInclude {
#[serde(rename = "logprobs")]
Logprobs,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionSegment {
pub id: i64,
pub avg_logprob: f64,
pub compression_ratio: f64,
pub end: f64,
pub no_speech_prob: f64,
pub seek: i64,
pub start: f64,
pub temperature: f64,
pub text: String,
pub tokens: Vec<i64>,
}
pub type TranscriptionStreamEvent = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionTextDeltaEvent {
pub delta: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub logprobs: Option<Vec<Logprob>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub segment_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct UsageInputTokenDetails {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub audio_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub text_tokens: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionTextDoneEvent {
pub text: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub logprobs: Option<Vec<Logprob>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub usage: Option<Usage>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionTextSegmentEvent {
pub id: String,
pub end: f64,
pub speaker: String,
pub start: f64,
pub text: String,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionVerbose {
pub duration: f64,
pub language: String,
pub text: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub segments: Option<Vec<TranscriptionSegment>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub usage: Option<Usage>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub words: Option<Vec<TranscriptionWord>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranscriptionWord {
pub end: f64,
pub start: f64,
pub word: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum TranslationCreateParamsResponseFormat {
#[serde(rename = "json")]
Json,
#[serde(rename = "text")]
Text,
#[serde(rename = "srt")]
Srt,
#[serde(rename = "verbose_json")]
VerboseJson,
#[serde(rename = "vtt")]
Vtt,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranslationCreateParams {
pub file: serde_json::Value,
pub model: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub response_format: Option<TranslationCreateParamsResponseFormat>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub temperature: Option<f64>,
}
pub type TranslationCreateResponse = serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct TranslationVerbose {
pub duration: f64,
pub language: String,
pub text: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub segments: Option<Vec<TranscriptionSegment>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum AudioModel {
#[serde(rename = "whisper-1")]
Whisper1,
#[serde(rename = "gpt-4o-transcribe")]
Gpt4oTranscribe,
#[serde(rename = "gpt-4o-mini-transcribe")]
Gpt4oMiniTranscribe,
#[serde(rename = "gpt-4o-mini-transcribe-2025-12-15")]
Gpt4oMiniTranscribe20251215,
#[serde(rename = "gpt-4o-transcribe-diarize")]
Gpt4oTranscribeDiarize,
}