В настоящее время я изучаю распознавание речи (JavaScript).
Я хочу сделать помощника на JavaScript. Моя проблема в том, что все, что я говорю, я не могу использовать. И я хочу, чтобы функция ai () запускалась, когда я говорю "Привет".
Мой код:
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.info(window.transcript);
}
recognition.start();
если я говорю "привет", то функция не запускается



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы забыли вызвать функцию tsCheck() в обратном вызове recognition.onresult.
recognition.onresult = function(event) {
var current = event.resultIndex;
window.transcript = event.results[current][0].transcript;
tsCheck(); //ADD THIS
console.info(window.transcript);
}
Обновлено: в методе tsCheck вам нужно сравнить результат со строкой в нижнем регистре (обратите внимание на «привет» вместо «привет».
function tsCheck(){
if (window.transcript == "hi"){
ai();
}
}
Обновлено еще раз: Чтобы продолжать реагировать на входные данные, я добавил параметр в функцию 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");
}
}
Также используется регулярное выражение для проверки строк, так как иногда перед словом и после него есть пробелы.
спасибо, а как за это ** говорите ('Как дела?'); **?
Не могли бы вы подробнее рассказать, в чем проблема?