feat: implement language detection for Microsoft Voice TTS

This commit is contained in:
hengstchon
2024-10-03 17:20:53 +02:00
parent d0bd1bf8fd
commit 25a8097eaf
4 changed files with 73 additions and 1 deletions

View File

@@ -1,3 +1,4 @@
import { eld } from "eld";
import { useDebouncedCallback } from "use-debounce";
import React, {
useState,
@@ -104,6 +105,7 @@ import {
REQUEST_TIMEOUT_MS,
UNFINISHED_INPUT,
ServiceProvider,
MS_EDGE_TTS_VOICES,
} from "../constant";
import { Avatar } from "./emoji";
import { ContextPrompts, MaskAvatar, MaskConfig } from "./mask";
@@ -1214,7 +1216,11 @@ function _Chat() {
const { markdownToTxt } = require("markdown-to-txt");
const textContent = markdownToTxt(text);
if (config.ttsConfig.engine !== DEFAULT_TTS_ENGINE) {
const edgeVoiceName = accessStore.edgeVoiceName();
const detectLang = eld.detect(text).language;
const edgeVoiceName =
detectLang in MS_EDGE_TTS_VOICES
? MS_EDGE_TTS_VOICES[detectLang as keyof typeof MS_EDGE_TTS_VOICES]
: accessStore.edgeVoiceName();
const tts = new MsEdgeTTS();
await tts.setMetadata(
edgeVoiceName,

View File

@@ -279,6 +279,66 @@ export const DEFAULT_TTS_VOICES = [
"nova",
"shimmer",
];
export enum MS_EDGE_TTS_VOICES {
am = "am-ET-MekdesNeural",
ar = "ar-AE-FatimaNeural",
az = "az-AZ-BanuNeural",
be = "en-US-AlloyMultilingualNeural",
bg = "bg-BG-KalinaNeural",
bn = "bn-IN-TanishaaNeural",
ca = "ca-ES-JoanaNeural",
cs = "cs-CZ-VlastaNeural",
da = "da-DK-ChristelNeural",
de = "de-DE-ConradNeural",
el = "el-GR-AthinaNeural",
en = "en-US-AndrewNeural",
es = "es-ES-ElviraNeural",
et = "et-EE-AnuNeural",
eu = "eu-ES-AinhoaNeural",
fa = "fa-IR-DilaraNeural",
fi = "fi-FI-SelmaNeural",
fr = "fr-FR-DeniseNeural",
gu = "gu-IN-DhwaniNeural",
he = "he-IL-HilaNeural",
hi = "hi-IN-AaravNeural",
hr = "hr-HR-GabrijelaNeural",
hu = "hu-HU-NoemiNeural",
hy = "hy-AM-AnahitNeural",
is = "is-IS-GudrunNeural",
it = "it-IT-ElsaNeural",
ja = "ja-JP-NanamiNeural",
ka = "ka-GE-EkaNeural",
kn = "kn-IN-SapnaNeural",
ko = "ko-KR-SunHiNeural",
lo = "lo-LA-KeomanyNeural",
lt = "lt-LT-OnaNeural",
lv = "lv-LV-EveritaNeural",
ml = "ml-IN-SobhanaNeural",
mr = "mr-IN-AarohiNeural",
ms = "ms-MY-YasminNeural",
nl = "nl-NL-FennaNeural",
no = "nb-NO-PernilleNeural",
or = "or-IN-SubhasiniNeural",
pa = "pa-IN-OjasNeural",
pl = "pl-PL-AgnieszkaNeural",
pt = "pt-PT-RaquelNeural",
ro = "ro-RO-AlinaNeural",
ru = "ru-RU-SvetlanaNeural",
sk = "sk-SK-ViktoriaNeural",
sl = "sl-SI-PetraNeural",
sq = "sq-AL-AnilaNeural",
sr = "sr-Latn-RS-NicholasNeural",
sv = "sv-SE-SofieNeural",
ta = "ta-IN-PallaviNeural",
te = "te-IN-ShrutiNeural",
th = "th-TH-PremwadeeNeural",
tl = "en-US-AlloyMultilingualNeural",
tr = "tr-TR-EmelNeural",
uk = "uk-UA-PolinaNeural",
ur = "ur-IN-GulNeural",
vi = "vi-VN-HoaiMyNeural",
zh = "zh-CN-YunxiNeural",
}
const openaiModels = [
"gpt-3.5-turbo",