diff --git a/main/xiaozhi-server/test/js/document.js b/main/xiaozhi-server/test/js/document.js index 508a1463..eb23247e 100644 --- a/main/xiaozhi-server/test/js/document.js +++ b/main/xiaozhi-server/test/js/document.js @@ -26,3 +26,14 @@ export function getLogContainer (flan) { return logContainer; } +// 更新Opus库状态显示 +export function updateScriptStatus(message, type) { + const statusElement = document.getElementById('scriptStatus'); + if (statusElement) { + statusElement.textContent = message; + statusElement.className = `script-status ${type}`; + statusElement.style.display = 'block'; + statusElement.style.width = 'auto'; + } +} + diff --git a/main/xiaozhi-server/test/js/opus.js b/main/xiaozhi-server/test/js/opus.js new file mode 100644 index 00000000..9259b9de --- /dev/null +++ b/main/xiaozhi-server/test/js/opus.js @@ -0,0 +1,43 @@ +import { log } from './utils/logger.js'; +import { updateScriptStatus } from './document.js' + + +// 检查Opus库是否已加载 +export function checkOpusLoaded() { + try { + // 检查Module是否存在(本地库导出的全局变量) + if (typeof Module === 'undefined') { + throw new Error('Opus库未加载,Module对象不存在'); + } + + // 尝试先使用Module.instance(libopus.js最后一行导出方式) + if (typeof Module.instance !== 'undefined' && typeof Module.instance._opus_decoder_get_size === 'function') { + // 使用Module.instance对象替换全局Module对象 + window.ModuleInstance = Module.instance; + log('Opus库加载成功(使用Module.instance)', 'success'); + updateScriptStatus('Opus库加载成功', 'success'); + + // 3秒后隐藏状态 + const statusElement = document.getElementById('scriptStatus'); + if (statusElement) statusElement.style.display = 'none'; + return; + } + + // 如果没有Module.instance,检查全局Module函数 + if (typeof Module._opus_decoder_get_size === 'function') { + window.ModuleInstance = Module; + log('Opus库加载成功(使用全局Module)', 'success'); + updateScriptStatus('Opus库加载成功', 'success'); + + // 3秒后隐藏状态 + const statusElement = document.getElementById('scriptStatus'); + if (statusElement) statusElement.style.display = 'none'; + return; + } + + throw new Error('Opus解码函数未找到,可能Module结构不正确'); + } catch (err) { + log(`Opus库加载失败,请检查libopus.js文件是否存在且正确: ${err.message}`, 'error'); + updateScriptStatus('Opus库加载失败,请检查libopus.js文件是否存在且正确', 'error'); + } +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/test_page.html b/main/xiaozhi-server/test/test_page.html index cb711f27..cca6fc35 100644 --- a/main/xiaozhi-server/test/test_page.html +++ b/main/xiaozhi-server/test/test_page.html @@ -102,6 +102,7 @@