Use ElevenLabs only if configured

This commit is contained in:
Enrico Ros
2023-05-03 09:49:38 -07:00
parent 6d514108dd
commit 1dcdb3ba3e
2 changed files with 6 additions and 2 deletions
@@ -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);
@@ -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'));