From 48034fc00040dbbd6a5ec4798f13f02f367dca4d Mon Sep 17 00:00:00 2001 From: spider-yamet Date: Mon, 26 Jan 2026 15:03:23 -0800 Subject: [PATCH] Translate log messages to Chinese in recorder.js --- .../test/js/core/audio/recorder.js | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/main/xiaozhi-server/test/js/core/audio/recorder.js b/main/xiaozhi-server/test/js/core/audio/recorder.js index b4173807..c7d95790 100644 --- a/main/xiaozhi-server/test/js/core/audio/recorder.js +++ b/main/xiaozhi-server/test/js/core/audio/recorder.js @@ -102,18 +102,18 @@ export class AudioRecorder { this.processPCMBuffer(event.data.buffer); } }; - log('Using AudioWorklet to process audio', 'success'); + log('使用AudioWorklet处理音频', 'success'); const silent = this.audioContext.createGain(); silent.gain.value = 0; audioProcessor.connect(silent); silent.connect(this.audioContext.destination); return { node: audioProcessor, type: 'worklet' }; } else { - log('AudioWorklet not available, using ScriptProcessorNode as fallback', 'warning'); + log('AudioWorklet不可用,使用ScriptProcessorNode作为后备方案', 'warning'); return this.createScriptProcessor(); } } catch (error) { - log(`Failed to create audio processor: ${error.message}, trying fallback`, 'error'); + log(`创建音频处理器失败: ${error.message},尝试后备方案`, 'error'); return this.createScriptProcessor(); } } @@ -136,10 +136,10 @@ export class AudioRecorder { silent.gain.value = 0; scriptProcessor.connect(silent); silent.connect(this.audioContext.destination); - log('Using ScriptProcessorNode as fallback successfully', 'warning'); + log('使用ScriptProcessorNode作为后备方案成功', 'warning'); return { node: scriptProcessor, type: 'processor' }; } catch (fallbackError) { - log(`Fallback also failed: ${fallbackError.message}`, 'error'); + log(`后备方案也失败: ${fallbackError.message}`, 'error'); return null; } } @@ -162,7 +162,7 @@ export class AudioRecorder { // Encode and send Opus data encodeAndSendOpus(pcmData = null) { if (!this.opusEncoder) { - log('Opus encoder not initialized', 'error'); + log('Opus编码器未初始化', 'error'); return; } try { @@ -174,13 +174,13 @@ export class AudioRecorder { if (this.websocket && this.websocket.readyState === WebSocket.OPEN) { try { this.websocket.send(opusData.buffer); - log(`Sent Opus frame, size: ${opusData.length} bytes`, 'debug'); + log(`已发送Opus帧,大小: ${opusData.length} 字节`, 'debug'); } catch (error) { - log(`WebSocket send error: ${error.message}`, 'error'); + log(`WebSocket发送错误: ${error.message}`, 'error'); } } } else { - log('Opus encoding failed, no valid data returned', 'error'); + log('Opus编码失败,未返回有效数据', 'error'); } } else { if (this.pcmDataBuffer.length > 0) { @@ -196,7 +196,7 @@ export class AudioRecorder { } } } catch (error) { - log(`Opus encoding error: ${error.message}`, 'error'); + log(`Opus编码错误: ${error.message}`, 'error'); } } @@ -212,14 +212,14 @@ export class AudioRecorder { const abortMessage = { session_id: wsHandler.currentSessionId, type: 'abort', reason: 'wake_word_detected' }; if (this.websocket && this.websocket.readyState === WebSocket.OPEN) { this.websocket.send(JSON.stringify(abortMessage)); - log('Sent abort message', 'info'); + log('已发送中止消息', 'info'); } } if (!this.initEncoder()) { - log('Unable to start recording: Opus encoder initialization failed', 'error'); + log('无法开始录音: Opus编码器初始化失败', 'error'); return false; } - log('Please record at least 1-2 seconds of audio to ensure sufficient data is collected', 'info'); + log('请至少录制1-2秒音频以确保收集足够的数据', 'info'); const stream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: true, noiseSuppression: true, sampleRate: 16000, channelCount: 1 } }); this.audioContext = this.getAudioContext(); if (this.audioContext.state === 'suspended') { @@ -227,7 +227,7 @@ export class AudioRecorder { } const processorResult = await this.createAudioProcessor(); if (!processorResult) { - log('Unable to create audio processor', 'error'); + log('无法创建音频处理器', 'error'); return false; } this.audioProcessor = processorResult.node; @@ -246,9 +246,9 @@ export class AudioRecorder { } // Send listening start message if (this.websocket && this.websocket.readyState === WebSocket.OPEN) { - log(`Sent recording start message`, 'info'); + log(`已发送录音开始消息`, 'info'); } else { - log('WebSocket not connected, unable to send start message', 'error'); + log('WebSocket未连接,无法发送开始消息', 'error'); return false; } // Start visualization @@ -268,10 +268,10 @@ export class AudioRecorder { this.onRecordingStart(recordingSeconds); } }, 100); - log('Started PCM direct recording', 'success'); + log('已开始PCM直接录音', 'success'); return true; } catch (error) { - log(`Direct recording start error: ${error.message}`, 'error'); + log(`直接录音启动错误: ${error.message}`, 'error'); this.isRecording = false; return false; } @@ -320,15 +320,15 @@ export class AudioRecorder { if (this.websocket && this.websocket.readyState === WebSocket.OPEN) { const emptyOpusFrame = new Uint8Array(0); this.websocket.send(emptyOpusFrame); - log('Sent recording stop signal', 'info'); + log('已发送录音停止信号', 'info'); } if (this.onRecordingStop) { this.onRecordingStop(); } - log('Stopped PCM direct recording', 'success'); + log('已停止PCM直接录音', 'success'); return true; } catch (error) { - log(`Direct recording stop error: ${error.message}`, 'error'); + log(`直接录音停止错误: ${error.message}`, 'error'); return false; } } @@ -356,7 +356,7 @@ export function getAudioRecorder() { export async function checkMicrophoneAvailability() { // Check if browser supports getUserMedia API if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { - log('Browser does not support getUserMedia API', 'warning'); + log('浏览器不支持getUserMedia API', 'warning'); return false; } try { @@ -364,10 +364,10 @@ export async function checkMicrophoneAvailability() { const stream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: true, noiseSuppression: true, sampleRate: 16000, channelCount: 1 } }); // Immediately stop all tracks to release microphone stream.getTracks().forEach(track => track.stop()); - log('Microphone availability check successful', 'success'); + log('麦克风可用性检查成功', 'success'); return true; } catch (error) { - log(`Microphone not available: ${error.message}`, 'warning'); + log(`麦克风不可用: ${error.message}`, 'warning'); return false; } }