From 37242cdf82f79911a4d97494808452e84317592c Mon Sep 17 00:00:00 2001 From: hubian <908234780@qq.com> Date: Wed, 22 Apr 2026 22:33:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=9B=BD=E4=BA=A7?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E5=85=BC=E5=AE=B9=E6=80=A7=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E5=92=8C=E7=94=A8=E6=88=B7=E4=BA=A4=E4=BA=92=E8=A7=A3?= =?UTF-8?q?=E9=94=81=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logs/server.log | Bin 11657 -> 41210 bytes static/tts.html | 30 +++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/logs/server.log b/logs/server.log index 1dc406c63a6f0a7e71828ee04caf3bc80289f8ac..38db5105ed118a18e7cf7db57068635aa23fe72d 100644 GIT binary patch delta 142 zcmeB-{&kRPf-;MdxrNC@_3bRChDK(S{h2ISP0h^AjV3EF0$D&IGY|_VX$e$q4i*8) znOjZ{V6tE_vM_)PS->@dCCyoljm?ZrfJP{8R%dS4-0Z-d2PdX0OkSsRmCe+|&>)rz E0IK~W-~a#s delta 134 zcmex$kf}3zf-;Mtsfpo4_3f-?CKhI

🔊 TTS语音合成设置

+
❌ 无 TTS
@@ -545,6 +548,16 @@ let currentVoice = 'zh-CN-XiaoxiaoNeural'; let autoPlay = true; // 自动播放开关 let volumeLevel = 1.5; // 音量倍率 + let userInteracted = false; // 用户是否已交互 + + // 用户点击页面解锁音频播放能力 + document.addEventListener('click', () => { + userInteracted = true; + }, { once: true }); + + document.addEventListener('touchstart', () => { + userInteracted = true; + }, { once: true }); // 元素 const statusDot = document.getElementById('statusDot'); @@ -569,10 +582,25 @@ await checkStatus(); await loadTTSProviders(); + // 检测特殊浏览器(小米浏览器等) + checkBrowser(); + // 定时检查状态 setInterval(checkStatus, 10000); } + // 检测浏览器兼容性 + function checkBrowser() { + const ua = navigator.userAgent.toLowerCase(); + const browserTip = document.getElementById('browserTip'); + + // 小米浏览器、华为浏览器等国产浏览器UA特征 + if (ua.includes('miui') || ua.includes('xiaomi') || ua.includes('huawei') || + ua.includes('micromessenger') || ua.includes('quark') || ua.includes('ucbrowser')) { + browserTip.style.display = 'block'; + } + } + // 检查服务状态 async function checkStatus() { try { @@ -913,7 +941,7 @@ chatSection.scrollTop = chatSection.scrollHeight; // 自动播放(在元素添加到DOM后) - if (role === 'assistant' && audioData && autoPlay && audioBtnId) { + if (role === 'assistant' && audioData && autoPlay && audioBtnId && userInteracted) { setTimeout(() => { const btn = document.getElementById(audioBtnId); if (btn) {