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