pub struct Audio { /* private fields */ }Expand description
Client for interacting with the OpenAI Audio API.
This struct provides methods for text-to-speech, transcription, and translation.
Use Audio::new() to create a new instance.
§Example
use openai_tools::audio::request::{Audio, TtsOptions, Voice, AudioFormat};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = Audio::new()?;
let options = TtsOptions {
voice: Voice::Nova,
response_format: AudioFormat::Mp3,
..Default::default()
};
let bytes = audio.text_to_speech("Welcome to our app!", options).await?;
std::fs::write("welcome.mp3", bytes)?;
Ok(())
}Implementations§
Source§impl Audio
impl Audio
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Creates a new Audio client for OpenAI API.
Initializes the client by loading the OpenAI API key from
the environment variable OPENAI_API_KEY. Supports .env file loading
via dotenvy.
§Returns
Ok(Audio)- A new Audio client ready for useErr(OpenAIToolError)- If the API key is not found in the environment
§Example
use openai_tools::audio::request::Audio;
let audio = Audio::new().expect("API key should be set");Sourcepub fn with_auth(auth: AuthProvider) -> Self
pub fn with_auth(auth: AuthProvider) -> Self
Creates a new Audio client with a custom authentication provider
Sourcepub fn detect_provider() -> Result<Self>
pub fn detect_provider() -> Result<Self>
Creates a new Audio client by auto-detecting the provider
Sourcepub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
Creates a new Audio client with URL-based provider detection
Sourcepub fn from_url<S: Into<String>>(url: S) -> Result<Self>
pub fn from_url<S: Into<String>>(url: S) -> Result<Self>
Creates a new Audio client from URL using environment variables
Sourcepub fn auth(&self) -> &AuthProvider
pub fn auth(&self) -> &AuthProvider
Returns the authentication provider
Sourcepub async fn text_to_speech(
&self,
text: &str,
options: TtsOptions,
) -> Result<Vec<u8>>
pub async fn text_to_speech( &self, text: &str, options: TtsOptions, ) -> Result<Vec<u8>>
Converts text to speech.
Returns audio bytes in the specified format.
§Arguments
text- The text to convert to speech (max 4096 characters)options- TTS options (model, voice, format, speed)
§Returns
Ok(Vec<u8>)- The audio data as bytesErr(OpenAIToolError)- If the request fails
§Example
use openai_tools::audio::request::{Audio, TtsOptions, TtsModel, Voice};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = Audio::new()?;
let options = TtsOptions {
model: TtsModel::Tts1Hd,
voice: Voice::Shimmer,
speed: Some(1.2),
..Default::default()
};
let bytes = audio.text_to_speech("Hello, this is a test.", options).await?;
std::fs::write("speech.mp3", bytes)?;
Ok(())
}Sourcepub async fn transcribe(
&self,
audio_path: &str,
options: TranscribeOptions,
) -> Result<TranscriptionResponse>
pub async fn transcribe( &self, audio_path: &str, options: TranscribeOptions, ) -> Result<TranscriptionResponse>
Transcribes audio from a file path.
§Arguments
audio_path- Path to the audio fileoptions- Transcription options
§Returns
Ok(TranscriptionResponse)- The transcription resultErr(OpenAIToolError)- If the request fails
§Example
use openai_tools::audio::request::{Audio, TranscribeOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = Audio::new()?;
let options = TranscribeOptions {
language: Some("en".to_string()),
..Default::default()
};
let response = audio.transcribe("audio.mp3", options).await?;
println!("Transcription: {}", response.text);
Ok(())
}Sourcepub async fn transcribe_bytes(
&self,
audio_data: &[u8],
filename: &str,
options: TranscribeOptions,
) -> Result<TranscriptionResponse>
pub async fn transcribe_bytes( &self, audio_data: &[u8], filename: &str, options: TranscribeOptions, ) -> Result<TranscriptionResponse>
Transcribes audio from bytes.
§Arguments
audio_data- The audio data as bytesfilename- The filename with extension (e.g., “audio.mp3”)options- Transcription options
§Returns
Ok(TranscriptionResponse)- The transcription resultErr(OpenAIToolError)- If the request fails
§Example
use openai_tools::audio::request::{Audio, TranscribeOptions, SttModel};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = Audio::new()?;
let audio_data = std::fs::read("recording.mp3")?;
let options = TranscribeOptions {
model: Some(SttModel::Whisper1),
..Default::default()
};
let response = audio.transcribe_bytes(&audio_data, "recording.mp3", options).await?;
println!("Transcription: {}", response.text);
Ok(())
}Sourcepub async fn translate(
&self,
audio_path: &str,
options: TranslateOptions,
) -> Result<TranscriptionResponse>
pub async fn translate( &self, audio_path: &str, options: TranslateOptions, ) -> Result<TranscriptionResponse>
Translates audio to English text.
Only supports translation to English using the whisper-1 model.
§Arguments
audio_path- Path to the audio fileoptions- Translation options
§Returns
Ok(TranscriptionResponse)- The translation resultErr(OpenAIToolError)- If the request fails
§Example
use openai_tools::audio::request::{Audio, TranslateOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let audio = Audio::new()?;
let options = TranslateOptions::default();
let response = audio.translate("french_audio.mp3", options).await?;
println!("English translation: {}", response.text);
Ok(())
}Sourcepub async fn translate_bytes(
&self,
audio_data: &[u8],
filename: &str,
options: TranslateOptions,
) -> Result<TranscriptionResponse>
pub async fn translate_bytes( &self, audio_data: &[u8], filename: &str, options: TranslateOptions, ) -> Result<TranscriptionResponse>
Auto Trait Implementations§
impl Freeze for Audio
impl RefUnwindSafe for Audio
impl Send for Audio
impl Sync for Audio
impl Unpin for Audio
impl UnsafeUnpin for Audio
impl UnwindSafe for Audio
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more