Accept /audio base URLs when validating ASR transcription endpoint

Some OpenAI-compatible deployments expose ASR under a base URL that already ends with /audio. ASR validation now treats that as a valid prefix and appends only /transcriptions to avoid generating /audio/audio/transcriptions.

Constraint: Keep ASR validation URL normalization conservative and backwards-compatible

Rejected: Full URL path rewrite heuristics | risk of breaking custom reverse-proxy layouts

Confidence: high

Scope-risk: narrow

Tested: cargo test -q
This commit is contained in:
H-Chris233 committed 2026-05-04 20:51:40 +08:00
1 parent 73dbd4cef7
commit fd60f815c0
1 file changed
+7
@@ -300,6 +300,9 @@ fn asr_transcriptions_url(base_url: &str) -> Result<String, String> {
if trimmed.ends_with("/audio/transcriptions") {
return Ok(trimmed.to_string());
}
if trimmed.ends_with("/audio") {
return Ok(format!("{trimmed}/transcriptions"));
}
Ok(format!("{trimmed}/audio/transcriptions"))
}
@@ -734,6 +737,10 @@ mod tests {
asr_transcriptions_url("https://api.openai.com/v1").unwrap(),
"https://api.openai.com/v1/audio/transcriptions"
);
assert_eq!(
asr_transcriptions_url("https://api.openai.com/v1/audio").unwrap(),
"https://api.openai.com/v1/audio/transcriptions"
);
assert_eq!(
asr_transcriptions_url("https://api.openai.com/v1/audio/transcriptions").unwrap(),
"https://api.openai.com/v1/audio/transcriptions"