diff --git a/cspell.config.yaml b/cspell.config.yaml index c49c42d6f..7898c4f8e 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -40,6 +40,7 @@ words: - clustr - collectblock - colorjs + - cometapi - Comfortaa - composables - cooldown diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index 0d55df922..81aaadddf 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -568,6 +568,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: Transcription Playground diff --git a/packages/i18n/src/locales/es/settings.yaml b/packages/i18n/src/locales/es/settings.yaml index 1cb3abb18..cb2567e15 100644 --- a/packages/i18n/src/locales/es/settings.yaml +++ b/packages/i18n/src/locales/es/settings.yaml @@ -506,6 +506,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: Playground de Transcripción diff --git a/packages/i18n/src/locales/fr/settings.yaml b/packages/i18n/src/locales/fr/settings.yaml index c17c99ed9..0e250425b 100644 --- a/packages/i18n/src/locales/fr/settings.yaml +++ b/packages/i18n/src/locales/fr/settings.yaml @@ -509,6 +509,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: Terrain de test de transcription diff --git a/packages/i18n/src/locales/ru/settings.yaml b/packages/i18n/src/locales/ru/settings.yaml index df8372d71..2f39ada8e 100644 --- a/packages/i18n/src/locales/ru/settings.yaml +++ b/packages/i18n/src/locales/ru/settings.yaml @@ -490,6 +490,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: Песочница транскрипции diff --git a/packages/i18n/src/locales/vi/settings.yaml b/packages/i18n/src/locales/vi/settings.yaml index 6ff143a2b..ec65882a2 100644 --- a/packages/i18n/src/locales/vi/settings.yaml +++ b/packages/i18n/src/locales/vi/settings.yaml @@ -495,6 +495,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: Transcription Playground diff --git a/packages/i18n/src/locales/zh-Hans/settings.yaml b/packages/i18n/src/locales/zh-Hans/settings.yaml index 89399df24..b7eef8e3d 100644 --- a/packages/i18n/src/locales/zh-Hans/settings.yaml +++ b/packages/i18n/src/locales/zh-Hans/settings.yaml @@ -500,6 +500,9 @@ pages: 302-ai: description: 302.AI title: 302.AI + comet-api: + description: CometAPI.com + title: Comet API transcriptions: playground: title: 实验平台 diff --git a/packages/stage-pages/src/pages/settings/providers/speech/comet-api-speech.vue b/packages/stage-pages/src/pages/settings/providers/speech/comet-api-speech.vue new file mode 100644 index 000000000..87e9f3bc2 --- /dev/null +++ b/packages/stage-pages/src/pages/settings/providers/speech/comet-api-speech.vue @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + {{ t('settings.dialogs.onboarding.validationFailed') }} + + + + {{ validationMessage }} + + + + + + {{ t('settings.dialogs.onboarding.validationSuccess') }} + + + + + + + + + +meta: + layout: settings + stageTransition: + name: slide + diff --git a/packages/stage-pages/src/pages/settings/providers/transcription/comet-api-transcription.vue b/packages/stage-pages/src/pages/settings/providers/transcription/comet-api-transcription.vue new file mode 100644 index 000000000..bc6a46a56 --- /dev/null +++ b/packages/stage-pages/src/pages/settings/providers/transcription/comet-api-transcription.vue @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + {{ t('settings.dialogs.onboarding.validationFailed') }} + + + + {{ validationMessage }} + + + + + + {{ t('settings.dialogs.onboarding.validationSuccess') }} + + + + + + + + + +meta: + layout: settings + stageTransition: + name: slide + diff --git a/packages/stage-ui/src/stores/providers.ts b/packages/stage-ui/src/stores/providers.ts index 052dc6b0f..9148ce29a 100644 --- a/packages/stage-ui/src/stores/providers.ts +++ b/packages/stage-ui/src/stores/providers.ts @@ -39,6 +39,8 @@ import { createEmbedProvider, createMetadataProvider, createModelProvider, + createSpeechProvider, + createTranscriptionProvider, merge, } from '@xsai-ext/shared-providers' import { listModels } from '@xsai/model' @@ -1250,6 +1252,38 @@ export const useProvidersStore = defineStore('providers', () => { }, }, }, + 'comet-api-speech': buildOpenAICompatibleProvider({ + id: 'comet-api-speech', + name: 'CometAPI Speech', + nameKey: 'settings.pages.providers.provider.comet-api.title', + descriptionKey: 'settings.pages.providers.provider.comet-api.description', + icon: 'i-lobe-icons:cometapi', + description: 'cometapi.com', + category: 'speech', + tasks: ['text-to-speech'], + defaultBaseUrl: 'https://api.cometapi.com/v1/', + creator: (apiKey, baseURL = 'https://api.cometapi.com/v1/') => merge( + createModelProvider({ apiKey, baseURL }), + createSpeechProvider({ apiKey, baseURL }), + ), + validation: ['model_list'], + }), + 'comet-api-transcription': buildOpenAICompatibleProvider({ + id: 'comet-api-transcription', + name: 'CometAPI Transcription', + nameKey: 'settings.pages.providers.provider.comet-api.title', + descriptionKey: 'settings.pages.providers.provider.comet-api.description', + icon: 'i-lobe-icons:cometapi', + description: 'cometapi.com', + category: 'transcription', + tasks: ['speech-to-text', 'automatic-speech-recognition', 'asr', 'stt'], + defaultBaseUrl: 'https://api.cometapi.com/v1/', + creator: (apiKey, baseURL = 'https://api.cometapi.com/v1/') => merge( + createModelProvider({ apiKey, baseURL }), + createTranscriptionProvider({ apiKey, baseURL }), + ), + validation: ['model_list'], + }), 'together-ai': buildOpenAICompatibleProvider({ id: 'together-ai', name: 'Together.ai', @@ -1482,6 +1516,20 @@ export const useProvidersStore = defineStore('providers', () => { }, }, }, + 'comet-api': buildOpenAICompatibleProvider({ + id: 'comet-api', + name: 'CometAPI', + nameKey: 'settings.pages.providers.provider.comet-api.title', + descriptionKey: 'settings.pages.providers.provider.comet-api.description', + icon: 'i-lobe-icons:cometapi', + description: 'cometapi.com', + defaultBaseUrl: 'https://api.cometapi.com/v1/', + creator: (apiKey, baseURL = 'https://api.cometapi.com/v1/') => merge( + createChatProvider({ apiKey, baseURL }), + createModelProvider({ apiKey, baseURL }), + ), + validation: ['model_list'], + }), 'perplexity-ai': buildOpenAICompatibleProvider({ id: 'perplexity-ai', name: 'Perplexity',