Update TTS providers and story markup
This commit is contained in:
@@ -19,6 +19,8 @@ class MarkupParserModule extends BaseModule {
|
||||
'parseParagraph',
|
||||
'parseInline',
|
||||
'extractGlossaryTags',
|
||||
'extractTtsInstructionTags',
|
||||
'normalizeTtsInstructionProvider',
|
||||
'parseImageOptions',
|
||||
'parseSfxOptions',
|
||||
'parseMusicOptions',
|
||||
@@ -243,6 +245,52 @@ class MarkupParserModule extends BaseModule {
|
||||
.sort((a, b) => b.term.length - a.term.length);
|
||||
}
|
||||
|
||||
extractTtsInstructionTags(tags = []) {
|
||||
if (!Array.isArray(tags)) return [];
|
||||
|
||||
return tags
|
||||
.map(tag => {
|
||||
const key = String(tag?.key || '').toLowerCase();
|
||||
const value = String(tag?.value || '').trim();
|
||||
const param = String(tag?.param || '').trim();
|
||||
|
||||
if (key === 'tts') {
|
||||
if (param) {
|
||||
return {
|
||||
provider: this.normalizeTtsInstructionProvider(value),
|
||||
instruction: param
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
provider: null,
|
||||
instruction: value
|
||||
};
|
||||
}
|
||||
|
||||
if (key.startsWith('tts-') && value) {
|
||||
return {
|
||||
provider: this.normalizeTtsInstructionProvider(key.slice(4)),
|
||||
instruction: value
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
})
|
||||
.filter(entry => entry && entry.instruction);
|
||||
}
|
||||
|
||||
normalizeTtsInstructionProvider(provider) {
|
||||
const normalized = String(provider || '').trim().toLowerCase();
|
||||
if (!normalized) return null;
|
||||
if (normalized === 'openai' || normalized === 'openai-tts') return 'openai-tts';
|
||||
if (normalized === 'local-openai' || normalized === 'local-openai-tts') return 'local-openai-tts';
|
||||
if (normalized === 'elevenlabs' || normalized === 'elevenlabs-tts') return 'elevenlabs-tts';
|
||||
if (normalized === 'kokoro' || normalized === 'kokoro-tts') return 'kokoro-tts';
|
||||
if (normalized === 'browser' || normalized === 'browser-tts') return 'browser-tts';
|
||||
return normalized;
|
||||
}
|
||||
|
||||
smartypants(text) {
|
||||
const result = String(text)
|
||||
.replace(/---/g, '\u2014')
|
||||
|
||||
Reference in New Issue
Block a user