mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-26 09:03:54 +08:00
update:修复测试工具页面声音卡顿问题
This commit is contained in:
@@ -445,8 +445,8 @@
|
||||
|
||||
let audioBufferQueue = []; // 存储接收到的音频包
|
||||
let isAudioPlaying = false; // 是否正在播放音频
|
||||
const BUFFER_THRESHOLD = 3; // 缓冲包数量阈值,至少累积3个包再开始播放
|
||||
const MIN_AUDIO_DURATION = 0.1; // 最小音频长度(秒),小于这个长度的音频会被合并
|
||||
const BUFFER_THRESHOLD = 6; // 缓冲包数量阈值,6个包(360ms)平衡延迟和流畅度
|
||||
const MIN_AUDIO_DURATION = 0.12; // 最小音频长度(秒),对应2个Opus包(120ms)
|
||||
let streamingContext = null; // 音频流上下文
|
||||
const SAMPLE_RATE = 16000; // 采样率
|
||||
const CHANNELS = 1; // 声道数
|
||||
@@ -518,12 +518,12 @@
|
||||
log(`预初始化Opus解码器失败: ${error.message}`, 'warning');
|
||||
// 继续缓冲,我们会在播放时再次尝试初始化
|
||||
});
|
||||
const timeout = 300;
|
||||
const timeout = 400;
|
||||
while (true) {
|
||||
// 每次数据空的时候等三条数据
|
||||
// 初始缓冲:等待6个包,平衡延迟和流畅度
|
||||
const packets = await queue.dequeue(
|
||||
3, // 至少 3 条
|
||||
timeout, // 最多等 300 ms
|
||||
6, // 至少 6 条,360ms缓冲
|
||||
timeout, // 最多等 400 ms
|
||||
(count) => { // 超时额外回调
|
||||
log(`缓冲超时,当前缓冲包数: ${count},开始播放`, 'info');
|
||||
}
|
||||
@@ -532,9 +532,9 @@
|
||||
log(`已缓冲 ${packets.length} 个音频包,开始播放`, 'info');
|
||||
streamingContext.pushAudioBuffer(packets)
|
||||
}
|
||||
// 50毫秒里,有多少给多少
|
||||
// 持续缓冲:快速获取数据,每30ms检查一次
|
||||
while (true) {
|
||||
const data = await queue.dequeue(99, 50)
|
||||
const data = await queue.dequeue(99, 30)
|
||||
if (data.length) {
|
||||
streamingContext.pushAudioBuffer(data)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user