diff --git a/logs/server.log b/logs/server.log index 1dc406c..38db510 100644 Binary files a/logs/server.log and b/logs/server.log differ diff --git a/static/tts.html b/static/tts.html index fdf2012..092d1d9 100644 --- a/static/tts.html +++ b/static/tts.html @@ -453,6 +453,9 @@

🔊 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) {