From 7778522c96d6e5630b6aeffa45bce33fb027c438 Mon Sep 17 00:00:00 2001 From: hubian <908234780@qq.com> Date: Wed, 22 Apr 2026 18:34:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=BC=80=E5=85=B3=E5=92=8C=E9=9F=B3=E9=87=8F?= =?UTF-8?q?=E8=B0=83=E8=8A=82=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../8bc65e9ebfc94095a698d1fc1b742428.mp3 | Bin 0 -> 18864 bytes logs/server.log | Bin 3520 -> 19659 bytes static/tts.html | 143 +++++++++++++++++- 3 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 audio_cache/8bc65e9ebfc94095a698d1fc1b742428.mp3 diff --git a/audio_cache/8bc65e9ebfc94095a698d1fc1b742428.mp3 b/audio_cache/8bc65e9ebfc94095a698d1fc1b742428.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..23f4acaf767d40511730611c19a3299118ce9c17 GIT binary patch literal 18864 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 rZ<%i;}5@`Od@)pew)%THcpaX#X+zz delta 94 zcmX>-lktG`1Qk|8Q&Z#E$zDDx6Mg$8Cor?Hm|7YbO_pc0L}nP8Kt晓悠(女) + @@ -439,6 +543,8 @@ let conversationId = null; let currentTTSProvider = 'none'; let currentVoice = 'zh-CN-XiaoxiaoNeural'; + let autoPlay = true; // 自动播放开关 + let volumeLevel = 1.5; // 音量倍率 // 元素 const statusDot = document.getElementById('statusDot'); @@ -453,6 +559,10 @@ const ttsOptions = document.getElementById('ttsOptions'); const voiceSelect = document.getElementById('voiceSelect'); const voiceDropdown = document.getElementById('voiceDropdown'); + const ttsControls = document.getElementById('ttsControls'); + const autoPlaySwitch = document.getElementById('autoPlaySwitch'); + const volumeSlider = document.getElementById('volumeSlider'); + const volumeValue = document.getElementById('volumeValue'); // 初始化 async function init() { @@ -531,6 +641,9 @@ // 显示/隐藏音色选择 voiceSelect.style.display = provider === 'edge' ? 'block' : 'none'; + // 显示/隐藏控制选项(有TTS才显示) + ttsControls.style.display = provider !== 'none' ? 'flex' : 'none'; + // 保存设置 saveTTSSettings(); } @@ -779,8 +892,10 @@ `; } else if (role === 'assistant') { let audioHtml = ''; + let audioBtnId = ''; if (audioData) { - audioHtml = ``; @@ -789,6 +904,16 @@
AI
${content}${audioHtml}
`; + + // 自动播放(如果开启) + if (audioData && autoPlay) { + setTimeout(() => { + const btn = document.getElementById(audioBtnId); + if (btn) { + playAudio(audioData, btn); + } + }, 100); + } } else { msg.innerHTML = `
${content}
`; } @@ -802,13 +927,16 @@ const audio = new Audio(url); const icon = btn.querySelector('.play-icon'); + // 应用音量倍率 + audio.volume = Math.min(volumeLevel, 2); // 最大不超过2 + audio.onplay = () => { icon.textContent = '🔊'; btn.classList.add('playing'); }; audio.onended = () => { - icon.textContent = url.startsWith('/audio') ? '🔊' : '▶️'; + icon.textContent = url.startsWith('/audio') || url.startsWith('http') ? '🔊' : '▶️'; btn.classList.remove('playing'); }; @@ -862,6 +990,17 @@ saveTTSSettings(); }); + // 自动播放开关 + autoPlaySwitch.addEventListener('change', () => { + autoPlay = autoPlaySwitch.checked; + }); + + // 音量控制 + volumeSlider.addEventListener('input', () => { + volumeLevel = parseFloat(volumeSlider.value); + volumeValue.textContent = `${Math.round(volumeLevel * 100)}%`; + }); + recordBtn.addEventListener('click', () => { isRecording ? stopRecording() : startRecording(); });