diff --git a/src/modules/elevenlabs/ElevenlabsSettings.tsx b/src/modules/elevenlabs/ElevenlabsSettings.tsx index b57987a52..0d808f54c 100644 --- a/src/modules/elevenlabs/ElevenlabsSettings.tsx +++ b/src/modules/elevenlabs/ElevenlabsSettings.tsx @@ -12,7 +12,7 @@ import { Section } from '@/common/components/Section'; import { settingsGap } from '@/common/theme'; import { useSettingsStore } from '@/common/state/store-settings'; -import { isValidElevenLabsApiKey, requireUserKeyElevenLabs, useElevenLabsVoices } from './elevenlabs.client'; +import { isElevenLabsEnabled, requireUserKeyElevenLabs, useElevenLabsVoices } from './elevenlabs.client'; export function ElevenlabsSettings() { @@ -27,7 +27,7 @@ export function ElevenlabsSettings() { }), shallow); const requiresKey = requireUserKeyElevenLabs; - const isValidKey = apiKey ? isValidElevenLabsApiKey(apiKey) : !requiresKey; + const isValidKey = isElevenLabsEnabled(apiKey); const { voicesData, loadingVoices } = useElevenLabsVoices(apiKey, isValidKey); diff --git a/src/modules/elevenlabs/elevenlabs.client.ts b/src/modules/elevenlabs/elevenlabs.client.ts index 987cc10b4..61f64ae33 100644 --- a/src/modules/elevenlabs/elevenlabs.client.ts +++ b/src/modules/elevenlabs/elevenlabs.client.ts @@ -7,11 +7,15 @@ export const requireUserKeyElevenLabs = !process.env.HAS_SERVER_KEY_ELEVENLABS; export const isValidElevenLabsApiKey = (apiKey?: string) => !!apiKey && apiKey.trim()?.length >= 32; +export const isElevenLabsEnabled = (apiKey?: string) => apiKey ? isValidElevenLabsApiKey(apiKey) : !requireUserKeyElevenLabs; + export async function speakText(text: string) { if (!(text?.trim())) return; const { elevenLabsApiKey, elevenLabsVoiceId, preferredLanguage } = useSettingsStore.getState(); + if (!isElevenLabsEnabled(elevenLabsApiKey)) return; + try { // NOTE: hardcoded 1000 as a failsafe, since the API will take very long and consume lots of credits for longer texts const nonEnglish = !(preferredLanguage.toLowerCase().startsWith('en'));