feat: add DECTalk voice selector to webui dashboard

This commit is contained in:
2026-06-09 11:09:38 -05:00
parent 2f1e66cef4
commit e48d77d55c
2 changed files with 22 additions and 1 deletions
+3 -1
View File
@@ -416,8 +416,10 @@ def api_tts_generate():
if mode == "dectalk": if mode == "dectalk":
try: try:
voice = data.get("voice") or ""
dectalk_text = f"{voice}{text}" if voice else text
dectalk_url = gcfg.get("dectalk_api_url", "http://127.0.0.1:33001") dectalk_url = gcfg.get("dectalk_api_url", "http://127.0.0.1:33001")
r = requests.get(f"{dectalk_url}/say", params={"text": text}, timeout=30) r = requests.get(f"{dectalk_url}/say", params={"text": dectalk_text}, timeout=30)
r.raise_for_status() r.raise_for_status()
job_id = str(uuid.uuid4()) job_id = str(uuid.uuid4())
out_path = tempfile.mktemp(suffix=".wav") out_path = tempfile.mktemp(suffix=".wav")
+19
View File
@@ -243,6 +243,25 @@ function populateVoiceSelect(mode, restoreVoice) {
}); });
const target = restoreVoice || settings.user_voice || ''; const target = restoreVoice || settings.user_voice || '';
if (target) sel.value = target; if (target) sel.value = target;
} else if (mode === 'dectalk') {
group.style.display = '';
const dectalkVoices = [
{id: '[:np]', name: 'Paul (default)'},
{id: '[:nb]', name: 'Betty'},
{id: '[:nh]', name: 'Harry'},
{id: '[:nf]', name: 'Frank'},
{id: '[:nd]', name: 'Dennis'},
{id: '[:nk]', name: 'Kit'},
{id: '[:nu]', name: 'Ursula'},
{id: '[:nr]', name: 'Rita'},
{id: '[:nw]', name: 'Wendy'},
];
sel.innerHTML = '<option value="">— Paul (default) —</option>';
dectalkVoices.forEach(v => {
const opt = document.createElement('option');
opt.value = v.id; opt.textContent = v.name;
sel.appendChild(opt);
});
} else { } else {
group.style.display = 'none'; group.style.display = 'none';
} }