From 458da9c047314d6c5ca5128eadf8fcac1d6df5ca Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 21 May 2023 02:51:42 +0900 Subject: [PATCH] [feat] added read quoted only tts option --- src/lang/en.ts | 3 ++- src/lib/SideBars/CharConfig.svelte | 6 ++++++ src/ts/database.ts | 1 + src/ts/process/index.ts | 4 +++- src/ts/process/tts.ts | 12 +++++++++++- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index df8641c7..cf3a5d79 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -263,5 +263,6 @@ export const languageEnglish = { textBackgrounds: "Custom Text Screen Color", textBorder: "Text Outlines", textScreenRound: "Round Text Screen", - textScreenBorder: "Text Screen Borders" + textScreenBorder: "Text Screen Borders", + ttsReadOnlyQuoted: "Read Only Quoted" } diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index d79ea276..7d091357 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -498,6 +498,12 @@ {/await} {/if} + {#if currentChar.data.ttsMode === 'webspeech' || currentChar.data.ttsMode === 'elevenlab'} +
+ + {language.ttsReadOnlyQuoted} +
+ {/if} {/if} {:else if subMenu === 2}

{language.advancedSettings}

diff --git a/src/ts/database.ts b/src/ts/database.ts index 5105c202..1936ae19 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -284,6 +284,7 @@ export interface character{ ttsSpeech?:string supaMemory?:boolean additionalAssets?:[string, string][] + ttsReadOnlyQuoted?:boolean } diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 9c2c86d2..564ecdaa 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -350,13 +350,15 @@ export async function sendChat(chatProcessIndex = -1):Promise { while(true){ const readed = (await reader.read()) if(readed.value){ - db.characters[selectedChar].chats[selectedChat].message[msgIndex].data =readed.value + result = readed.value + db.characters[selectedChar].chats[selectedChat].message[msgIndex].data = result setDatabase(db) } if(readed.done){ break } } + await sayTTS(currentChar, result) } else{ const result2 = processScriptFull(currentChar, reformatContent(req.result), 'editoutput') diff --git a/src/ts/process/tts.ts b/src/ts/process/tts.ts index fd7b89ac..6071156c 100644 --- a/src/ts/process/tts.ts +++ b/src/ts/process/tts.ts @@ -7,6 +7,16 @@ export async function sayTTS(character:character,text:string) { let db = get(DataBase) text = text.replace(/\*/g,'') + if(character.ttsReadOnlyQuoted){ + const matches = text.match(/"(.*?)"/g) + if(matches.length > 0){ + text = matches.map(match => match.slice(1, -1)).join(""); + } + else{ + text = '' + } + } + switch(character.ttsMode){ case "webspeech":{ if(speechSynthesis && SpeechSynthesisUtterance){ @@ -19,7 +29,7 @@ export async function sayTTS(character:character,text:string) { } } utterThis.voice = voices[voiceIndex] - speechSynthesis.speak(utterThis) + const speak = speechSynthesis.speak(utterThis) } break }