From d4b75c5d995be734aa644cdfea95b8bae2c7940e Mon Sep 17 00:00:00 2001 From: Minamiyama Date: Sat, 23 Aug 2025 07:47:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E9=9F=B3=E9=A2=91=E5=A4=84=E7=90=86):?= =?UTF-8?q?=20=E6=8F=90=E5=8F=96=E9=9F=B3=E9=A2=91=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=E5=88=B0=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将重复的音频上下文创建逻辑提取到独立的getAudioContextInstance函数中,减少代码重复并统一音频上下文配置 --- main/xiaozhi-server/test/test_page.html | 36 ++++++++++--------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/main/xiaozhi-server/test/test_page.html b/main/xiaozhi-server/test/test_page.html index 6f8fdba9..983d3b9a 100644 --- a/main/xiaozhi-server/test/test_page.html +++ b/main/xiaozhi-server/test/test_page.html @@ -230,6 +230,16 @@ const conversationDiv = document.getElementById('conversation'); const logContainer = document.getElementById('logContainer'); + function getAudioContextInstance() { + if (!audioContext) { + audioContext = new (window.AudioContext || window.webkitAudioContext)({ + sampleRate: SAMPLE_RATE, + latencyHint: 'interactive' + }); + log('创建音频上下文,采样率: ' + SAMPLE_RATE + 'Hz', 'debug'); + } + return audioContext; + } // 初始化可视化器 function initVisualizer() { @@ -306,12 +316,7 @@ // 确保Opus解码器已初始化 try { // 确保音频上下文存在 - if (!audioContext) { - audioContext = new (window.AudioContext || window.webkitAudioContext)({ - sampleRate: SAMPLE_RATE - }); - log('创建音频上下文,采样率: ' + SAMPLE_RATE + 'Hz', 'debug'); - } + audioContext = getAudioContextInstance(); // 确保解码器已初始化 if (!opusDecoder) { @@ -617,10 +622,7 @@ log('已获取麦克风访问权限', 'success'); // 创建音频上下文 - audioContext = new (window.AudioContext || window.webkitAudioContext)({ - sampleRate: 16000, // 确保采样率与服务器期望的一致 - latencyHint: 'interactive' - }); + audioContext = getAudioContextInstance(); const source = audioContext.createMediaStreamSource(stream); // 获取实际音频轨道设置 @@ -1416,12 +1418,7 @@ // 创建音频处理器 async function createAudioProcessor() { - if (!audioContext) { - audioContext = new (window.AudioContext || window.webkitAudioContext)({ - sampleRate: 16000, - latencyHint: 'interactive' - }); - } + audioContext = getAudioContextInstance(); try { // 检查是否支持AudioWorklet @@ -1616,12 +1613,7 @@ }); // 创建音频上下文和分析器 - if (!audioContext) { - audioContext = new (window.AudioContext || window.webkitAudioContext)({ - sampleRate: 16000, - latencyHint: 'interactive' - }); - } + audioContext = getAudioContextInstance(); // 创建音频处理器 const processorResult = await createAudioProcessor();