diff --git a/src/tts/tts.ts b/src/tts/tts.ts index 8a2200dff..edfa8eda6 100644 --- a/src/tts/tts.ts +++ b/src/tts/tts.ts @@ -551,14 +551,14 @@ export async function textToSpeech(params: { const provider = overrideProvider ?? userProvider; const providers = resolveTtsProviderOrder(provider); - let lastError: string | undefined; + const errors: string[] = []; for (const provider of providers) { const providerStart = Date.now(); try { if (provider === "edge") { if (!config.edge.enabled) { - lastError = "edge: disabled"; + errors.push("edge: disabled"); continue; } @@ -626,7 +626,7 @@ export async function textToSpeech(params: { const apiKey = resolveTtsApiKey(config, provider); if (!apiKey) { - lastError = `No API key for ${provider}`; + errors.push(`${provider}: no API key`); continue; } @@ -683,13 +683,13 @@ export async function textToSpeech(params: { voiceCompatible: output.voiceCompatible, }; } catch (err) { - lastError = formatTtsProviderError(provider, err); + errors.push(formatTtsProviderError(provider, err)); } } return { success: false, - error: `TTS conversion failed: ${lastError || "no providers available"}`, + error: `TTS conversion failed: ${errors.join("; ") || "no providers available"}`, }; } @@ -711,19 +711,19 @@ export async function textToSpeechTelephony(params: { const userProvider = getTtsProvider(config, prefsPath); const providers = resolveTtsProviderOrder(userProvider); - let lastError: string | undefined; + const errors: string[] = []; for (const provider of providers) { const providerStart = Date.now(); try { if (provider === "edge") { - lastError = "edge: unsupported for telephony"; + errors.push("edge: unsupported for telephony"); continue; } const apiKey = resolveTtsApiKey(config, provider); if (!apiKey) { - lastError = `No API key for ${provider}`; + errors.push(`${provider}: no API key`); continue; } @@ -772,13 +772,13 @@ export async function textToSpeechTelephony(params: { sampleRate: output.sampleRate, }; } catch (err) { - lastError = formatTtsProviderError(provider, err); + errors.push(formatTtsProviderError(provider, err)); } } return { success: false, - error: `TTS conversion failed: ${lastError || "no providers available"}`, + error: `TTS conversion failed: ${errors.join("; ") || "no providers available"}`, }; }