Update index.html
Browse files- index.html +13 -10
index.html
CHANGED
|
@@ -285,17 +285,17 @@
|
|
| 285 |
<div class="settings-group"><label>مقیاس هدایت (CFG):</label><input type="number" id="cfg_input" value="7.0" step="0.5"></div>
|
| 286 |
</div>
|
| 287 |
|
| 288 |
-
<!-- بخش اضافه شده
|
| 289 |
<div class="settings-group" style="border-top: 1px solid #e2e8f0; padding-top: 15px; margin-bottom: 10px;">
|
| 290 |
<label>آپلود آهنگ نمونه (Audio Conditioning):</label>
|
| 291 |
-
<input type="file" id="audio_reference" accept="audio/*" style="padding: 10px;">
|
| 292 |
</div>
|
| 293 |
|
| 294 |
-
<!-- بخش اضافه شده: چکباکس بیکلام -->
|
| 295 |
<div class="checkbox-wrapper">
|
| 296 |
<input type="checkbox" id="instrumental_chk">
|
| 297 |
<label for="instrumental_chk" style="font-size: 0.9rem; cursor: pointer;"><b>حالت بیکلام (Instrumental)</b><br><span style="font-size: 0.8rem; color: #666;">بدون خواننده، فقط موسیقی</span></label>
|
| 298 |
</div>
|
|
|
|
| 299 |
|
| 300 |
<div class="checkbox-wrapper"><input type="checkbox" id="think_checkbox" checked><label for="think_checkbox" style="font-size: 0.9rem; cursor: pointer;"><b>فعالسازی تفکر مدل</b><br><span style="font-size: 0.8rem; color: #666;">افزایش کیفیت آهنگ</span></label></div>
|
| 301 |
</div>
|
|
@@ -500,10 +500,13 @@
|
|
| 500 |
const store = transaction.objectStore("songs");
|
| 501 |
store.add(newItem);
|
| 502 |
|
|
|
|
| 503 |
const countReq = store.count();
|
| 504 |
countReq.onsuccess = () => {
|
| 505 |
if (countReq.result > 10) store.openCursor().onsuccess = (e) => { if(e.target.result) e.target.result.delete(); };
|
| 506 |
};
|
|
|
|
|
|
|
| 507 |
transaction.oncomplete = () => loadHistory();
|
| 508 |
} catch (error) { console.error("Error saving:", error); }
|
| 509 |
}
|
|
@@ -599,7 +602,7 @@
|
|
| 599 |
|
| 600 |
initDB();
|
| 601 |
|
| 602 |
-
// --- تابع آپلود فایل صوتی به Gradio ---
|
| 603 |
async function uploadAudioFile(file) {
|
| 604 |
const formData = new FormData();
|
| 605 |
formData.append("files", file);
|
|
@@ -610,8 +613,7 @@
|
|
| 610 |
});
|
| 611 |
const data = await response.json();
|
| 612 |
if (data && data.length > 0) {
|
| 613 |
-
// ساخت
|
| 614 |
-
// طبق لاگها، response یک آرایه از مسیرهاست: ["/tmp/gradio/..."]
|
| 615 |
return {
|
| 616 |
"path": data[0],
|
| 617 |
"url": `${ACE_SPACE_URL}gradio_api/file=${data[0]}`,
|
|
@@ -638,7 +640,7 @@
|
|
| 638 |
loader.style.display = 'block';
|
| 639 |
|
| 640 |
try {
|
| 641 |
-
// 1. آپلود فایل
|
| 642 |
const audioInput = document.getElementById('audio_reference');
|
| 643 |
let uploadedAudioObj = null;
|
| 644 |
if (audioInput.files.length > 0) {
|
|
@@ -646,7 +648,7 @@
|
|
| 646 |
uploadedAudioObj = await uploadAudioFile(audioInput.files[0]);
|
| 647 |
}
|
| 648 |
|
| 649 |
-
// 2. درخواست متن و پرامپت
|
| 650 |
loaderText.innerText = "آلفا در حال نوشتن شعر و ملودی...";
|
| 651 |
const isInstrumental = getChk('instrumental_chk');
|
| 652 |
|
|
@@ -682,10 +684,11 @@
|
|
| 682 |
const { lyrics, musicPrompt } = data;
|
| 683 |
loaderText.innerText = "در حال ضبط آهنگ در استودیو آلفا...";
|
| 684 |
|
| 685 |
-
//
|
| 686 |
const finalLyrics = isInstrumental ? "" : lyrics;
|
| 687 |
|
| 688 |
-
// ایندکس 2
|
|
|
|
| 689 |
const payload = [
|
| 690 |
getVal('model_select'), "custom", uploadedAudioObj, "unknown", musicPrompt, finalLyrics, 0, "", "", "unknown",
|
| 691 |
getNum('steps_input'), getNum('cfg_input'), true, getNum('seed_input'), null, -1,
|
|
|
|
| 285 |
<div class="settings-group"><label>مقیاس هدایت (CFG):</label><input type="number" id="cfg_input" value="7.0" step="0.5"></div>
|
| 286 |
</div>
|
| 287 |
|
| 288 |
+
<!-- بخشهای اضافه شده طبق درخواست شما -->
|
| 289 |
<div class="settings-group" style="border-top: 1px solid #e2e8f0; padding-top: 15px; margin-bottom: 10px;">
|
| 290 |
<label>آپلود آهنگ نمونه (Audio Conditioning):</label>
|
| 291 |
+
<input type="file" id="audio_reference" accept="audio/*" style="padding: 10px; width: 100%; background: #fff;">
|
| 292 |
</div>
|
| 293 |
|
|
|
|
| 294 |
<div class="checkbox-wrapper">
|
| 295 |
<input type="checkbox" id="instrumental_chk">
|
| 296 |
<label for="instrumental_chk" style="font-size: 0.9rem; cursor: pointer;"><b>حالت بیکلام (Instrumental)</b><br><span style="font-size: 0.8rem; color: #666;">بدون خواننده، فقط موسیقی</span></label>
|
| 297 |
</div>
|
| 298 |
+
<!-- پایان بخشهای اضافه شده -->
|
| 299 |
|
| 300 |
<div class="checkbox-wrapper"><input type="checkbox" id="think_checkbox" checked><label for="think_checkbox" style="font-size: 0.9rem; cursor: pointer;"><b>فعالسازی تفکر مدل</b><br><span style="font-size: 0.8rem; color: #666;">افزایش کیفیت آهنگ</span></label></div>
|
| 301 |
</div>
|
|
|
|
| 500 |
const store = transaction.objectStore("songs");
|
| 501 |
store.add(newItem);
|
| 502 |
|
| 503 |
+
// --- دقیقا همان شرط حذف اضافه (بیشتر از 10) که قبلا بود ---
|
| 504 |
const countReq = store.count();
|
| 505 |
countReq.onsuccess = () => {
|
| 506 |
if (countReq.result > 10) store.openCursor().onsuccess = (e) => { if(e.target.result) e.target.result.delete(); };
|
| 507 |
};
|
| 508 |
+
// --------------------------------------------------------
|
| 509 |
+
|
| 510 |
transaction.oncomplete = () => loadHistory();
|
| 511 |
} catch (error) { console.error("Error saving:", error); }
|
| 512 |
}
|
|
|
|
| 602 |
|
| 603 |
initDB();
|
| 604 |
|
| 605 |
+
// --- تابع جدید: آپلود فایل صوتی به Gradio ---
|
| 606 |
async function uploadAudioFile(file) {
|
| 607 |
const formData = new FormData();
|
| 608 |
formData.append("files", file);
|
|
|
|
| 613 |
});
|
| 614 |
const data = await response.json();
|
| 615 |
if (data && data.length > 0) {
|
| 616 |
+
// ساخت آبجکت فایل برای گرادیو
|
|
|
|
| 617 |
return {
|
| 618 |
"path": data[0],
|
| 619 |
"url": `${ACE_SPACE_URL}gradio_api/file=${data[0]}`,
|
|
|
|
| 640 |
loader.style.display = 'block';
|
| 641 |
|
| 642 |
try {
|
| 643 |
+
// 1. آپلود فایل نمونه (اگر کاربر انتخاب کرده باشد)
|
| 644 |
const audioInput = document.getElementById('audio_reference');
|
| 645 |
let uploadedAudioObj = null;
|
| 646 |
if (audioInput.files.length > 0) {
|
|
|
|
| 648 |
uploadedAudioObj = await uploadAudioFile(audioInput.files[0]);
|
| 649 |
}
|
| 650 |
|
| 651 |
+
// 2. درخواست متن و پرامپت
|
| 652 |
loaderText.innerText = "آلفا در حال نوشتن شعر و ملودی...";
|
| 653 |
const isInstrumental = getChk('instrumental_chk');
|
| 654 |
|
|
|
|
| 684 |
const { lyrics, musicPrompt } = data;
|
| 685 |
loaderText.innerText = "در حال ضبط آهنگ در استودیو آلفا...";
|
| 686 |
|
| 687 |
+
// در حالت بیکلام، متن خالی ارسال میشود
|
| 688 |
const finalLyrics = isInstrumental ? "" : lyrics;
|
| 689 |
|
| 690 |
+
// ایندکس 2 = فایل صوتی (یا null)
|
| 691 |
+
// ایندکس 5 = متن ترانه
|
| 692 |
const payload = [
|
| 693 |
getVal('model_select'), "custom", uploadedAudioObj, "unknown", musicPrompt, finalLyrics, 0, "", "", "unknown",
|
| 694 |
getNum('steps_input'), getNum('cfg_input'), true, getNum('seed_input'), null, -1,
|