'use strict' async function refreshVoiceCircle() { try { document.querySelector('#voice-frame').style.display = 'flex'; document.querySelector('#main-content').style.display = 'none'; const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const audioContext = new AudioContext(); const source = audioContext.createMediaStreamSource(stream); const analyser = audioContext.createAnalyser(); analyser.fftSize = 256; const dataArray = new Uint8Array(analyser.frequencyBinCount); source.connect(analyser); function getVolume() { analyser.getByteTimeDomainData(dataArray); let sum = 0; for (let i = 0; i < dataArray.length; i++) { const value = (dataArray[i] - 128) / 128; sum += value * value; } const rms = Math.sqrt(sum / dataArray.length); const volume = Math.round(rms * 40) * 2.5; const circle = document.querySelector('#voice-circle'); const scale = 1 + (volume / 40); console.log(`volume: ${volume}`); console.log(`size: ${scale}`); if (!(scale > 29)) { console.log('ja ') circle.style.transform = `scale(${scale})`; } requestAnimationFrame(getVolume); } getVolume(); } catch (err) {console.error(err)} }