JavaScript Web 语音 API : How can I need the value?

标签 javascript speech-recognition speech-to-text

我目前正在学习语音识别(JavaScript)。

我想用 JavaScript 做一个助手。我的问题是我所说的一切都不能使用。我希望当我说“Hello”时启动函数 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.log(window.transcript);
}

recognition.start();

最佳答案

您忘记在 recognition.onresult 回调中调用 tsCheck() 函数。

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

编辑:在tsCheck方法中,您需要将结果与小写字符串进行比较(注意“hi”而不是“Hi”。

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");
    }
}

还使用正则表达式来测试字符串,因为它有时在单词前后有空格。

关于JavaScript Web 语音 API : How can I need the value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503080/

相关文章:

javascript - 添加数组中对象的所有匹配值 (Javascript) (Angular)

javascript - 有没有 ide 给出 php 中的 js 函数列表?

javascript - 通过 JavaScript 提交表单

android - 找不到语音转文本识别器

Python if、elif、else链式替代

asynchronous - 语音识别引擎未关闭 - 无效操作异常

python - 如何使用 Azure Speech to Text 和 Python SDK 获取字级时间戳?

java - flac: "ERROR: input file has an ID3v2 tag"(它没有)

javascript - SlideDown() 不能与 jQuery 中的 After() 一起使用