debug: add listen path logging
- Log binary packet receipt and listen state - Log listen toggle and AudioContext creation - Log playPcm calls, packet size, user hash, and playback timing - Helps trace why listen produces no audio
This commit is contained in:
@@ -163,7 +163,11 @@ function connectWebSocket() {
|
|||||||
handleJsonEvent(event.data);
|
handleJsonEvent(event.data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state.isListening) playPcm(event.data);
|
console.log('[listen] Received PCM packet:', event.data.byteLength, 'bytes, isListening:', state.isListening);
|
||||||
|
if (state.isListening) {
|
||||||
|
console.log('[listen] Playing PCM...');
|
||||||
|
playPcm(event.data);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,9 +408,11 @@ function stopStreaming() {
|
|||||||
|
|
||||||
function toggleListen() {
|
function toggleListen() {
|
||||||
state.isListening = !state.isListening;
|
state.isListening = !state.isListening;
|
||||||
|
console.log('[listen] Toggle listen:', state.isListening);
|
||||||
if (state.isListening) {
|
if (state.isListening) {
|
||||||
state.audioContextListen = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: SAMPLE_RATE });
|
state.audioContextListen = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: SAMPLE_RATE });
|
||||||
state.userTimelines.clear();
|
state.userTimelines.clear();
|
||||||
|
console.log('[listen] AudioContext created, sampleRate:', SAMPLE_RATE);
|
||||||
el.listenBtn.textContent = 'Leave Listen Channel';
|
el.listenBtn.textContent = 'Leave Listen Channel';
|
||||||
el.listenStatus.textContent = 'speaker on';
|
el.listenStatus.textContent = 'speaker on';
|
||||||
} else {
|
} else {
|
||||||
@@ -419,11 +425,13 @@ function toggleListen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function playPcm(arrayBuffer) {
|
function playPcm(arrayBuffer) {
|
||||||
|
console.log('[listen] playPcm called, isListening:', state.isListening, 'hasContext:', !!state.audioContextListen);
|
||||||
if (!state.isListening || !state.audioContextListen) return;
|
if (!state.isListening || !state.audioContextListen) return;
|
||||||
|
|
||||||
const headerView = new DataView(arrayBuffer, 0, 4);
|
const headerView = new DataView(arrayBuffer, 0, 4);
|
||||||
const userIdHash = headerView.getInt32(0, true);
|
const userIdHash = headerView.getInt32(0, true);
|
||||||
const audioData = arrayBuffer.slice(4);
|
const audioData = arrayBuffer.slice(4);
|
||||||
|
console.log('[listen] userIdHash:', userIdHash, 'audioDataLength:', audioData.byteLength);
|
||||||
|
|
||||||
const int16Array = new Int16Array(audioData);
|
const int16Array = new Int16Array(audioData);
|
||||||
const float32Array = new Float32Array(int16Array.length);
|
const float32Array = new Float32Array(int16Array.length);
|
||||||
@@ -441,6 +449,7 @@ function playPcm(arrayBuffer) {
|
|||||||
let userNextStartTime = state.userTimelines.get(userIdHash) || 0;
|
let userNextStartTime = state.userTimelines.get(userIdHash) || 0;
|
||||||
|
|
||||||
if (userNextStartTime < currentTime) userNextStartTime = currentTime + 0.05;
|
if (userNextStartTime < currentTime) userNextStartTime = currentTime + 0.05;
|
||||||
|
console.log('[listen] Starting playback at:', userNextStartTime, 'duration:', audioBuffer.duration);
|
||||||
source.start(userNextStartTime);
|
source.start(userNextStartTime);
|
||||||
userNextStartTime += audioBuffer.duration;
|
userNextStartTime += audioBuffer.duration;
|
||||||
state.userTimelines.set(userIdHash, userNextStartTime);
|
state.userTimelines.set(userIdHash, userNextStartTime);
|
||||||
|
|||||||
Reference in New Issue
Block a user