JavaScript Web Speech API: как мне получить значение? - PullRequest
0 голосов
/ 27 ноября 2018

Я сейчас изучаю распознавание речи (JavaScript).

Я хочу сделать помощника с JavaScript.Моя проблема в том, что все, что я говорю, я не могу использовать.И я хочу, чтобы функция ai () запускалась, когда я говорю Hello.

Мой код:

function tsCheck(){
    if (window.transcript == "Hi"){
        ai();
    }
}
function speak(a){
    var msg = new SpeechSynthesisUtterance(a);
    window.speechSynthesis.speak(msg);
}
function ai(){
    speak('How are you?');
    if (window.transcript == "good"){
        speak("cool");
    }

}

var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
var recognition = new SpeechRecognition();
recognition.continuous = true;

recognition.onresult = function(event) {
    var current = event.resultIndex;
    window.transcript = event.results[current][0].transcript;
    console.log(window.transcript);
}

recognition.start();

1 Ответ

0 голосов
/ 27 ноября 2018

Вы забыли вызвать функцию tsCheck() в вашем recognition.onresult обратном вызове.

recognition.onresult = function(event) {
    var current = event.resultIndex;
    window.transcript = event.results[current][0].transcript;
    tsCheck(); //ADD THIS
    console.log(window.transcript);
}

РЕДАКТИРОВАТЬ: в методе tsCheck необходимо сравнить результат со строчной строкой (уведомление)Привет "вместо" Привет ".

function tsCheck(){
    if (window.transcript == "hi"){
        ai();
    }
}

РЕДАКТИРОВАТЬ 2: Чтобы продолжать реагировать на входы, я добавил параметр в функцию ai(). Однако это не имеет никакого практического применения, потому чтоон не отслеживает контекст разговора.

function ai(string){
    speak(string);
}
function tsCheck(){
    if (/hi/i.test(window.transcript)){
        ai("How are you");
    }

    if (/good/i.test(window.transcript)){
        ai("Cool");
    }
}

Также используется регулярное выражение для проверки строк, так как иногда в нем есть пробелы до и после слова.

...