use super::openai_compat::OpenAiCompatTts;
pub const GROQ_SPEECH_URL: &str = "https://api.groq.com/openai/v1/audio/speech";
pub fn groq_backend(
api_key: String,
model: String,
voice: String,
response_format: String,
) -> OpenAiCompatTts {
OpenAiCompatTts::new(
GROQ_SPEECH_URL.to_string(),
Some(api_key),
model,
voice,
response_format,
)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::tts::TtsBackend;
#[tokio::test]
async fn synthesize_rejects_empty_text() {
let backend = groq_backend(
"test-key".to_string(),
"canopylabs/orpheus-v1-english".to_string(),
"autumn".to_string(),
"wav".to_string(),
);
let err = backend.synthesize(" ").await.unwrap_err();
assert!(err.to_string().contains("empty text"));
}
}