From ffa5f6f09b646ebbbaa2312aa511402662a91c75 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Sun, 24 Nov 2024 01:14:17 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=8A=20feat:=20refine=20SDK=20usage=20l?= =?UTF-8?q?ogic=20in=20STT=20and=20TTS=20services,=20improve=20header=20ha?= =?UTF-8?q?ndling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/server/services/Files/Audio/STTService.js | 6 +++--- api/server/services/Files/Audio/TTSService.js | 21 +++++++++---------- .../components/Chat/Messages/HoverButtons.tsx | 2 +- .../components/Chat/Messages/MessageAudio.tsx | 1 - client/src/hooks/Audio/useTTSBrowser.ts | 1 - client/src/hooks/Audio/useTTSEdge.ts | 1 - client/src/hooks/Audio/useTTSExternal.ts | 1 - 7 files changed, 14 insertions(+), 19 deletions(-) diff --git a/api/server/services/Files/Audio/STTService.js b/api/server/services/Files/Audio/STTService.js index 78f176372..19f54a688 100644 --- a/api/server/services/Files/Audio/STTService.js +++ b/api/server/services/Files/Audio/STTService.js @@ -214,12 +214,12 @@ class STTService { } // TODO: Implement a better way to determine if the SDK should be used - shouldUseSDK(provider, sttSchema) { - if (provider !== STTProviders.OPENAI && provider !== STTProviders.AZURE_OPENAI) { + shouldUseSDK(provider) { + if (provider === STTProviders.DEEPGRAM) { return true; } - return typeof sttSchema.url === 'string' && sttSchema.url.trim().length > 0; + return false; } /** diff --git a/api/server/services/Files/Audio/TTSService.js b/api/server/services/Files/Audio/TTSService.js index 0aec5a64b..0207e923c 100644 --- a/api/server/services/Files/Audio/TTSService.js +++ b/api/server/services/Files/Audio/TTSService.js @@ -23,7 +23,6 @@ class TTSService { [TTSProviders.AZURE_OPENAI]: this.azureOpenAIProvider.bind(this), [TTSProviders.ELEVENLABS]: this.elevenLabsProvider.bind(this), [TTSProviders.LOCALAI]: this.localAIProvider.bind(this), - [TTSProviders.ELEVENLABS]: this.elevenLabsProvider.bind(this), }; this.sdkStrategies = { @@ -129,7 +128,9 @@ class TTSService { const headers = { 'Content-Type': 'application/json', - Authorization: `Bearer ${extractEnvVariable(ttsSchema?.apiKey)}`, + Authorization: `${ + ttsSchema.apiKey ? 'Bearer ' + extractEnvVariable(ttsSchema.apiKey) : undefined + }`, }; return [url, data, headers]; @@ -199,7 +200,7 @@ class TTSService { const headers = { 'Content-Type': 'application/json', - 'xi-api-key': extractEnvVariable(ttsSchema?.apiKey), + 'xi-api-key': ttsSchema.apiKey ? extractEnvVariable(ttsSchema.apiKey) : '', Accept: 'audio/mpeg', }; @@ -229,13 +230,11 @@ class TTSService { const headers = { 'Content-Type': 'application/json', - Authorization: `Bearer ${extractEnvVariable(ttsSchema?.apiKey)}`, + Authorization: `${ + ttsSchema.apiKey ? 'Bearer ' + extractEnvVariable(ttsSchema.apiKey) : undefined + }`, }; - if (extractEnvVariable(ttsSchema.apiKey) === '') { - delete headers.Authorization; - } - return [url, data, headers]; } @@ -314,12 +313,12 @@ class TTSService { } // TODO: Implement a better way to determine if the SDK should be used - shouldUseSDK(provider, sttSchema) { + shouldUseSDK(provider) { if (provider == TTSProviders.DEEPGRAM) { return true; } - return typeof sttSchema.url === 'string' && sttSchema.url.trim().length > 0; + return false; } /** @@ -335,7 +334,7 @@ class TTSService { * @throws {Error} If the provider is invalid or the request fails. */ async ttsRequest(provider, ttsSchema, { input, voice, stream = true }) { - const useSDK = this.shouldUseSDK(provider, ttsSchema); + const useSDK = this.shouldUseSDK(provider); const strategy = useSDK ? this.sdkStrategies[provider] : this.apiStrategies[provider]; if (!strategy) { diff --git a/client/src/components/Chat/Messages/HoverButtons.tsx b/client/src/components/Chat/Messages/HoverButtons.tsx index 950c4a7f9..e113ec8cf 100644 --- a/client/src/components/Chat/Messages/HoverButtons.tsx +++ b/client/src/components/Chat/Messages/HoverButtons.tsx @@ -79,7 +79,7 @@ export default function HoverButtons({ messageId={message.messageId} content={message.content ?? message.text} isLast={isLast} - className="hover-button rounded-md p-1 pl-0 text-gray-500 hover:bg-gray-100 hover:text-gray-500 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible" + className="hover-button rounded-md p-1 hover:bg-gray-100 hover:text-gray-500 focus:opacity-100 dark:text-gray-400/70 dark:hover:bg-gray-700 dark:hover:text-gray-200 disabled:dark:hover:text-gray-400 md:group-hover:visible md:group-[.final-completion]:visible" /> )} {isEditableEndpoint && ( diff --git a/client/src/components/Chat/Messages/MessageAudio.tsx b/client/src/components/Chat/Messages/MessageAudio.tsx index 4dd1f21fc..de35d1f7d 100644 --- a/client/src/components/Chat/Messages/MessageAudio.tsx +++ b/client/src/components/Chat/Messages/MessageAudio.tsx @@ -1,4 +1,3 @@ -// client/src/components/Chat/Messages/MessageAudio.tsx import { memo } from 'react'; import { useRecoilValue } from 'recoil'; import type { TMessageAudio } from '~/common'; diff --git a/client/src/hooks/Audio/useTTSBrowser.ts b/client/src/hooks/Audio/useTTSBrowser.ts index 9edd9a06e..41bae5dff 100644 --- a/client/src/hooks/Audio/useTTSBrowser.ts +++ b/client/src/hooks/Audio/useTTSBrowser.ts @@ -1,4 +1,3 @@ -// client/src/hooks/Audio/useTTSBrowser.ts import { useRef, useEffect, useState } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { parseTextParts } from 'librechat-data-provider'; diff --git a/client/src/hooks/Audio/useTTSEdge.ts b/client/src/hooks/Audio/useTTSEdge.ts index c757ad414..be5d5ef28 100644 --- a/client/src/hooks/Audio/useTTSEdge.ts +++ b/client/src/hooks/Audio/useTTSEdge.ts @@ -1,4 +1,3 @@ -// client/src/hooks/Audio/useTTSEdge.ts import { useRef, useEffect, useState } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { parseTextParts } from 'librechat-data-provider'; diff --git a/client/src/hooks/Audio/useTTSExternal.ts b/client/src/hooks/Audio/useTTSExternal.ts index d296abf4a..f1a8b560a 100644 --- a/client/src/hooks/Audio/useTTSExternal.ts +++ b/client/src/hooks/Audio/useTTSExternal.ts @@ -1,4 +1,3 @@ -// client/src/hooks/Audio/useTTSExternal.ts import { useRef, useEffect, useState } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { parseTextParts } from 'librechat-data-provider';