mirror of
https://github.com/mudler/LocalAI.git
synced 2024-12-24 23:06:42 +00:00
2c5a46bc34
* feat(webui): Add chat page Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(webui): Add image-gen page Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(webui): Add tts page Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
65 lines
2.5 KiB
JavaScript
65 lines
2.5 KiB
JavaScript
function submitKey(event) {
|
|
event.preventDefault();
|
|
localStorage.setItem("key", document.getElementById("apiKey").value);
|
|
document.getElementById("apiKey").blur();
|
|
}
|
|
|
|
|
|
function genAudio(event) {
|
|
event.preventDefault();
|
|
const input = document.getElementById("input").value;
|
|
const key = localStorage.getItem("key");
|
|
|
|
tts(key, input);
|
|
}
|
|
|
|
async function tts(key, input) {
|
|
document.getElementById("loader").style.display = "block";
|
|
document.getElementById("input").value = "";
|
|
document.getElementById("input").disabled = true;
|
|
|
|
const model = document.getElementById("tts-model").value;
|
|
const response = await fetch("/tts", {
|
|
method: "POST",
|
|
headers: {
|
|
Authorization: `Bearer ${key}`,
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
model: model,
|
|
input: input,
|
|
}),
|
|
});
|
|
if (!response.ok) {
|
|
const jsonData = await response.json(); // Now safely parse JSON
|
|
var div = document.getElementById('result');
|
|
div.innerHTML = '<p style="color:red;">Error: ' +jsonData.error.message + '</p>';
|
|
return;
|
|
}
|
|
|
|
var div = document.getElementById('result'); // Get the div by its ID
|
|
var link=document.createElement('a');
|
|
link.className = "m-2 float-right inline-block rounded bg-primary px-6 pb-2.5 mb-3 pt-2.5 text-xs font-medium uppercase leading-normal text-white shadow-primary-3 transition duration-150 ease-in-out hover:bg-primary-accent-300 hover:shadow-primary-2 focus:bg-primary-accent-300 focus:shadow-primary-2 focus:outline-none focus:ring-0 active:bg-primary-600 active:shadow-primary-2 dark:shadow-black/30 dark:hover:shadow-dark-strong dark:focus:shadow-dark-strong dark:active:shadow-dark-strong";
|
|
link.innerHTML = "<i class='fa-solid fa-download'></i> Download result";
|
|
const blob = await response.blob();
|
|
link.href=window.URL.createObjectURL(blob);
|
|
|
|
div.innerHTML = ''; // Clear the existing content of the div
|
|
div.appendChild(link); // Add the new img element to the div
|
|
console.log(link)
|
|
document.getElementById("loader").style.display = "none";
|
|
document.getElementById("input").disabled = false;
|
|
document.getElementById("input").focus();
|
|
}
|
|
|
|
document.getElementById("key").addEventListener("submit", submitKey);
|
|
document.getElementById("input").focus();
|
|
document.getElementById("tts").addEventListener("submit", genAudio);
|
|
document.getElementById("loader").style.display = "none";
|
|
|
|
const storeKey = localStorage.getItem("key");
|
|
if (storeKey) {
|
|
document.getElementById("apiKey").value = storeKey;
|
|
}
|
|
|