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) {
88 return previewStrings[lang] ?? fallbackPreview;88 return previewStrings[lang] ?? fallbackPreview;
89}89}
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 */
96export 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
91const ttsProviders = {116const ttsProviders = {
92 AllTalk: AllTalkTtsProvider,117 AllTalk: AllTalkTtsProvider,
93 Azure: AzureTtsProvider,118 Azure: AzureTtsProvider,