TTS for ko_text when ko with abbrev
This commit is contained in:
1 parent
0c628cc3f5
commit
5c25d24073
4 files changed
+157
-8
No files matched your search
@@ -1,5 +1,9 @@
|
||||
<template>
|
||||
<component :is="lang !== 'ko' || v.audio ? 'span' : TTS" ref="stts">
|
||||
<component
|
||||
:is="lang !== 'ko' || v.audio ? 'span' : TTS"
|
||||
ref="stts"
|
||||
:text="v.ko_text"
|
||||
>
|
||||
<span
|
||||
v-for="(seg, i) in v[lang].split('**')"
|
||||
:key="i"
|
||||
|
||||
@@ -24,31 +24,36 @@ defineExpose({
|
||||
playAudio,
|
||||
});
|
||||
|
||||
const { lang = "ko-KR" } = defineProps<{
|
||||
const { lang = "ko-KR", text } = defineProps<{
|
||||
class?: string;
|
||||
lang?: string;
|
||||
text?: string;
|
||||
}>();
|
||||
|
||||
const mainEl = useTemplateRef("main");
|
||||
const audioEl = useTemplateRef("audio");
|
||||
|
||||
function getMainText() {
|
||||
if (text) return text;
|
||||
|
||||
if (!mainEl.value) return "";
|
||||
|
||||
return mainEl.value.innerText
|
||||
.replace(/[*]/gu, " ")
|
||||
.replace(/[\p{Ps}\p{Pe}]/gu, "");
|
||||
.replace(/[\p{Ps}\p{Pe}]/gu, "")
|
||||
.trim();
|
||||
}
|
||||
|
||||
async function playAudio() {
|
||||
if (!mainEl.value) return;
|
||||
const mainText = getMainText();
|
||||
if (!mainText) return;
|
||||
|
||||
if (navigator.platform === "Win32" || !(await playAudioTTSPlugin())) {
|
||||
if (!audioEl.value) return;
|
||||
|
||||
const url = new URL("/api/tts", location.origin);
|
||||
url.searchParams.set("voice", "glow-speak:ko_kss");
|
||||
url.searchParams.set("text", getMainText());
|
||||
url.searchParams.set("text", mainText);
|
||||
|
||||
audioEl.value.src = url.href;
|
||||
audioEl.value.currentTime = 0;
|
||||
@@ -57,7 +62,8 @@ async function playAudio() {
|
||||
}
|
||||
|
||||
async function playAudioTTSPlugin(): Promise<boolean> {
|
||||
if (!mainEl.value) return false;
|
||||
const mainText = getMainText();
|
||||
if (!mainText) return false;
|
||||
|
||||
const voices = await getVoices(lang);
|
||||
if (!voices.length) return false;
|
||||
@@ -69,7 +75,7 @@ async function playAudioTTSPlugin(): Promise<boolean> {
|
||||
const v = voices[Math.floor(Math.random() * voices.length)];
|
||||
console.log(JSON.stringify(v));
|
||||
await speak({
|
||||
text: getMainText(),
|
||||
text: mainText,
|
||||
language: null,
|
||||
rate: null,
|
||||
volume: null,
|
||||
|
||||
Reference in new issue
Block a user