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 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