diff --git a/backend/app/config.py b/backend/app/config.py index 3777048..559ac2b 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -90,7 +90,7 @@ class Settings: # 语音助手基础提示词(.env 设 DPM_S2S_INSTRUCTIONS 可覆盖;知识库内容由 rag 自动拼接) S2S_INSTRUCTIONS = _env( "DPM_S2S_INSTRUCTIONS", - "你是 PineSound 园区智能语音助手。可用工具:get_park_overview(园区实时数据)、" + "你是昆小园,昆明市大学生创业园的专属智能语音助手。可用工具:get_park_overview(园区实时数据)、" "query_companies(企业名录)、control_display(大屏控制)、get_time(时间)。" "涉及园区数据/企业/大屏控制时务必调用工具获取准确信息。请用简洁专业的中文回答,不超过三句话。", ) diff --git a/backend/app/s2s_bridge.py b/backend/app/s2s_bridge.py index 73ccf38..4cf01d4 100644 --- a/backend/app/s2s_bridge.py +++ b/backend/app/s2s_bridge.py @@ -41,8 +41,8 @@ def _build_pool(stop_event: threading.Event): "--qwen3_cloud_model", settings.S2S_TTS_MODEL, "--qwen3_cloud_voice", settings.S2S_TTS_VOICE, "--enable_live_transcription", "false", - "--thresh", "0.8", - "--min_silence_ms", "600", + "--thresh", "0.6", + "--min_silence_ms", "500", "--min_speech_ms", "500", "--log_level", settings.S2S_LOG_LEVEL, ] diff --git a/backend/static/admin.js b/backend/static/admin.js index ca8fffe..274687e 100644 --- a/backend/static/admin.js +++ b/backend/static/admin.js @@ -358,3 +358,34 @@ post('/api/delete', { path: current.path }, function () { closePreview(); reload('已删除'); }); }); })(); +/* ---------- 语音 AI 测试(主动问候) ---------- */ +(function () { + var greetBtn = document.getElementById('btnVoiceGreet'); + var greetInput = document.getElementById('voiceGreetText'); + var greetHint = document.getElementById('voiceGreetHint'); + if (!greetBtn || !greetInput) return; + greetBtn.addEventListener('click', function () { + var text = (greetInput.value || '').trim(); + if (!text) { toast('请输入问候语'); return; } + greetBtn.disabled = true; + greetBtn.textContent = '发送中…'; + fetch('/api/display/command', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'voice_start', params: { text: text } }), + }) + .then(function (r) { return r.json().catch(function () { return {}; }); }) + .then(function (d) { + greetBtn.disabled = false; + greetBtn.textContent = '播报问候'; + if (d && d.ok === false) { toast('发送失败:MQTT 未发布(' + (d.error || '未知') + ')', 'error'); return; } + if (greetHint) greetHint.textContent = '✅ 已发送:展播端将进入语音对话页并主动播报「' + text + '」,请留意展播端声音。'; + toast('语音问候已发送'); + }) + .catch(function () { + greetBtn.disabled = false; + greetBtn.textContent = '播报问候'; + toast('发送失败:后端不可达', 'error'); + }); + }); +})(); diff --git a/backend/templates/admin.html b/backend/templates/admin.html index 7357c40..30dbb15 100644 --- a/backend/templates/admin.html +++ b/backend/templates/admin.html @@ -242,6 +242,25 @@ + +