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 `