diff --git a/apps/stage-tamagotchi/src/pages/settings/modules/speech.vue b/apps/stage-tamagotchi/src/pages/settings/modules/speech.vue index 843ae10f4..508f10a2b 100644 --- a/apps/stage-tamagotchi/src/pages/settings/modules/speech.vue +++ b/apps/stage-tamagotchi/src/pages/settings/modules/speech.vue @@ -18,6 +18,7 @@ import { FieldRange, Textarea, } from '@proj-airi/ui' +import { watchDebounced } from '@vueuse/core' import { generateSpeech } from '@xsai/generate-speech' import { storeToRefs } from 'pinia' import { onMounted, onUnmounted, ref, watch } from 'vue' @@ -59,9 +60,19 @@ onMounted(async () => { await speechStore.loadVoicesForProvider(activeSpeechProvider.value) }) -watch(activeSpeechProvider, async () => { +watchDebounced(activeSpeechProvider, async () => { await providersStore.loadModelsForConfiguredProviders() await speechStore.loadVoicesForProvider(activeSpeechProvider.value) +}, { debounce: 100 }) + +watch(activeSpeechVoiceId, (newId) => { + if (newId) { + const voices = availableVoices.value[activeSpeechProvider.value] || [] + const existingVoice = voices.find(voice => voice.id === newId) + if (!existingVoice) { + updateCustomVoiceName(newId) + } + } }) // Function to generate speech diff --git a/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-speech.vue b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-speech.vue new file mode 100644 index 000000000..0a7bf7c7b --- /dev/null +++ b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-speech.vue @@ -0,0 +1,177 @@ + + + + + + meta: + layout: settings + stageTransition: + name: slide + diff --git a/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-transcription.vue b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-transcription.vue new file mode 100644 index 000000000..8a431ddee --- /dev/null +++ b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible-audio-transcription.vue @@ -0,0 +1,133 @@ + + + + + + meta: + layout: settings + stageTransition: + name: slide + diff --git a/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible.vue b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible.vue new file mode 100644 index 000000000..44b91ea40 --- /dev/null +++ b/apps/stage-tamagotchi/src/pages/settings/providers/openai-compatible.vue @@ -0,0 +1,106 @@ + + + + + + meta: + layout: settings + stageTransition: + name: slide + diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index bdf011d48..23fe6ea9c 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -423,6 +423,9 @@ pages: openai: description: openai.com title: OpenAI + openai-compatible: + description: OpenAI Compatible + title: OpenAI Compatible openrouter: description: openrouter.ai title: OpenRouter diff --git a/packages/i18n/src/locales/es/settings.yaml b/packages/i18n/src/locales/es/settings.yaml index 5e3bb5536..5149cef08 100644 --- a/packages/i18n/src/locales/es/settings.yaml +++ b/packages/i18n/src/locales/es/settings.yaml @@ -422,6 +422,9 @@ pages: openai: description: openai.com title: OpenAI + openai-compatible: + description: OpenAI Compatible + title: OpenAI Compatible openrouter: description: openrouter.ai title: OpenRouter diff --git a/packages/i18n/src/locales/zh-Hans/settings.yaml b/packages/i18n/src/locales/zh-Hans/settings.yaml index ba0dd48b4..730b64ee7 100644 --- a/packages/i18n/src/locales/zh-Hans/settings.yaml +++ b/packages/i18n/src/locales/zh-Hans/settings.yaml @@ -392,6 +392,9 @@ pages: openai: description: OpenAi.com title: OpenAI + openai-compatible: + description: OpenAI Compatible + title: OpenAI Compatible openrouter: description: OpenRouter.ai title: OpenRouter diff --git a/packages/stage-ui/src/components/Scenarios/Providers/OpenAICompatibleSpeechPlayground.vue b/packages/stage-ui/src/components/Scenarios/Providers/OpenAICompatibleSpeechPlayground.vue new file mode 100644 index 000000000..f4878abdb --- /dev/null +++ b/packages/stage-ui/src/components/Scenarios/Providers/OpenAICompatibleSpeechPlayground.vue @@ -0,0 +1,200 @@ + + +