TTS: Add registerTtsProvider function export

40f10d7d384361248feafbe72a292622c4c0cb5b

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +25 -0Showing whitespace changes
public/scripts/extensions/tts/index.js+25 -0
@@ -88,6 +88,31 @@ export function getPreviewString(lang) {
8888 return previewStrings[lang] ?? fallbackPreview;
8989}
9090
91+/**
92+ * Registers a TTS provider.
93+ * @param {string} name Name of the TTS provider to register.
94+ * @param {function} provider Provider class.
95+ */
96+export function registerTtsProvider(name, provider) {
97+ if (!name || typeof name !== 'string') {
98+ throw new Error(`TTS provider name ${name} is not a valid string.`);
99+ }
100+ if (!provider || typeof provider !== 'function') {
101+ throw new Error(`TTS provider ${name} is not a valid provider class.`);
102+ }
103+ if (ttsProviders[name]) {
104+ throw new Error(`TTS provider ${name} is already registered.`);
105+ }
106+ ttsProviders[name] = provider;
107+ console.info(`Registered TTS provider: ${name}`);
108+ $('#tts_provider').append($('<option />').val(name).text(name));
109+
110+ // Load if it was previously selected
111+ if (extension_settings.tts.currentProvider === name) {
112+ loadTtsProvider(name);
113+ }
114+}
115+
91116const ttsProviders = {
92117 AllTalk: AllTalkTtsProvider,
93118 Azure: AzureTtsProvider,