|
async function setEngine() { |
|
var engine = document.getElementById("engine").value; |
|
await fetch('/set_engine?engine_name=' + engine); |
|
} |
|
|
|
async function speak() { |
|
var text = document.getElementById("text").value; |
|
try { |
|
var url = '/tts?text=' + encodeURIComponent(text); |
|
var audio = document.getElementById("audio"); |
|
audio.src = url; |
|
audio.play(); |
|
} catch (error) { |
|
console.error('Error during fetch or audio playback:', error); |
|
} |
|
} |
|
|
|
async function fetchVoices() { |
|
try { |
|
var response = await fetch('/voices'); |
|
if (!response.ok) { |
|
throw new Error('Network response was not ok: ' + response.statusText); |
|
} |
|
var data = await response.json(); |
|
var voicesDropdown = document.getElementById("voice"); |
|
voicesDropdown.innerHTML = ''; |
|
data.forEach(function(voice) { |
|
var option = document.createElement("option"); |
|
option.text = voice; |
|
option.value = voice; |
|
voicesDropdown.add(option); |
|
}); |
|
} catch (error) { |
|
console.error('Error fetching voices:', error); |
|
} |
|
} |
|
|
|
async function setVoice() { |
|
var voice = document.getElementById("voice").value; |
|
try { |
|
var response = await fetch('/setvoice?voice_name=' + encodeURIComponent(voice)); |
|
if (!response.ok) { |
|
throw new Error('Network response was not ok: ' + response.statusText); |
|
} |
|
console.log('Voice set successfully:', voice); |
|
} catch (error) { |
|
console.error('Error setting voice:', error); |
|
} |
|
} |
|
|
|
document.addEventListener('DOMContentLoaded', (event) => { |
|
document.getElementById("text").value = "This is a text to speech demo text"; |
|
document.getElementById("speakButton").addEventListener("click", speak); |
|
document.getElementById("engine").addEventListener("change", async function() { |
|
await setEngine(); |
|
await fetchVoices(); |
|
}); |
|
document.getElementById("voice").addEventListener("change", setVoice); |
|
|
|
fetchVoices(); |
|
}); |