added the ability to speak only quoted text

This commit is contained in:
Sanskar Tiwari
2023-05-13 14:46:23 +05:30
parent 62434d41b9
commit 3643bc58f2

View File

@@ -241,9 +241,16 @@ async function processTtsQueue() {
console.debug('New message found, running TTS') console.debug('New message found, running TTS')
currentTtsJob = ttsJobQueue.shift() currentTtsJob = ttsJobQueue.shift()
const text = extension_settings.tts.narrate_dialogues_only let text = extension_settings.tts.narrate_dialogues_only
? currentTtsJob.mes.replace(/\*[^\*]*?(\*|$)/g, '').trim() // remove asterisks content ? currentTtsJob.mes.replace(/\*[^\*]*?(\*|$)/g, '').trim() // remove asterisks content
: currentTtsJob.mes.replaceAll('*', '').trim() // remove just the asterisks : currentTtsJob.mes.replaceAll('*', '').trim() // remove just the asterisks
if (extension_settings.tts.narrate_quoted_only) {
// narrate only the text inside double quotes
const matches = text.match(/".*?"/g); // Matches text inside double quotes, non-greedily
text = matches ? matches.join(' ... ... ... ') : text;
}
console.log(`TTS: ${text}`)
const char = currentTtsJob.name const char = currentTtsJob.name
try { try {
@@ -288,6 +295,7 @@ function loadSettings() {
extension_settings.tts.enabled extension_settings.tts.enabled
) )
$('#tts_narrate_dialogues').prop('checked', extension_settings.tts.narrate_dialogues_only) $('#tts_narrate_dialogues').prop('checked', extension_settings.tts.narrate_dialogues_only)
$('#tts_narrate_quoted').prop('checked', extension_settings.tts.narrate_quoted_only)
} }
const defaultSettings = { const defaultSettings = {
@@ -380,6 +388,13 @@ function onNarrateDialoguesClick() {
saveSettingsDebounced() saveSettingsDebounced()
} }
function onNarrateQuotedClick() {
extension_settings.tts.narrate_quoted_only = $('#tts_narrate_quoted').prop('checked');
saveSettingsDebounced()
}
//##############// //##############//
// TTS Provider // // TTS Provider //
//##############// //##############//
@@ -459,6 +474,10 @@ $(document).ready(function () {
<input type="checkbox" id="tts_narrate_dialogues"> <input type="checkbox" id="tts_narrate_dialogues">
Narrate dialogues only Narrate dialogues only
</label> </label>
<label class="checkbox_label" for="tts_narrate_quoted">
<input type="checkbox" id="tts_narrate_quoted">
Narrate quoted only
</label>
</div> </div>
<label>Voice Map</label> <label>Voice Map</label>
<textarea id="tts_voice_map" type="text" class="text_pole textarea_compact" rows="4" <textarea id="tts_voice_map" type="text" class="text_pole textarea_compact" rows="4"
@@ -481,6 +500,7 @@ $(document).ready(function () {
$('#tts_apply').on('click', onApplyClick) $('#tts_apply').on('click', onApplyClick)
$('#tts_enabled').on('click', onEnableClick) $('#tts_enabled').on('click', onEnableClick)
$('#tts_narrate_dialogues').on('click', onNarrateDialoguesClick); $('#tts_narrate_dialogues').on('click', onNarrateDialoguesClick);
$('#tts_narrate_quoted').on('click', onNarrateQuotedClick);
$('#tts_voices').on('click', onTtsVoicesClick) $('#tts_voices').on('click', onTtsVoicesClick)
$('#tts_provider_settings').on('input', onTtsProviderSettingsInput) $('#tts_provider_settings').on('input', onTtsProviderSettingsInput)
for (const provider in ttsProviders) { for (const provider in ttsProviders) {