From 91a179eab99c4841480b64db2be9359249270923 Mon Sep 17 00:00:00 2001 From: flukexp Date: Fri, 12 Apr 2024 01:01:10 +0700 Subject: [PATCH 1/5] added support for coqui local tts server --- src/components/settings.tsx | 17 +++++- .../settings/CoquiLocalSettingsPage.tsx | 61 +++++++++++++++++++ src/components/settings/TTSBackendPage.tsx | 3 +- src/components/settings/common.tsx | 2 + src/features/chat/chat.ts | 5 ++ src/features/coquiLocal/coquiLocal.ts | 29 +++++++++ src/utils/config.ts | 2 + 7 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/components/settings/CoquiLocalSettingsPage.tsx create mode 100644 src/features/coquiLocal/coquiLocal.ts diff --git a/src/components/settings.tsx b/src/components/settings.tsx index 5c9e2bce..3fcfa1fb 100644 --- a/src/components/settings.tsx +++ b/src/components/settings.tsx @@ -48,6 +48,8 @@ import { OpenAITTSSettingsPage } from './settings/OpenAITTSSettingsPage'; import { PiperSettingsPage } from './settings/PiperSettingsPage'; +import { CoquiLocalSettingsPage } from './settings/CoquiLocalSettingsPage'; + import { STTBackendPage } from './settings/STTBackendPage'; import { STTWakeWordSettingsPage } from './settings/STTWakeWordSettingsPage'; @@ -101,6 +103,9 @@ export const Settings = ({ const [piperUrl, setPiperUrl] = useState(config("piper_url")); + const [coquiLocalUrl, setCoquiLocalUrl] = useState(config("coquiLocal_url")); + const [coquiLocalVoiceId, setCoquiLocalVoiceId] = useState(config("coquiLocal_voiceid")); + const [visionBackend, setVisionBackend] = useState(config("vision_backend")); const [visionLlamaCppUrl, setVisionLlamaCppUrl] = useState(config("vision_llamacpp_url")); const [visionOllamaUrl, setVisionOllamaUrl] = useState(config("vision_ollama_url")); @@ -214,6 +219,7 @@ export const Settings = ({ coquiApiKey, coquiVoiceId, openAITTSApiKey, openAITTSUrl, openAITTSModel, openAITTSVoice, piperUrl, + coquiLocalUrl,coquiLocalVoiceId, visionBackend, visionLlamaCppUrl, visionOllamaUrl, visionOllamaModel, @@ -253,7 +259,7 @@ export const Settings = ({ case 'tts': return ; case 'stt': @@ -411,6 +417,15 @@ export const Settings = ({ setPiperUrl={setPiperUrl} setSettingsUpdated={setSettingsUpdated} /> + + case 'coquiLocal_settings': + return case'stt_backend': return void; + setSettingsUpdated: (updated: boolean) => void; + setCoquiLocalVoiceId: (key: string) => void; +}) { + const { t } = useTranslation(); + + return ( + + { config("tts_backend") !== "coquiLocal" && ( + + {t("not_using_alert", "You are not currently using {{name}} as your {{what}} backend. These settings will not be used.", {name: t("CoquiLocal"), what: t("TTS")})} + + ) } +
    +
  • + + ) => { + setCoquiLocalUrl(event.target.value); + updateConfig("coquiLocal_url", event.target.value); + setSettingsUpdated(true); + }} + /> +
  • + + ) => { + event.preventDefault(); + setCoquiLocalVoiceId(event.target.value); + updateConfig("coquiLocal_voiceid", event.target.value); + setSettingsUpdated(true); + }} + /> + +
  • + + +
+
+ ); +} \ No newline at end of file diff --git a/src/components/settings/TTSBackendPage.tsx b/src/components/settings/TTSBackendPage.tsx index d495743c..3540ed30 100644 --- a/src/components/settings/TTSBackendPage.tsx +++ b/src/components/settings/TTSBackendPage.tsx @@ -11,6 +11,7 @@ const ttsEngines = [ {key: "openai_tts", label: "OpenAI TTS"}, {key: "localXTTS", label: "Local XTTS"}, // Our local TTS endpoint (XTTS based) {key: "piper", label: "Piper"}, + {key: "coquiLocal", label: "Coqui Local"}, ]; function idToTitle(id: string): string { @@ -57,7 +58,7 @@ export function TTSBackendPage({ - { ["elevenlabs", "speecht5", "coqui", "openai_tts", "piper"].includes(ttsBackend) && ( + { ["elevenlabs", "speecht5", "coqui", "openai_tts", "piper", "coquiLocal"].includes(ttsBackend) && (