From 568d203e1394e736efd7f010fb0e93a8668a3748 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 21 May 2023 02:33:21 +0900 Subject: [PATCH 1/6] [feat] more customizations --- src/lang/en.ts | 6 ++- src/lib/ChatScreens/ChatScreen.svelte | 11 +++-- src/lib/ChatScreens/DefaultChatScreen.svelte | 6 +-- src/lib/Setting/Pages/DisplaySettings.svelte | 49 ++++++++++++++++++++ src/ts/database.ts | 4 ++ todo.txt | 3 ++ vite.config.ts | 1 + 7 files changed, 73 insertions(+), 7 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index d9023791..df8641c7 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -259,5 +259,9 @@ export const languageEnglish = { user:"User", additionalAssets:"Additional Assets", editDisplay: "Modify Display", - community: "Community" + community: "Community", + textBackgrounds: "Custom Text Screen Color", + textBorder: "Text Outlines", + textScreenRound: "Round Text Screen", + textScreenBorder: "Text Screen Borders" } diff --git a/src/lib/ChatScreens/ChatScreen.svelte b/src/lib/ChatScreens/ChatScreen.svelte index b09205ba..4982e4c8 100644 --- a/src/lib/ChatScreens/ChatScreen.svelte +++ b/src/lib/ChatScreens/ChatScreen.svelte @@ -10,6 +10,11 @@ let openChatList = false const wallPaper = `background: url(${defaultWallpaper})` + const externalStyles = + ("background: " + ($DataBase.textScreenColor ? ($DataBase.textScreenColor + '80') : "rgba(0,0,0,0.8)") + ';\n') + + ($DataBase.textBorder ? "text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;" : '') + + ($DataBase.textScreenRounded ? "border-radius: 2rem; padding: 1rem;" : '') + + ($DataBase.textScreenBorder ? `border: 0.3rem solid ${$DataBase.textScreenBorder};` : '') let bgImg= '' let lastBg = '' @@ -27,7 +32,7 @@ {/if} {/if} - 2 ? 'background: rgba(0,0,0,0.8)': ''} bind:openChatList/> + 2 ? `${externalStyles}`: ''} bind:openChatList/> {:else if $DataBase.theme === 'waifu'}
@@ -39,13 +44,13 @@ {/if} {/if}
= 0 && $DataBase.characters[$selectedCharID].viewScreen !== 'none'}> - +
{:else if $DataBase.theme === 'waifuMobile'}
- +
{#if $selectedCharID >= 0} {#if $DataBase.characters[$selectedCharID].viewScreen !== 'none'} diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 193d6b22..5fe19382 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -11,9 +11,9 @@ import { alertError } from "../../ts/alert"; import sendSound from '../../etc/send.mp3' import {cloneDeep} from 'lodash' - import { processScript } from "src/ts/process/scripts"; - import GithubStars from "../Others/GithubStars.svelte"; - import CreatorQuote from "./CreatorQuote.svelte"; + import { processScript } from "src/ts/process/scripts"; + import GithubStars from "../Others/GithubStars.svelte"; + import CreatorQuote from "./CreatorQuote.svelte"; let messageInput = '' let openMenu = false diff --git a/src/lib/Setting/Pages/DisplaySettings.svelte b/src/lib/Setting/Pages/DisplaySettings.svelte index ce8cce15..6133d8ba 100644 --- a/src/lib/Setting/Pages/DisplaySettings.svelte +++ b/src/lib/Setting/Pages/DisplaySettings.svelte @@ -128,3 +128,52 @@ {language.instantRemove}
+ + +{#if $DataBase.textScreenColor} +
+ { + $DataBase.textScreenColor = null + }}/> + + {language.textBackgrounds} +
+{:else} +
+ { + $DataBase.textScreenColor = "#121212" + }}/> + {language.textBackgrounds} +
+ + +{/if} + +
+ + {language.textBorder} +
+ + +
+ + {language.textScreenRound} +
+ +{#if $DataBase.textScreenBorder} +
+ { + $DataBase.textScreenBorder = null + }}/> + + {language.textScreenBorder} +
+{:else} +
+ { + $DataBase.textScreenBorder = "#121212" + }}/> + {language.textScreenBorder} +
+ +{/if} \ No newline at end of file diff --git a/src/ts/database.ts b/src/ts/database.ts index ce9b6ac4..5105c202 100644 --- a/src/ts/database.ts +++ b/src/ts/database.ts @@ -418,6 +418,10 @@ export interface Database{ palmAPI:string, supaMemoryKey:string supaMemoryType:string + textScreenColor?:string + textBorder?:boolean + textScreenRounded?:boolean + textScreenBorder?:string } diff --git a/todo.txt b/todo.txt index ff430e3e..7b8c9fb0 100644 --- a/todo.txt +++ b/todo.txt @@ -11,3 +11,6 @@ 플러그인: 일단 되게 만들기 +TTS 개선: +나레이션 분리하기 +나레이션 중지 만들기 \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index b0481948..a9903d5c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -53,6 +53,7 @@ export default defineConfig(async () => { minify: process.env.TAURI_DEBUG ? false : 'esbuild', // produce sourcemaps for debug builds sourcemap: !!process.env.TAURI_DEBUG, + chunkSizeWarningLimit: 2000 }, resolve:{ From 7658090e4a98b5529ccee7cee20300aed7c45d9c Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 21 May 2023 02:34:24 +0900 Subject: [PATCH 2/6] [feat] Added v1 fields to Old Risu Card export --- src/ts/characterCards.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index 522b13d9..5ff57061 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -262,10 +262,10 @@ export async function exportChar(charaID:number) { create_date: `${Date.now()}`, description: char.desc, first_mes: char.firstMessage, - mes_example: "", + mes_example: char.exampleMessage ?? "", name: char.name, - personality: "", - scenario: "", + personality: char.personality ?? "", + scenario: char.scenario ?? "", talkativeness: "0.5" } @@ -580,8 +580,8 @@ interface OldTavernChar{ first_mes: string mes_example: string name: string - personality: "" - scenario: "" + personality: string + scenario: string talkativeness: "0.5" } type CharacterBook = { From 40d8b177953ff2d10579524bbc310ed2dc5c0b5d Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 21 May 2023 02:38:44 +0900 Subject: [PATCH 3/6] [feat] multiple cards import --- src/lib/SideBars/Sidebar.svelte | 2 +- src/ts/characterCards.ts | 186 +++++++++++++++++--------------- 2 files changed, 99 insertions(+), 89 deletions(-) diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index af5bed90..012be298 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -54,7 +54,7 @@ } async function createImport() { reseter(); - const cid = await importCharacter(); + await importCharacter(); selectedCharID.set(-1); } diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index 5ff57061..0bc99875 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -1,7 +1,7 @@ import { get } from "svelte/store" import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert" import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./database" -import { checkNullish, selectSingleFile, sleep } from "./util" +import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util" import { language } from "src/lang" import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack"; import { v4 as uuidv4 } from 'uuid'; @@ -14,96 +14,13 @@ import { cloneDeep } from "lodash" export async function importCharacter() { try { - const f = await selectSingleFile(['png', 'json']) - if(!f){ + const files = await selectMultipleFile(['png', 'json']) + if(!files){ return } - if(f.name.endsWith('json')){ - const da = JSON.parse(Buffer.from(f.data).toString('utf-8')) - if(await importSpecv2(da)){ - let db = get(DataBase) - return db.characters.length - 1 - } - if((da.char_name || da.name) && (da.char_persona || da.description) && (da.char_greeting || da.first_mes)){ - let db = get(DataBase) - db.characters.push(convertOldTavernAndJSON(da)) - DataBase.set(db) - alertNormal(language.importedCharacter) - return - } - else{ - alertError(language.errors.noData) - return - } - } - alertStore.set({ - type: 'wait', - msg: 'Loading... (Reading)' - }) - await sleep(10) - const img = f.data - const readed = (await exifr.parse(img, true)) - if(readed.chara){ - // standard spec v2 imports - const charaData:CharacterCardV2 = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) - if(await importSpecv2(charaData, img)){ - let db = get(DataBase) - return db.characters.length - 1 - } - } - if(readed.risuai){ - // old risu imports - await sleep(10) - const va = decodeMsgpack(Buffer.from(readed.risuai, 'base64')) as any - if(va.type !== 101){ - alertError(language.errors.noData) - return - } - let char:character = va.data - let db = get(DataBase) - if(char.emotionImages && char.emotionImages.length > 0){ - for(let i=0;i 0){ + for(let i=0;i Date: Sun, 21 May 2023 02:51:42 +0900 Subject: [PATCH 4/6] [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 } From f12040830d45a58ce09e93fe64599a4b75bccc3b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 21 May 2023 02:58:03 +0900 Subject: [PATCH 5/6] [feat] stop tts --- src/lang/en.ts | 3 ++- src/lib/ChatScreens/DefaultChatScreen.svelte | 14 +++++++++++++- src/ts/database.ts | 1 + src/ts/process/tts.ts | 13 ++++++++++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index cf3a5d79..7b7f0987 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -264,5 +264,6 @@ export const languageEnglish = { textBorder: "Text Outlines", textScreenRound: "Round Text Screen", textScreenBorder: "Text Screen Borders", - ttsReadOnlyQuoted: "Read Only Quoted" + ttsReadOnlyQuoted: "Read Only Quoted", + ttsStop: "Stop TTS" } diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 5fe19382..5abb26e9 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -1,5 +1,5 @@