diff --git a/src/main.js b/src/main.js
index 85d6f1fa4b0121ce27fdbbe2f2d405787100c718..e93a03c601c1992185e1abac48ce596bb75bec51 100644
--- a/src/main.js
+++ b/src/main.js
@@ -555,13 +555,18 @@ function addVoiceControls() {
   recognition.start();
   console.log("Voice > listening");
 
+  // restart recognition after ended automatically
+  recognition.addEventListener("end", () => {
+    recognition.start();
+  });
+
   recognition.onresult = function (event) {
     let command = event.results[0][0].transcript.toLowerCase();
     let confidence = event.results[0][0].confidence;
 
     console.log(`Voice > Received "${command}" (${confidence.toFixed(2)})`);
 
-    const matchingItem = commands.find(item => command.includes(item));
+    const matchingItem = commands.find((item) => command.includes(item));
     if (matchingItem) {
       let index = commands.indexOf(matchingItem); // get index of command in array
       let path = availableCommands[index].path; // get corresponding path in availableCommands array
@@ -574,18 +579,8 @@ function addVoiceControls() {
     else if (command.includes("exit") || command.includes("home"))
       navigateToPath("/");
     else if (command.includes("back")) moveUpNavigationLevel();
-  };
-
-  recognition.onspeechend = function () {
-    recognition.stop();
-
-    setTimeout(() => {
-      recognition.start();
-    }, "1000");
-  };
-
-  recognition.onnomatch = function (event) {
-    printLogMsg("I didn't recognise that command.");
+    else if (command.includes("next") || command.includes("down")) focusNextNavigationItem();
+    else if (command.includes("previous") || command.includes("up")) focusPreviousNavigationItem();
   };
 
   // updating voice command list