Estoy escribiendo una interfaz de usuario de front-end que utiliza la interfaz SpeechSynthesis de Web Speech API .
En general, estoy contento con eso. No me preocupa si las palabras se pronuncian con acento estadounidense, británico, australiano, kiwi, sudafricano, indio, singlish, filipino, etc., pero no estoy seguro de cómo abordar las cosas cuando la interfaz SpeechSynthesis altera las palabras.
La única solución que he encontrado hasta ahora es reemplazar:
con:
Ejemplo:
const buttons = document.querySelectorAll('button'); const speakWord = (e) => { const word = e.target.dataset.word; let utterance = new SpeechSynthesisUtterance(word); speechSynthesis.speak(utterance); } buttons.forEach((button) => { button.addEventListener('click', speakWord, false); });
h2 { display: inline-block; margin-right: 12px; font-size: 14px; } button { cursor: pointer; }
<h2>Say:</h2> <button type="button" data-word="manifests">"manifests"</button> <button type="button" data-word="modules">"modules"</button> <button type="button" data-word="configuration">"configuration"</button> <br> <h2>Now say:</h2> <button type="button" data-word="protocols">"protocols"</button> <button type="button" data-word="web app">"web app"</button> <br> <h2>Finally say:</h2><button type="button" data-word="proto kols">"proto kols"</button> <button type="button" data-word="weh bapp">"weh bapp"</button>
Además de crear palabras en pares y decirle al sintetizador de voz que hable "proto kols" y "weh bapp" cada vez que se muestren al usuario las palabras "protocolos" y "aplicación web" , ¿existen otros enfoques que pueda usar para anular el destrozando?
Yo tuve el mismo problema. Intenté establecer el parámetro utterance.rate en un valor más bajo. Para el inglés, la comprensión fue mejor cuando la tasa se estableció en 0,5. Puede establecer el parámetro en un valor más bajo si la velocidad de pronunciación no es demasiado lenta.
const u = new SpeechSynthesisUtterance('web app'); speechSynthesis.speak(u); u.rate = 0.5; speechSynthesis.speak(u);