<!DOCTYPE html>
<html>
<head>
  <title>5.2.3 SpeechSynthesisUtterance volume attribute test - Manual</title>
  <style>
    div,
    #test {
      display: block;
      width: 640px;
      word-break: break-all;
      padding: 4px;
    }
    #test,
    #volume {
      background: skyblue;
      font-weight: bold;
    }
  </style>
  <script>
    const text = "hello universe";
    const volumes = [0, 0.2, 0.4, 0.6, 1];

    handleVoicesChanged = async _ => {
      for (const volume of volumes) {
        await new Promise(resolve => {
          document.getElementById("volume").value = volume;
          const utterance = new SpeechSynthesisUtterance();
          utterance.text = text;
          utterance.volume = volume;
          utterance.onend = resolve;
          window.speechSynthesis.speak(utterance);
        });
      };
    };
    onload = e => {
      document.getElementById("test").onclick = _ => {
        if (window.speechSynthesis.getVoices().length === 0) {
          window.speechSynthesis.onvoiceschanged = handleVoicesChanged;
        } else {
          handleVoicesChanged()
        }
      };
    };
  </script>
</head>
<body>
  <div>
    <h3>Specification:</h3>
    <a href="https://w3c.github.io/speech-api/speechapi.html#utterance-attributes"><b><code><i><u>volume</u></i></code> attribute</b></a>
    <blockquote>
      This attribute specifies the speaking volume for the utterance. It ranges between 0 and 1 inclusive, with 0 being the lowest volume and 1 the highest volume, with a default of 1. If SSML is used, this value will be overridden by prosody tags in the markup.
    </blockquote>
  </div>
  <div id="test">
    Click to execute <code>window.speechSynthesis.speak()</code> with <code>volume attribute</code> set to <code>0, 0.2, 0.4, 0.6, 1.</code>
  </div>
  <br>
  <div>
    <label for="volume">Current volume: </label>
    <input id="volume" readonly>
    <h3>Manaul Test:</h3>Does the volume of audio output change?
  </div>
</body>
</html>
