diff --git a/src/tts/tts.ts b/src/tts/tts.ts index b1177ce5542..8a2200dff32 100644 --- a/src/tts/tts.ts +++ b/src/tts/tts.ts @@ -519,6 +519,14 @@ export function isTtsProviderConfigured(config: ResolvedTtsConfig, provider: Tts return Boolean(resolveTtsApiKey(config, provider)); } +function formatTtsProviderError(provider: TtsProvider, err: unknown): string { + const error = err instanceof Error ? err : new Error(String(err)); + if (error.name === "AbortError") { + return `${provider}: request timed out`; + } + return `${provider}: ${error.message}`; +} + export async function textToSpeech(params: { text: string; cfg: OpenClawConfig; @@ -675,12 +683,7 @@ export async function textToSpeech(params: { voiceCompatible: output.voiceCompatible, }; } catch (err) { - const error = err as Error; - if (error.name === "AbortError") { - lastError = `${provider}: request timed out`; - } else { - lastError = `${provider}: ${error.message}`; - } + lastError = formatTtsProviderError(provider, err); } } @@ -769,12 +772,7 @@ export async function textToSpeechTelephony(params: { sampleRate: output.sampleRate, }; } catch (err) { - const error = err as Error; - if (error.name === "AbortError") { - lastError = `${provider}: request timed out`; - } else { - lastError = `${provider}: ${error.message}`; - } + lastError = formatTtsProviderError(provider, err); } }