htmlでの音声再生のパターン

ネットで調べたり、チャットGPTに書かせて上手く行ったコードをメモ

# クイズボタン
```
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>クイズボタン音声</title>
    <style>
        .btn a {
            width: 150px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            display: block;
            background: #999;
            border-radius: 5px;
            border-bottom: 4px solid #666;
            color: #FFF;
            margin: 0 auto;
            text-decoration: none;
            font-size: 16px;
            font-weight: bold;
        }
        .btn a:active {
            background: #777;
            border-bottom: 2px solid #444;
        }
    </style>
</head>
<body>

    <p class="btn"><a href="#" id="playSound1">正解</a></p>
    <p class="btn"><a href="#" id="playSound2">不正解</a></p>

    <audio id="sound1" preload="auto">
        <source src="正解.wav" type="audio/wav">
    </audio>

    <audio id="sound2" preload="auto">
        <source src="不正解.mp3" type="audio/mp3">
        <source src="不正解.wav" type="audio/wav">
    </audio>


    <script>
        document.getElementById('playSound1').addEventListener('click', function(event) {
            event.preventDefault(); // ページのジャンプを防ぐ
            var sound = document.getElementById('sound1');
            sound.currentTime = 0; // 再生位置をリセット
            sound.play();
        });
        document.getElementById('playSound2').addEventListener('click', function(event) {
            event.preventDefault(); // ページのジャンプを防ぐ
            var sound = document.getElementById('sound2');
            sound.currentTime = 0; // 再生位置をリセット
            sound.play();
        });
    </script>

</body>
</html>

```

# 文字の読み上げ
```
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Javascriptでクイズ作成</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script>
var mondaibun = `
バカが踊って動画を投稿するアプリ,ティックトック,a,b,c
民度の低いコメントをする人,ヤフコメ民,a,b,c
世界一小さい賃貸物件,シルバニアファミリー,a,b,c
`;

var mondai = null;
var sound = [
   "folder3/seikai.mp3",
   "folder3/huseikai.mp3",
   "folder3/start.mp3"
];
sound = sound.map(function(v) {
   var audio = new Audio(v);
   audio.load();
   return audio;
});

function start() {
   $("#start").after('<p id="info"></p><div id="sentaku"></div><hr>');
   $("#start").remove();
   sound[2].play();
   mondai = mondaibun.trim().split("\n");
   setTimeout(function() {
      next();
   }, 200);
}

function next() {
   $("#sentaku").empty();
   if (mondai.length == 0) {
      $("#info").text("終わり");
      return;
   }
   var arr = mondai.shift().split(",");
   var str = arr.shift();
   speechSynthesis.speak(new SpeechSynthesisUtterance("問題。" + str));
   $("#info").text("問題 :" + str);
   var kotae = arr[0];
   arr = _.shuffle(arr);
   arr.forEach(function(v, i) {
      var flag = (kotae == v) ? true : false;
      var html = `<p>${i+1}: <input type="button" value="${v}" onclick="sentaku(${flag})"></p>`;
      $("#sentaku").append(html);
   });
}

function sentaku(x) {
   if (x == true) {
      speechSynthesis.cancel();
      sound[0].currentTime = 0;
      sound[0].play();
      setTimeout(function() {
         next();
      }, 800);
   } else {
      sound[1].currentTime = 0;
      sound[1].play();
   }
}
</script>
</head>
<body>
   <h1>Javascriptでクイズ作成</h1>
   <h3>Web Speech APIを利用したクイズです。 対応ブラウザ: Chrome</h3>
   <hr>
   <button id="start" onclick="start()">スタート</button>
</body>
</html>
```

# Soundを普通に再生サンプル
```
<div>
    <h2>雫が落ちる音</h2>
    <audio controls src="https://res.cloudinary.com/code-kitchen/video/upload/v1555038697/posts/zk5sldkxuebny7mwlhh3.mp3"></audio>
  </div>
  ```