+
Voice
+
{spokenText}
+ {messageType === "voice_full" && detailedMatch && (
+
+
+ {open ? "Hide full response" : "Show full response"}
+
+
+ {detailedMatch[1].trim()}
+
+
+ )}
+
+ );
+}
+```
+
+---
+
+## State of the Art
+
+| Old Approach | Current Approach | When Changed | Impact |
+|--------------|------------------|--------------|--------|
+| WebRTC VAD polyfill | Silero VAD via ONNX + AudioWorklet | 2023-2024 | Dramatically better accuracy; handles noisy environments |
+| MediaRecorder → manual silence timer | @ricky0123/vad-react onSpeechEnd | 2023 | Eliminates timer tuning; model-based accuracy |
+| Flash/plugin audio playback | Native `