Commit 7eaf83cb authored by Timothy J. Baek's avatar Timothy J. Baek
Browse files

fix: silence monitoring

parent 4a73a01c
...@@ -80,12 +80,17 @@ ...@@ -80,12 +80,17 @@
audioStreamSource.connect(analyser); audioStreamSource.connect(analyser);
const bufferLength = analyser.frequencyBinCount; const bufferLength = analyser.frequencyBinCount;
const domainData = new Uint8Array(bufferLength);
const timeDomainData = new Uint8Array(analyser.fftSize); const timeDomainData = new Uint8Array(analyser.fftSize);
let lastSoundTime = Date.now();
const detectSound = () => { const detectSound = () => {
const processFrame = () => { const processFrame = () => {
if (recording && !loading) { if (recording && !loading) {
analyser.getByteTimeDomainData(timeDomainData); analyser.getByteTimeDomainData(timeDomainData);
analyser.getByteFrequencyData(domainData);
// Calculate RMS level from time domain data // Calculate RMS level from time domain data
const rmsLevel = calculateRMS(timeDomainData); const rmsLevel = calculateRMS(timeDomainData);
...@@ -98,6 +103,16 @@ ...@@ -98,6 +103,16 @@
} }
visualizerData = visualizerData; visualizerData = visualizerData;
if (domainData.some((value) => value > 0)) {
lastSoundTime = Date.now();
}
if (recording && Date.now() - lastSoundTime > 3000) {
if ($settings?.speechAutoSend ?? false) {
confirmRecording();
}
}
} }
window.requestAnimationFrame(processFrame); window.requestAnimationFrame(processFrame);
...@@ -203,6 +218,7 @@ ...@@ -203,6 +218,7 @@
rounded-full" rounded-full"
on:click={async () => { on:click={async () => {
dispatch('cancel'); dispatch('cancel');
stopRecording();
}} }}
> >
<svg <svg
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment