Canvas, не работает голосовое управление

Прошу помочь с анимированной кнопкой. При нажатии должно включаться голосовое управление шариком. Но почему-то данная функция не работает

<!DOCTYPE html>
<html>
<meta charset="UTF-8">

<title>Mayatnik</title>
<link rel="stylesheet" href="main.css">
<h1 style='text-align: center'> Управляй "Снитчем" </h1>
<h2 style='text-align: center'> Команды: Вверх, вниз, влево, напрaво. </h2>
<div class="switch">
  <input type="checkbox">
</div>

<head>

  <style>
    #canvas {
      display: block;
      margin: 0 auto;
      padding: 0;
    }
    
    body {
      background-image: url(987396a6d03978b643eddd97f0daf8f2.jpg);
      background-repeat: repeat-x, repeat-x;
      background-position-x: 40%;
      background-position-y: 5%;
      background-size: 100%;
    }
    
    {
      margin: 0;
      padding: 0;
      background: #141414;
    }
    
    .switch {
      position: absolute;
      display: flex;
      top: 53%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    
    input[type="checkbox"] {
      position: relative;
      width: 80px;
      height: 30px;
      -webkit-appearance: none;
      outline: none;
      background: #fff0f5;
      border-radius: 20px;
      transition: 0.5s;
    }
    
    input:checked[type="checkbox"] {
      background: #faafc4;
    }
    
    input[type="checkbox"]:before {
      content: '';
      position: absolute;
      width: 40px;
      height: 40px;
      transform: scale(1.1);
      border-radius: 50%;
      top: -5px;
      left: 0;
      background: #faafc4;
      transition: 0.5s;
    }
    
    input:checked[type="checkbox"]:before {
      background: #f77ea0;
      left: 40px;
    }
  </style>

</head>

<div id="center">
  <canvas id=canvas width="350" height="350"></canvas>
</div>

<script type="text/javascript">
  var recognizer = new webkitSpeechRecognition();
  recognizer.interimResults = true;
  recognizer.lang = "ru-Ru";
  recognizer.onresult = function(event) {
    var result = event.results[event.resultIndex];

    if (result.isFinal && result[0].transcript == "влево") {
      let timerId = setInterval(function() {

        draw();

        if (x > 0) {
          x = x - 2;
        } else clearTimeout(timerId);
      }, 20);
    }
    if (result.isFinal && result[0].transcript == "вверх") {
      let timerId = setInterval(function() {

        draw();

        if (y > 0) {
          y = y - 2;
        } else clearTimeout(timerId);
      }, 20);
    }
    if (result.isFinal && result[0].transcript == "вниз") {
      let timerId = setInterval(function() {

        draw();

        if (y < 350) {
          y = y + 2;
        } else clearTimeout(timerId);
      }, 20);
    }
    if (result.isFinal && result[0].transcript == "направо") {
      let timerId = setInterval(function() {

        draw();

        if (x < 350) {
          x = x + 2;
        } else clearTimeout(timerId);
      }, 20);
    } else {
      console.log('Промежуточный результат:', result[0].transcript);
    }
  };

  function speech() {
    recognizer.start();
  }
</script>

<script type="text/javascript">
  var canvas = document.getElementById("canvas");
  var context = canvas.getContext("2d");

  var x = 175;
  var y = 175;

  requestAnimationFrame(draw);


  function draw() {

    var size = Math.min(canvas.width, canvas.height);
    var rBall = size * 0.03;


    context.clearRect(0, 0, canvas.width, canvas.height);
    drawBg(context, canvas.width, canvas.height);
    drawBase(context, canvas.width);

    drawBall(context, x, y, rBall);

    requestAnimationFrame(draw);
  }

  function drawBg(context, w, h) {
    context.fillStyle = "rgba(255,255,255,0.51)"
    context.fillRect(0, 0, w, h);
    context.fillStyle = "yellow";
  }

  function drawBase(context, w) {
    context.save();
    context.moveTo(0, 2);
    context.lineTo(w, 2);
    context.restore();
  }

  function drawBall(context, x, y, rBall) {
    context.save();
    context.beginPath();
    context.arc(x, y, rBall, 0, Math.PI * 2);
    context.fill();
    context.restore();
  }
</script>

</html>


Ответы (0 шт):