llm_sdk/
audio_part_utils.rs1use crate::{AudioFormat, LanguageModelError, LanguageModelResult};
2
3#[must_use]
4pub fn map_audio_format_to_mime_type(format: &AudioFormat) -> String {
5 match format {
6 AudioFormat::Wav => "audio/wav",
7 AudioFormat::Mp3 => "audio/mp3",
8 AudioFormat::Linear16 => "audio/l16",
9 AudioFormat::Flac => "audio/flac",
10 AudioFormat::Mulaw | AudioFormat::Alaw => "audio/basic",
11 AudioFormat::Aac => "audio/aac",
12 AudioFormat::Opus => "audio/opus",
13 }
14 .to_string()
15}
16
17pub fn map_mime_type_to_audio_format(mime_type: &str) -> LanguageModelResult<AudioFormat> {
21 let formatted_mime_type = mime_type
22 .split(';')
23 .next()
24 .unwrap_or(mime_type)
25 .trim()
26 .to_lowercase();
27 Ok(match formatted_mime_type.as_str() {
28 "audio/wav" => AudioFormat::Wav,
29 "audio/mp3" | "audio/mpeg" => AudioFormat::Mp3,
30 "audio/l16" => AudioFormat::Linear16,
31 "audio/flac" => AudioFormat::Flac,
32 "audio/basic" => AudioFormat::Mulaw, "audio/aac" => AudioFormat::Aac,
34 "audio/opus" => AudioFormat::Opus,
35 _ => Err(LanguageModelError::Invariant(
36 "",
37 format!("Unsupported audio mime type: {mime_type}"),
38 ))?,
39 })
40}