JavaScript Web Speech API: как мне получить значение?

В настоящее время я изучаю распознавание речи (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();

Не могли бы вы подробнее рассказать, в чем проблема?

Mav 27.11.2018 16:38

если я говорю "привет", то функция не запускается

user10513643 27.11.2018 16:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
196
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы забыли вызвать функцию 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");
    }
}

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

спасибо, а как за это ** говорите ('Как дела?'); **?

user10513643 27.11.2018 17:05

Другие вопросы по теме