revert: rollback frontend TTS generation due to CORS plugin causing 400 error

This commit is contained in:
2026-08-01 12:11:04 +08:00
parent 333d7ab3bc
commit 92fe142b09
3 changed files with 49 additions and 126 deletions
+5 -54
View File
@@ -322,51 +322,6 @@
.replaceAll("'", "'");
}
async function _generateTTSLocal(text, reference_id) {
try {
// Client-side fetch to use local browser's proxy
const fishRes = await fetch('https://api.fish.audio/v1/tts', {
method: 'POST',
headers: {
'Authorization': 'Bearer 233f3a9bcc204b20a1979d59d33cc649',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: text,
reference_id: reference_id,
model: TTS_MODEL,
format: "wav"
})
});
if (!fishRes.ok) {
let msg = 'Fish Audio API Error';
try { msg = await fishRes.text(); } catch(e){}
throw new Error(`[${fishRes.status}] ${msg}`);
}
const audioBlob = await fishRes.blob();
// Upload the blob to the server as a temporary file
const formData = new FormData();
formData.append('audio', audioBlob, 'temp.wav');
const uploadRes = await fetch('/api/tts/upload_temp', {
method: 'POST',
body: formData
});
const data = await uploadRes.json();
if (!data.success) throw new Error(data.message);
return data;
} catch (err) {
if (err.name === 'TypeError' && err.message === 'Failed to fetch') {
throw new Error('网络请求失败或跨域被拦截。如果启用了本地代理,请确保浏览器能访问外网接口。');
}
throw err;
}
}
async function composeTempBroadcast() {
const text = document.getElementById("tb_text").value.trim();
if (!text) {
@@ -376,24 +331,20 @@
document.getElementById("btn_publish").disabled = true;
document.getElementById("btn_compose").disabled = true;
document.getElementById("build_badge").textContent = "合成中…";
setStatus("合成临时广播中(1/2: 生成语音)…");
setStatus("合成临时广播中…");
try {
// 1. 本地生成 TTS 并上传获得临时文件名
const ttsData = await _generateTTSLocal(text, ZH_REFERENCE_ID);
setStatus("合成临时广播中(2/2: 服务端混音)…");
// 2. 告诉服务端进行混音合并
const resp = await fetch("/api/temp-broadcast/build", {
const resp = await fetch("/api/temp-broadcast/compose", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
contentTempName: ttsData.tempName,
text,
reference_id: ZH_REFERENCE_ID,
model: TTS_MODEL,
prefixName: "lsts"
})
});
const data = await resp.json();
if (!data || !data.success) throw new Error(data?.message || "合成失败");
const preview = document.getElementById("preview_area");
preview.style.display = "block";
state.broadcastId = data.broadcastId;