> because of the limitation on browser editor, below code can only reach the limited kinds of voice samples. And **most of them are from MS**. > If you want to access **Google version**, please go: https://responsivevoice.org/ # HTML ```html <select id="voiceSelect" onchange=play()></select> <p id="voicePlay">select a voice</p> ``` # JS ```js function populateVoiceList() { if (typeof speechSynthesis === "undefined") { return; } const voices = speechSynthesis.getVoices(); if (voices.length === 0) { // If no voices are available, try again later return; } const voiceSelect = document.getElementById("voiceSelect"); voiceSelect.innerHTML = ''; // Clear the existing options for (let i = 0; i < voices.length; i++) { const option = document.createElement("option"); option.textContent = `${voices[i].name} (${voices[i].lang})`; option.setAttribute("data-lang", voices[i].lang); option.setAttribute("data-name", voices[i].name); voiceSelect.appendChild(option); } } // Populate the voice list when voices are loaded populateVoiceList(); if (typeof speechSynthesis !== "undefined" && speechSynthesis.onvoiceschanged !== undefined) { speechSynthesis.onvoiceschanged = populateVoiceList; } function play() { // Create a new instance of SpeechSynthesisUtterance var utterance = new SpeechSynthesisUtterance('Hello, how are you?'); var selectedVoice = document.getElementById("voiceSelect").selectedOptions[0].getAttribute('data-name'); // Set the voice to the selected voice utterance.voice = speechSynthesis.getVoices().find(voice => voice.name === selectedVoice); document.getElementById("voicePlay").textContent = selectedVoice; // Speak the utterance window.speechSynthesis.speak(utterance); } ```