From 953e979d22b09701dcb7992b1dd71a2f4d74965a Mon Sep 17 00:00:00 2001 From: Nicholas Broad Date: Fri, 29 May 2026 14:36:00 -0700 Subject: [PATCH] Default Orpheus TTS voice to tara on Together provider. Together requires a voice for /v1/audio/speech; apply the same per-model default pattern used for Kokoro so Orpheus callers do not need to pass one explicitly. Co-authored-by: Cursor --- packages/inference/src/providers/together.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/inference/src/providers/together.ts b/packages/inference/src/providers/together.ts index 42550d088f..0737696402 100644 --- a/packages/inference/src/providers/together.ts +++ b/packages/inference/src/providers/together.ts @@ -531,10 +531,14 @@ export class TogetherTextToSpeechTask extends TaskProviderHelper implements Text preparePayload(params: BodyParams): Record { const userParams = (params.args.parameters as Record | undefined) ?? {}; // Together's /v1/audio/speech requires a `voice` field. Voices are model-specific - // (Kokoro accepts `af_*`, Orpheus uses different names, etc.), so we only default - // when the target model is Kokoro — the only TTS model currently registered. - const isKokoro = params.model.toLowerCase().includes("kokoro"); - const voice = userParams.voice ?? (isKokoro ? "af_alloy" : undefined); + // (Kokoro accepts `af_*`, Orpheus uses different names, etc.), so we default per model. + const model = params.model.toLowerCase(); + const defaultVoice = model.includes("kokoro") + ? "af_alloy" + : model.includes("orpheus") + ? "tara" + : undefined; + const voice = userParams.voice ?? defaultVoice; return { ...omit(params.args, ["inputs", "parameters"]),